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の大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント