はじめに

備忘録として、自分がよく使う&使ったaws-cliコマンドを書きます。
今回はCloudFormation編です。長めになりそうなので、一旦create-stackのみでわけました。

注意

スタック作成

①テンプレートがローカルにあるバージョン

aws cloudformation create-stack --stack-name スタック名 --template-body file://テンプレートのパス

②テンプレートがS3にあるバージョン

aws cloudformation create-stack --stack-name スタック名 --template-url テンプレートのURL

上記①、もしくは②に、いろいろオプション指定していきます。

IAMリソースが含まれる場合

--capabilities CAPABILITY_NAMED_IAM

マネコンから操作する時に、作成確認のチェックボックスみたいなのが出るかと思うのですが、そのチェックを入れるのと同等かと認識しております。
以下リソース作成時に出るそうです。

  • AWS::IAM::AccessKey
  • AWS::IAM::Group
  • AWS::IAM::InstanceProfile
  • AWS::IAM::Policy
  • AWS::IAM::Role
  • AWS::IAM::User
  • AWS::IAM::UserToGroupAddition

※custom nameを持たないIAMリソースは「CAPABILITY_IAM」でもよいそうです。

削除保護有効化

--enable-termination-protection

スタックにタグつける時

--tags Key=キー,Value=値

ちなみに個々リソースに同一Keyのタグが指定してあると、そっちが優先されます。
同一Keyタグ指定をしてないと、ここで指定した値が個々リソースにも付与されます。

パラメータをjsonで渡す時

--cli-input-json file://パス

そもそもパラメータを指定する時は別途オプションがあるのですが(後述)

  • より操作ミス発生の可能性を減らしたい
  • パラメータがいっぱいある

ということで、あらかじめjsonファイルを作り、それを渡す方式をとることになりました。
タグなどほかオプションも、この方式で指定することができます。

パラメータ指定

--parameters ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean,ResolvedValue=string ...

前述の通りパラメータ指定はjson渡してやってましたが、こんな感じのようです。

おわりに

CloudFormationの検証をしていたので、いちばん馴染み深いのがおそらくCloudFormationのコマンドかな〜と思い、これから書いてみました。
(Qiita投稿初めてなので、何か不手際があったらごめんなさい。)

TOP