■ はじめに
AWS CloudFormation について担当することになりそうで 後輩にGUIよりAWS CLIの方が作業しやすいですよって 教えてくれたので、メモ。感謝、、、
目次
【1】AWS CLI 1)aws cloudformation create-stack 2)aws cloudformation deploy 3)aws cloudformation delete-stack 4)aws cloudformation continue-update-rollback 【2】使用上の注意 1)IAM関連を作成する場合 2)create-stack/update-stackではなくdeployを使う方がよさげ 【3】サンプル 例1:スタック作成 例2:デプロイ 例3:スタック削除
【1】AWS CLI
* 以下を参照
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/index.html
補足:スタック (Stacks) とは?
https://dk521123.hatenablog.com/entry/2024/02/10/231900
より抜粋 ~~~~~~~ テンプレートによって作成されたAWSリソース群の単位 ~~~~~~~
1)aws cloudformation create-stack
* スタックの作成
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/create-stack.html
aws cloudformation create-stack \ --region us-west-2 \ --stack-name myteststack \ --template-body file:///home/testuser/mytemplate.json \ --parameters ParameterKey=Parm1,ParameterValue=test1 ParameterKey=Parm2,ParameterValue=test2
2)aws cloudformation deploy
* CloudFormationによるデプロイ => 新規も更新もこのコマンドで完結
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/deploy/index.html
--no-execute-changeset
* dry-run
コマンド例
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/using-cfn-cli-deploy.html
aws cloudformation deploy \ --region us-west-2 \ --template path_to_template/my-template.json \ --stack-name my-new-stack \ --parameter-overrides Key1=Value1 Key2=Value2
3)aws cloudformation delete-stack
* スタック削除
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/delete-stack.html
4)aws cloudformation continue-update-rollback
* UPDATE_ROLLBACK_FAILED 状態でロールバックを続けるように促す
* 以下の関連記事の 「【4】エラー「XXX is in UPDATE_ROLLBACK_FAILED state and can not be updated」が表示」 も参照
CloudFormation でのトラブル
https://dk521123.hatenablog.com/entry/2022/05/30/191507
【2】使用上の注意
1)IAM関連を作成する場合
* IAM関連を作成する場合には、 「 --capabilities CAPABILITY_NAMED_IAM/CAPABILITY_IAM」を指定する必要がある => 詳しくは以下の公式ドキュメントの記述参照。
より抜粋
CAPABILITY_IAM および CAPABILITY_NAMED_IAM
IAM リソースがある場合、どちらの機能でも指定できます。 カスタム名を持つ IAM リソースがある場合は、 CAPABILITY_NAMED_IAM を指定する必要があります。 このパラメータを指定しない場合、 このアクションは InsufficientCapabilities エラーを返します。
コマンド例
# For IAM aws cloudformation create-stack \ --region us-west-2 \ --stack-name my-iam-teststack \ --template-body file:///home/testuser/my-iam-template.json \ --parameters ParameterKey=Parm1,ParameterValue=test1 ParameterKey=Parm2,ParameterValue=test2 \ --capabilities CAPABILITY_NAMED_IAM # ★ここ★
2)create-stack/update-stackではなくdeployを使う方がよさげ
https://dev.classmethod.jp/articles/aws-all-iac/
より抜粋 ~~~~~~~~~~~~~~~~~ (推奨)deployの挙動 自分が推奨しているdeployの特徴を以下にあげます。 新規も更新もこのコマンドで完結 チェンジセット(後述)が必ず作成される validate-templateの実行とか流さなくてもdeployするだけでエラーは把握可能 コマンドが同期的に実行される→スタック作成完了時に結果が戻る ~~~~~~~~~~~~~~~~~
【3】サンプル
例1:スタック作成
aws cloudformation create-stack \ --region us-west-2 \ --stack-name demo-stack \ --template-body file:///demo-template.yml \ --parameters ParameterKey=Parm1,ParameterValue=test1 ParameterKey=Parm2,ParameterValue=test2
例2:デプロイ
#!/bin/bash -xe cat <<EOF > deploy-params.txt Env=dev Version=1.0.0 EOF aws cloudformation deploy \ --region us-west-2 \ --template demo-template.yml \ --stack-name demo-stack \ --parameter-overrides $(cat deploy-params.txt)
例3:スタック削除
aws cloudformation delete-stack \ --region us-west-2 \ --stack-name demo-stack
例4:UPDATE_ROLLBACK_FAILED 状態の解消
https://repost.aws/ja/knowledge-center/cloudformation-update-rollback-failed
aws cloudformation continue-update-rollback \ --region us-west-2 \ --stack-name awsstackname123 \ --resources-to-skip awsfaultyresource123
関連記事
CloudFormation ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2024/02/10/231900
CloudFormation ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2021/10/26/224812
CloudFormation ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2021/12/01/170326
CloudFormation ~ 開発環境 ~
https://dk521123.hatenablog.com/entry/2022/05/22/000000
CloudFormation ~ 組み込み関数 ~
https://dk521123.hatenablog.com/entry/2021/12/04/202519
CloudFormation ~ 条件分岐 ~
https://dk521123.hatenablog.com/entry/2022/07/02/214543
CloudFormation ~ 疑似パラメータ ~
https://dk521123.hatenablog.com/entry/2021/12/05/134313
CloudFormation ~ DeletionPolicy 属性 ~
https://dk521123.hatenablog.com/entry/2021/12/27/211328
CloudFormation ~ 認証情報の扱い ~
https://dk521123.hatenablog.com/entry/2021/12/28/224501
CloudFormation ~ S3 ~
https://dk521123.hatenablog.com/entry/2022/05/25/220037
CloudFormation ~ KMS ~
https://dk521123.hatenablog.com/entry/2022/05/26/112627
CloudFormation ~ IAM ~
https://dk521123.hatenablog.com/entry/2022/05/27/100820
CloudFormation ~ EC2 ~
https://dk521123.hatenablog.com/entry/2024/02/11/010935
CloudFormation で Github/CodePipeline/CodeBuild を構築する
https://dk521123.hatenablog.com/entry/2021/12/26/155956
CloudFormation でのトラブル
https://dk521123.hatenablog.com/entry/2022/05/30/191507
シェル ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2014/10/23/005406
シェル ~ Shebang ~
https://dk521123.hatenablog.com/entry/2024/02/02/000000