アクセプタ 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": "2008-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::Requester-Account-ID:root"
},
"Action": "sts:AssumeRole"
}
]
}
異なる AWS リージョンの VPC 間に VPC ピアリング接続を作成しているときに、PeerRegion プロパティが正しく渡されない場合
VPC が異なる AWS リージョンにある場合、PeerRegion を AWS CloudFormation テンプレートに含める必要があります。次に、アクセプタアカウント 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 ピアリング接続の作成と承諾