AWS::Serverless::Api(APIのIDを変更せずに再デプロイする方法)

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

view raw
gistfile1.txt
hosted with ❤ by GitHub

aws cloudformation packgeコマンドを実行します。

これでuuidのようなファイル名のファイルがアップロードされます。中身はswagger.yamlです。

AWS::Serverless::Api(APIのIDを変更せずに再デプロイする方法)

コマンドを実行した場所にout.ymlが作成されるので、このテンプレートファイルからaws cloudformation deployコマンドを実行します。

これで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

view raw
gistfile1.txt
hosted with ❤ by GitHub

API IDが変更されるケース

Resourcesで指定しているHelloWorldApi(論理ID)をスタック作成後に一旦変更してしまったりすると新しいAPI Gatewayが出来てしまうので、その場合はAPI IDが変更されてしまいます。

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

コメントをどうぞ

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

CAPTCHA