事象
- AWS SAM で API Gateway を
sam deploy
しても、設定がデプロイされない(デプロイ履歴にも表示されない)- GUI からみると設定自体は更新されているが、デプロイされていないため動作に反映されていない
changeset の違い
- 事象発生時は、以下のように
AWS::ApiGateway::Deployment
が changeset に出力されない
CloudFormation stack changeset
------------------------------------------------------------------------------------------------
Operation LogicalResourceId ResourceType
------------------------------------------------------------------------------------------------
* Modify TestApiGatewayStage AWS::ApiGateway::Stage
* Modify TestApiGateway AWS::ApiGateway::RestApi
------------------------------------------------------------------------------------------------
- 想定通りデプロイされるときは、
AWS::ApiGateway::Deployment
が changeset に出力される
CloudFormation stack changeset
------------------------------------------------------------------------------------------------
Operation LogicalResourceId ResourceType
------------------------------------------------------------------------------------------------
+ Add TestApiGateway AWS::ApiGateway::Deployment
* Modify TestApiGatewayStage AWS::ApiGateway::Stage
* Modify TestApiGateway AWS::ApiGateway::RestApi
- Delete TestApiGatewayDeployment AWS::ApiGateway::Deployment
------------------------------------------------------------------------------------------------
発生条件
- API 設定(Swagger / OpenAPI 定義等)に修正を加えず、リソースポリシーなど API Gateway 自体の設定だけ修正した場合に発生する
原因
- 「API 設定に変更が無いと API Gateway のデプロイを検知しない」という AWS SAM の制限(仕様)
- 「強制デプロイ」オプションの Issue が 2018 年頃に出ているが、2021 年時点でも未実装
回避策
- どちらも微妙な方法ですが、現状ではこのくらしかなさそうでした
-
sam deploy
後、GUI から手動でデプロイする - API 設定に何らかの変更を加える
-
- ダミーパラメータを作ることで回避できないか検討しましたが、無理でした
関連情報
- AWS SAM 公式 Issue
- API Gateway Stages Deployment only gets updated when Swagger is updated · Issue #479 · aws/serverless-application-model · GitHub
- AWS::Serverless::Api deployment resource is not generated on Sub'ed Ref change · Issue #914 · aws/serverless-application-model · GitHub
- Adding "FunctionName" to AWS::Serverless::Function does not trigger an API Gateway deployment · Issue #739 · aws/serverless-application-model · GitHub
- Api Gateway Deployment not updated when AutoPublishAlias is changed · Issue #1547 · aws/serverless-application-model · GitHub
- aws sam - SAM deploys are updating API Gateway Responses but not deploying to the stage - Stack Overflow