aws cloudformation packageコマンド

aws cloudformation packageコマンド

AWS SAMテンプレートを利用してローカルPCにあるzipファイルをS3にアップロードします。

ヘッダ

SAMテンプレートのヘッダは以下です。hogehogeは説明文ですので任意です。

AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::Serverless-2016-10-31
Description: hogehoge

view raw
gistfile1.txt
hosted with ❤ by GitHub

リソース

SAMテンプレートのリソースは5つあります。

タイプ デプロイ内容
AWS::Serverless::Function AWS Lambdaをデプロイ
AWS::Serverless::Api API Gatewayをデプロイ
AWS::Serverless::SimpleTable Amazon DynamoDBのテーブルをデプロイ
AWS::Serverless::LayerVersion Lambda Layerをデプロイ
AWS::Serverless::Application Serverless Application Repositoryに存在するアプリケーションをデプロイ

aws cloudformation packageコマンドを使ってローカルPCにあるファイルをS3にアップロードすることが出来ます。

SAMテンプレートを作成します。ここでは「sam.yml」とします。Lambdaデプロイまでしてみます。

AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::Serverless-2016-10-31
Description: setumei
Resources:
TestFunc:
Type: AWS::Serverless::Function
Properties:
CodeUri: ./src/index.zip
Handler: index.handler
Runtime: nodejs12.x

view raw
gistfile1.txt
hosted with ❤ by GitHub

aws cloudformation packageコマンドを下記の通り実行します。

コマンドを実行するとuuidのような32桁の乱数が表示されています。ここでは「13a2e4d76e98b3988e602631e143a8cf」です。このファイル(中身は同じ)が指定バケットに配置されます。

メッセージにあるように、次にaws cloudformation deployコマンドを実行すればLambdaデプロイが完了します。

output.ymlは以下のようになります。

AWSTemplateFormatVersion: 2010-09-09
Description: setumei
Resources:
TestFunc:
Properties:
CodeUri: s3://バケット名/13a2e4d76e98b3988e602631e143a8cf
Handler: index.handler
Runtime: nodejs12.x
Type: AWS::Serverless::Function
Transform: AWS::Serverless-2016-10-31

view raw
gistfile1.txt
hosted with ❤ by GitHub

自動生成されたこのファイルをテンプレートとしてaws cloudformation deployコマンドを実行します。

これでstacknameというスタックが作成され、Lambdaが作成されていることが確認できます。

packageしてからdeployすれば、毎回S3にアップロードしたzipファイルの内容でデプロイされるようになります。

--parameter-overrides

aws cloudformation packageコマンドに--parameter-overridesオプションはありません。

詳細はaws cloudformation package helpで確認することが出来ます。

aws cloudformation deployコマンドで--parameter-overridesオプションが使えるので、AWS SAMテンプレートに以下のようにParametersをつけると使えます。

AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::Serverless-2016-10-31
Description: This CloudFormation template to create Lambda function
Parameters:
Stage:
Description: Stage name
Type: String
Resources:
MyLambdaFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName:
!Join
– '-'
– – !Ref Stage
– 'getData'
CodeUri: ../zip/index.zip
Handler: index.handler
Runtime: nodejs12.x
MemorySize: 128
Timeout: 15

view raw
gistfile1.txt
hosted with ❤ by GitHub

!JoinでハイフンでStageとgetDataを連結しています。

上記ではLambda名はStage=devの場合、dev-getDataとなります。

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

コメントをどうぞ

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

CAPTCHA