AWS::Serverless::Api(APIのIDを変更せずに再デプロイする方法)
API GatewayをCloudFormationでデプロイする際に、api cloudformation packageコマンドを使用します。
その際、APIのIDを変更せずに再デプロイする方法です。
DefinitionUriでローカルのyaml(swagger)を指定します。
sam.yml
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::Serverless-2016-10-31
Description: Test
Resources:
HelloWorldApi:
Type: AWS::Serverless::Api
Properties:
StageName: dev
DefinitionUri: ./swagger.yaml
aws cloudformation packgeコマンドを実行します。
aws cloudformation package --template-file sam.yml --s3-bucket バケット名 --output-template-file out.yml
これでuuidのようなファイル名のファイルがアップロードされます。中身はswagger.yamlです。
コマンドを実行した場所にout.ymlが作成されるので、このテンプレートファイルからaws cloudformation deployコマンドを実行します。
aws cloudformation deploy --template-file ./out.yml --stack-name stackname
これでstacknameというスタックが作成されます。これでAPI Gatewayのデプロイが完了です。
packageしてからdeployすることで、再度デプロイしてもapiのidが変更されることはありません。
エンドポイントはデフォルトはEdge
エンドポイントを指定しない場合はEdgeとなります。指定する場合は以下があります。
| エンドポイントタイプ |
|---|
| EDGE |
| PRIVATE |
| REGIONAL |
指定方法は以下の通りです。
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::Serverless-2016-10-31
Description: Test
Resources:
HelloWorldApi:
Type: AWS::Serverless::Api
Properties:
StageName: dev
DefinitionUri: ./swagger.yaml
EndpointConfiguration: REGIONAL
OpenApiVersion: 3.0.1
API IDが変更されるケース
Resourcesで指定しているHelloWorldApi(論理ID)をスタック作成後に一旦変更してしまったりすると新しいAPI Gatewayが出来てしまうので、その場合はAPI IDが変更されてしまいます。

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^


コメント