質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

283閲覧

Cloud Formation Fn::Subの使い方

dbfreak

総合スコア20

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2023/06/01 10:13

実現したいこと

Cloud formationテンプレート(正確にはSAMテンプレート)でのFn::Subについて教えてください。
以下のテンプレート(正常デプロイ確認済み)のOutputセクション4行目

Fn::Sub: https://${ServerlessRestApi}.execute-api・・・省略

のServerlessRestApiがどうして置換できるのか分かりません。
リファレンスを調べたのですが疑似パラメータでもないし、パラメータセクションに定義もしてないです。
予約語なのかなとも思うのですが、であるならリファレンスの該当箇所が知りたいです。
ご存じの方ご教示お願いいたします。

前提

省略

発生している問題・エラーメッセージ

省略

該当のソースコード

template.yaml

1AWSTemplateFormatVersion: '2010-09-09' 2Transform: AWS::Serverless-2016-10-31 3Description: 'local-deploy-sample1 4 5 Sample SAM Template for local-deploy-sample1 6 7 ' 8Globals: 9 Function: 10 Timeout: 3 11 MemorySize: 128 12 Tracing: Active 13 Api: 14 TracingEnabled: true 15Resources: 16 HelloWorldFunction: 17 Type: AWS::Serverless::Function 18 Properties: 19 CodeUri: HelloWorldFunction 20 Handler: app.lambda_handler 21 Runtime: python3.10 22 Architectures: 23 - x86_64 24 Events: 25 HelloWorld: 26 Type: Api 27 Properties: 28 Path: /hello 29 Method: get 30 Metadata: 31 SamResourceId: HelloWorldFunction 32 ApplicationResourceGroup: 33 Type: AWS::ResourceGroups::Group 34 Properties: 35 Name: 36 Fn::Sub: ApplicationInsights-SAM-${AWS::StackName} 37 ResourceQuery: 38 Type: CLOUDFORMATION_STACK_1_0 39 ApplicationInsightsMonitoring: 40 Type: AWS::ApplicationInsights::Application 41 Properties: 42 ResourceGroupName: 43 Ref: ApplicationResourceGroup 44 AutoConfigurationEnabled: 'true' 45Outputs: 46 HelloWorldApi: 47 Description: API Gateway endpoint URL for Prod stage for Hello World function 48 Value: 49 Fn::Sub: https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/hello/ 50 HelloWorldFunction: 51 Description: Hello World Lambda Function ARN 52 Value: 53 Fn::GetAtt: 54 - HelloWorldFunction 55 - Arn 56 HelloWorldFunctionIamRole: 57 Description: Implicit IAM Role created for Hello World function 58 Value: 59 Fn::GetAtt: 60 - HelloWorldFunctionRole 61 - Arn

試したこと

リファレンスを調べました
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-sub.html

補足情報(FW/ツールのバージョンなど)

省略

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

GitHub上のSAMのREADMEに記載があります。

あんまりSAMを使ったことがないのでざっくりした理解ですが、この記述だと暗黙的(implicit)にAPI Gatewayを作成するため、その暗黙的に作成されたAPI GatewayのIDを取得するための論理IDのようです。

このあたりはGitHubのIssueでもわかりづらいことが議論になっているようです…。

投稿2023/06/05 02:52

編集2023/06/12 14:38
yu_1985

総合スコア7447

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ご回答ありがとうございます。

docs/internals/generated_resources.rst

こちらのドキュメントに書かれていたのですね。探せませんでした。。
改めてgithubの検索窓で検索してもHitせず、こんなのどうやって見つければ良いのやらです。

追記

Only the default branch is indexed for code search.* Only files smaller than 5 MB are searchable.

githubリファレンス

どうやらgithubの検索では、defaultのブランチ(serverless-application-modelリボジトリではdevlopブランチ)だけが検索範囲になるようです。
ご教示いただいたドキュメントはmasterブランチには該当ファイルが存在しましたが、developブランチには存在しなかったので検索にヒットしなかった模様です。
だからどうしたという話ですが、なぜ見つけられなかったのかくやしかったので自己満足の追記です。

いずれにせよスッキリしました、ご回答本当にありがとうございました。

投稿2023/06/12 13:31

dbfreak

総合スコア20

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問