AWSクロスアカウントのVPC Peering設定で、AssumeRole出来ずにハマった話
CloudFormationを利用して、クロスアカウントでVPC Peering接続設定(AWS::EC2::VPCPeeringConnection)を追加しようとしたところ、 以下のエラーメッセージでAssumeRole出来ずにハマった。
API: ec2:AcceptVpcPeeringConnection User: arn:aws:iam::[requester account ID]:user/[IAM User] is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::[accepter account ID]:role/[IAM Role]
CloudFormationを利用しているrequester側のIAM Userに、sts:AssumeRoleの権限がなかったことが原因だった。
sts:AssumeRole
ポリシーを付与したIAM Groupを作成して、IAM Userを所属させることで解決した。
Parameters: PeerRoleArn: Type: String Default: 'arn:aws:iam::[accepter account ID]:role/[IAM Role]' Resources: VpcPeeringSettingsGroup: Type: AWS::IAM::Group Properties: GroupName: VPC-Peering-Settings Path: / Policies: - PolicyName: !Sub VPC-Peering-${EnvTag} PolicyDocument: Version: 2012-10-17 Statement: - Action: 'sts:AssumeRole' Effect: Allow Resource: !Ref PeerRoleArn
設定時、参考にしたのはこちら。