CloudFormation の「VpcPeeringConnection が安定化できませんでした」というエラーを解決する方法を教えてください。

所要時間2分
0

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 ピアリング接続を作成する

AWS公式
AWS公式更新しました 5ヶ月前
コメントはありません

関連するコンテンツ