アクセプタ VPC とリクエスタ VPC の間に Amazon Virtual Private Cloud (Amazon VPC) ピアリング接続を作成しようとすると、AWS CloudFormation で「VpcPeeringConnection が安定化できませんでした」というエラーが表示されます。
簡単な説明
このエラーが表示される理由は次のとおりです。
- AWS::EC2::VPCPeeringConnection リソースはアクセプタアカウントで作成さた。
- IPv4 CIDR の範囲が重複している。
- 異なるアカウントの VPC 間の VPC ピアリング接続を作成すると、[PeerRoleArn] プロパティが正しく渡されない。
- アクセプタアカウントの AWS Identity and Access Management (IAM) ロールに適切な権限がない。
- 異なる AWS リージョンの VPC 間の VPC ピアリング接続を作成しているときに、[PeerRegion] プロパティが正しく渡されない。
解決策
AWS::EC2::VPCPeeringConnection リソースがアクセプタアカウントで作成さた場合
AWS CloudFormation スタックは、アクセプタアカウントではなく、リクエスタアカウントの [AWS::EC2::VPCPeeringConnection] リソースを使用して作成します。
IPv4 CIDR 範囲が重複している場合
アクセプターアカウントとリクエスターアカウントの VPC には異なる IPv4 CIDR ブロックを使用してください。
異なるアカウントの VPC 間の VPC ピアリング接続を作成するときに PeerRolearn プロパティが正しく渡されない場合
異なるアカウントの VPC 間の VPC ピアリング接続を作成する場合は、PeerRoleArn プロパティを使用して、AWS 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 ロールに適切な権限がない場合
IAM ロールがアクセプタアカウントの VPC ピアリング接続を受け入れることを許可するには、以下の権限を含めてください。
{
"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"
}
]
}
異なる AWS リージョンの VPC 間の VPC ピアリング接続を作成するときに PeerRegion プロパティが正しく渡されない場合
VPC が異なる AWS リージョンにある場合は、AWS CloudFormation テンプレートに [PeerRegion] を含める必要があります。次に、アクセプタアカウント VPC が配置されている AWS リージョンを指定します。以下の 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 アカウントの Amazon VPC とピアリングする
VPC ピアリング接続を作成する