如何解決 AWS CloudFormation 中的「VpcPeeringConnection 無法穩定」錯誤?

2 分的閱讀內容
0

當我嘗試在接受者 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::EC2::VPCPeeringConnection 資源在請求者帳戶中建立您的 AWS CloudFormation 堆疊,而不是接受者帳戶。

如果 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 對等互連

AWS 官方
AWS 官方已更新 3 年前