学習帳

Windows,Linux,Mac,AWS,VMware,ネットワークなどの検証

CloudFormation package / validate-template / deploy

これはなに?

AWS CloudFormationワークショップのパッケージ化とデプロイを学習したのでメモ。

AWS CloudFormationでつかえる便利なコマンド3つ

aws cloudformation package

LambdaコードなどをS3にアップロードし、その保存先をCloudFormationテンプレート内に書いてくれる機能

PythonFunction:
  Type: AWS::Lambda::Function
  Properties:
(略)
    Code: lambda/ # 現ディレクトリ内の、Lambdaが格納されたディレクトリを記載

aws cloudformation packageコマンドを実行する

$ aws cloudformation package \
--template-file infrastructure.template \
--s3-bucket example-bucket-name \
--s3-prefix cfn-workshop-package-deploy \
--output-template-file infrastructure-packaged.template

Code: に書かれたディレクトリをZIPで圧縮し、S3へ保存、保存先をCode:のところに記載してくれる

aws cloudformation validate-template

CloudFormationテンプレートの検証を行うコマンド。
cfn-lintでテンプレートの構文チェックはしてくれるが、それとどう違うのだろう?

$ aws cloudformation validate-template \
--template-body file://infrastructure-packaged.template

(結果)
{
    "Parameters": [],
    "Description": "AWS CloudFormation workshop - Package and deploy.",
    "Capabilities": [
        "CAPABILITY_IAM"
    ],
    "CapabilitiesReason": "The following resource(s) require capabilities: [AWS::IAM::Role]"

aws cloudformation deploy

AWSのWebコンソールからデプロイしていたCloudFormationテンプレートですが、aws cliからデプロイすることもできます。

$ aws cloudformation deploy \
--template-file infrastructure-packaged.template \
--stack-name cfn-workshop-package-deploy-lambda \
--region ap-northeast-1 \
--capabilities CAPABILITY_IAM

※--capabilities CAPABILITY_IAM
IAMにリソースを作成するなどの可能性があることを認識していることを示すため、つける引数。
AWSのWebコンソールでCloudFormationテンプレートをデプロイするときにも聞かれ、チェックを入れているが、それを引数で指定している。