- 新しい順
- 投票が多い順
- コメントが多い順
以下のissueにあるようにAWS SAMのバグのようです。
「OpenApiVersion: 3.0.2」をAWS::Serverless::Apiで指定すればStageは作成されなくなります。
https://github.com/aws/serverless-application-model/issues/191
以下のドキュメントにも記載されていました。
https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/sam-resource-api.html#sam-api-openapiversion
AWS SAM は、Stageデフォルトで というステージを作成します。このプロパティに有効な値を設定すると、ステージ Stage が作成されなくなります。
私の環境で試してみましたが確かに作成されなくなることを確認しました。
ただし、StageNameはdevにならずProdになるためどこかしらがおかしいような気がしています。
代替案にはなるのですが、以下のように環境ごとにsamconfig.tomlを分割してAPI Gatewayを分けてみるのはいかがでしょうか?
version=0.1
[development.deploy.parameters]
stack_name = "dev-api-stack"
resolve_s3 = true
s3_prefix = "dev-api-stack"
region = "ap-northeast-1"
confirm_changeset = true
capabilities = "CAPABILITY_IAM"
disable_rollback = true
parameter_overrides = [
"Stage=dev"
]
image_repositories = []
[production.deploy.parameters]
stack_name = "prod-api-stack"
resolve_s3 = true
s3_prefix = "prod-api-stack"
region = "ap-northeast-1"
confirm_changeset = true
capabilities = "CAPABILITY_IAM"
disable_rollback = true
parameter_overrides = [
"Stage=prod"
]
image_repositories = []
LambdaはjavascriptではなくPythonですが、基本的には同じような動きになるはずです。
コードなどは以下のブログを参考にしました。
https://qiita.com/fkooo/items/e08cdea0f73f60dabd3d
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Globals:
Api:
OpenApiVersion: 3.0.2
Parameters:
Stage:
Type: String
Default: dev
Resources:
ServerlessRestApi:
Type: AWS::Serverless::Api
Properties:
OpenApiVersion: 3.0.2
StageName: !Ref Stage
Name: !Sub "${Stage}-Api"
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: hello_world/
Handler: app.lambda_handler
Runtime: python3.9
Architectures:
- x86_64
Events:
HelloWorld:
Type: Api
Properties:
Path: /hello
Method: get
RestApiId: !Ref ServerlessRestApi
Outputs:
CsrfTokenApiUrl:
Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/${Stage}/hello"
デプロイはCloudShellで行いました。
sam build
sam deploy --config-env development
ご回答有難うございます! 再現いただき事象の確認と、参考情報ありがとうございます
私の記法や知識不足が原因と考え、バグの線はまったく考慮しておらなかったので解決の糸口となりました。 後程試してみます
関連するコンテンツ
- AWS公式更新しました 2年前
- AWS公式更新しました 3年前