はじめに
今回はテスト用にAdmin権限を持ったIAMグループとIAMユーザーのCFNテンプレートを、動作検証がてらAmazonQに書かせてみました。
AmazonQで書かせたものをAWS公式の構文とVScode拡張機能のcfn-lintで訂正しながらやりました。
AmazonQについて
- AWS版のChatGPTみたいなもの
- VScodeの拡張機能でAmazonQが利用可能
作成したいリソース
- IAMグループ
- Admin権限を持ったIAMユーザー
→IAMグループにAdmin権限を付与
使い方
修正した点
cfn-lintとテンプレート検証で確認したところ、依存循環のエラーが発生した。
Circular dependency between resources: [AdminGroup, AdminUser]
IAMグループとIAMユーザーの両方向で!Ref組込関数を使用していたことが原因で、結局参照先をうまく指定してくれなかった。
完成したテンプレート
AWSTemplateFormatVersion: 2010-09-09
Description: Admin User
Parameters:
AdminUserGroup:
Type: String
Default: AdminGroup
Description: AdminUserGroupName
AdminUserName:
Type: String
Default: AdminUser
Description: AdminUserName
Password:
Type: String
Default: Passwordxxx
Description: Passwordxxx
NoEcho: true
Resources:
AdminGroup:
Type: AWS::IAM::Group
Properties:
GroupName: AdminGroup
ManagedPolicyArns:
- arn:aws:iam::aws:policy/AdministratorAccess
AdminUser:
Type: AWS::IAM::User
Properties:
Groups:
- !Ref AdminGroup
UserName: AdminUserName
LoginProfile:
Password: Passwordxxx
PasswordResetRequired: true
Outputs:
UserName:
Description: UserName
Value: !Join [",",[Ref AdminUserName]]
LoginURL:
Description: LoginURL
Value: !Join [",",[https://, !Ref AWS::AccountId, .signin.aws.amazon.com/console]]
確認
参考文献
AWS Identity and Access Management resource type reference
Amazon Qを使用してAWS CloudFormationのテンプレートを作成してみた
最後に
慣れていない人からすると手書きよりも早い。
VScodeの拡張機能で使えるのでlinterとの併用が可能。間違いがすぐわかる。
細かい指示を伝達させるのが難しいので、構文の大まかな部分は任せて各要件は手動で入れていくのが良さそう。サポートとして考えるならgood。