Amazon Virtual Private Cloud (Amazon VPC) ピアリング接続を作成しようとすると、AWS CloudFormation で「VpcPeeringConnection が安定化できませんでした」というエラーが表示されます。
簡単な説明
次の原因により「VpcPeeringConnection が安定化できませんでした」というエラーが表示されることがあります。
- AWS::EC2::VPCPeeringConnection リソースがアクセプタアカウントで作成された。
- IPv4 CIDR の範囲が重複している。
- 異なるアカウントの VPC 間の VPC ピアリング接続を作成するときに PeerRoleArn プロパティが正しく渡されない。
- アクセプタアカウントの AWS Identity and Access Management (IAM) ロールに適切な権限がない。
- 異なる AWS リージョンの VPC 間の VPC ピアリング接続を作成するときに PeerRegion プロパティが正しく渡されない。
解決方法
AWS::EC2::VPCPeeringConnection リソースがアクセプタアカウントで作成された
CloudFormation スタックは、アクセプタアカウントではなく、リクエスタアカウントの AWS::EC2::VPCPeeringConnection リソースで作成します。
IPv4 CIDR の範囲が重複している
アクセプタアカウントとリクエスタアカウントとで、VPC に使用する IPv4 CIDR ブロックを別にします。
異なるアカウントの VPC 間の VPC ピアリング接続を作成するときに PeerRoleArn プロパティが正しく渡されない
異なるアカウントの VPC 間の VPC ピアリング接続を作成する場合は、PeerRoleArn プロパティを使用します。このプロパティで、CloudFormation テンプレートのアクセプタアカウントからクロスアカウント IAM ロールを渡します。詳細については、AWS::EC2::VPCPeeringConnectionを参照してください。
JSON と YAML は次の例を参照してください。
JSON:
{
"myVPCPeeringConnection": {
"Type": "AWS::EC2::VPCPeeringConnection",
"Properties": {
......
"PeerRoleArn": "arn:aws:iam::Accepter-Account-ID:role/PeerRole"
}
}
}
YAML:
myVPCPeeringConnection:
Type: 'AWS::EC2::VPCPeeringConnection'
Properties:
.......
PeerRoleArn: 'arn:aws:iam::Accepter-Account-ID:role/PeerRole'
アクセプタアカウントの IAM ロールに適切な権限がない
アクセプタアカウントの VPC ピアリング接続を受け付けることを IAM ロールに許可するには、次の権限を含めます。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "ec2:AcceptVpcPeeringConnection",
"Resource": "arn:${Partition}:ec2:${Region}:${Account}:vpc-peering-connection/${VpcPeeringConnectionId}",
"Effect": "Allow"
}
]
}
リクエスタアカウントが IAM ロールを受け入れるようにするには、IAM ロールの信頼関係を設定します。たとえば、次のようにします。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::Requester-Account-ID:root"
},
"Action": "sts:AssumeRole"
}
]
}
異なるリージョンの VPC 間の VPC ピアリング接続を作成するときに PeerRegion プロパティが正しく渡されない
VPC が配置されているリージョンが異なる場合は、PeerRegion を CloudFormation テンプレートに含める必要があります。続いて、アクセプタアカウント VPC が配置されているリージョンを指定します。
JSON と YAML は次の例を参照してください。
JSON:
{
"myVPCPeeringConnection": {
"Type": "AWS::EC2::VPCPeeringConnection",
"Properties": {
......
"PeerRegion": "Accepter-VPC-Region-Code"
}
}
}
YAML:
myVPCPeeringConnection:
Type: 'AWS::EC2::VPCPeeringConnection'
Properties:
......
PeerRegion: Accepter-VPC-Region-Code
関連情報
チュートリアル: 別の AWS アカウントの VPC とピアリングする
VPC ピアリング接続を作成する