AWS CDKでCloudFormation StackSetsで展開するIAM Roleを作る

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を利用した方が良いですね。