如何解決 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 資源是在接受者帳戶中建立

使用 AWS::EC2::VPCPeeringConnection 資源在請求者帳戶中建立您的 CloudFormation 堆疊,而不是接受者帳戶。

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 角色沒有正確權限

若要允許 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"
    }
  ]
}

在不同區域的 VPC 之間建立 VPC 對等互連時,PeerRegion 屬性未正確傳遞

如果 VPC 位於不同區域,您必須在 CloudFormation 範本中包含 PeerRegion。然後,指定接受者帳戶 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 官方已更新 7 個月前