AWS::Serverless::Api(複数のステージにデプロイする方法)

AWS::Serverless::Api(複数のステージにデプロイする方法)

API GatewayをCloudFormationでデプロイする際に、api cloudformation packageコマンドを使用します。

SAMテンプレートのStageNameはString型なので複数ステージを指定することはできません。

AWS::ApiGateway::Stage

SAMテンプレートにAWS::ApiGateway::Stageを書くと複数ステージにAPIをデプロイすることが出来ます。

sam.yml

AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::Serverless-2016-10-31
Description: Test
Resources:
RestApi:
Type: AWS::Serverless::Api
Properties:
StageName: dev
DefinitionUri: ./swagger.yaml
OpenApiVersion: 3.0.1
ProdStage:
Type: AWS::ApiGateway::Stage
Properties:
StageName: prod
RestApiId: !Ref RestApi
DeploymentId: !Ref ApiDeploy
ApiDeploy:
Type: 'AWS::ApiGateway::Deployment'
Properties:
RestApiId: !Ref RestApi

view raw
gistfile1.txt
hosted with ❤ by GitHub

DeploymentIdはステージ作成時に必須なので、AWS::ApiGateway::Deploymentも記述する必要があります。

AWS::Serverless::Apiでdevを作成してデプロイ、AWS::ApiGateway::Stageでprodというステージを作成、AWS::ApiGateway::Deploymentでprodに./swagger.yamlをデプロイしています。

これで、同じAPIをdev,prodにデプロイすることができます。

但し、以下issueにあるとおり、1スタック1デプロイ環境という構成にするのが良いと思われます。

https://github.com/awslabs/serverless-application-model/issues/198

スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA