QiitaやYouTubeでAWS操作を共有するときに、ユーザー情報を隠すのが面倒くさい・・
じゃあIAMユーザーを使い捨てにしよう!っということでIAMユーザー作成を自動化します。
jsonファイル作成
まず、IAMユーザー作成のjsonファイルを作ります。
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Template for creating Initial IAM",
"Resources": {
"IAMUserInitialAdmin": {
"Type": "AWS::IAM::User",
"DeletionPolicy": "Retain",
"Properties":{
"UserName": {"Fn::Join" : [
"",
["demo-iniadmin-user-",{"Ref": "AWS::AccountId"}]
]},
"LoginProfile": {
"Password": "pass",
"PasswordResetRequired": true
},
"ManagedPolicyArns": [
"arn:aws:iam::aws:policy/AdministratorAccess"
]
}
}
},
"Outputs": {
"UserName": {
"Description": "Information about User name",
"Value": { "Ref" : "IAMUserInitialAdmin" }
},
"LoginURL": {
"Description": "Information about console login URL",
"Value": {"Fn::Join" : [
"",
["https://",{"Ref": "AWS::AccountId"},".signin.aws.amazon.com/console"]
]}
}
}
}
CloudFormationで実行
CloudFormationではスタック作成が実行みたいな感じなので、先程のjsonファイルを使ってスタック作成(実行)します。
今回はテンプレートファイルを直接アップロードします。
スタック名を入力して次へ。
オプション設定は特なし。
レビュー画面で確認して問題なければ、最後の青い枠にチェックを入れてスタック作成。
ステータスが作成中になる。
しばらくすると完了する。
IAMユーザーが作成されていることを確認!
実行に失敗したとき
ロールバックと表示される。
イベントタブでエラーメッセージが確認できる。今回はパスワードルールに引っかかりました^^;
失敗すると、再度スタックの作り直しになる・・
※注意点
失敗するとロールバックと出るので、作成されていないと思ったのですが、IAMユーザーが作られていました。
その状態で実行すると、xxxxx(残されたままのリソース) is already exists.
というエラーがまた出て、またやり直しになります。
ですので、一旦リソースを確認し削除する必要がありますね。
終わりに
初めてCloudFormationを使ってみましたが、CloudFormationだけで完全自動化はちょっと難しそう。(ソース修正する度にスタック作成しなかんし)
参考記事でもLambdaとか組み合わせていたので、Lambdaやaws cliとのコンボで威力を発揮できるサービスな気がします!
参考
https://qiita.com/toshikitsubouchi/items/acd1954793e36296bdae
https://dev.classmethod.jp/articles/aws-cloudformation-initaial-iam/
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html
https://tech.nri-net.com/entry/cloudformation_pattern