AWS Organizationsで管理している組織に展開するCloudFormation StackSetsのテンプレートを生成するCDKのコードを載せておきます。 今回は例なので、AdministratorAccessというかなり強い権限がついているので、実際には別のマネージドポリシーや自前のポリシーを展開することが多いですね。
import * as cdk from '@aws-cdk/core'; import * as iam from '@aws-cdk/aws-iam'; export class AccountOwnerAccessRoleStack extends cdk.Stack { constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // AccountOwnerAccessRole const ownerRole = new iam.Role(this, 'AccountOwnerAccessRole', { roleName: 'AccountOwnerAccessRole', assumedBy: new iam.AccountPrincipal('XXXX'), managedPolicies: [ iam.ManagedPolicy.fromAwsManagedPolicyName('AdministratorAccess') ], }); } }
これを書いた後に、cdk synth
を実行して出力された結果を何らかの方法で登録・更新すればOK。
Organizationsに対して一括適用したい場合は、Terraformを利用するよりかは、CloudFormation StackSetsを利用した方が良いですね。