Sbircia con un VPC in un altro Account AWS - AWS CloudFormation

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Sbircia con un VPC in un altro Account AWS

Puoi effettuare il peering con un Virtual Private Cloud (VPC) in un altro Account AWS utilizzando. AWS::EC2::VPCPeeringConnection In questo modo si crea una connessione di rete tra due di essi VPCs che consente di instradare il traffico tra di loro in modo che possano comunicare come se fossero all'interno della stessa rete. Una connessione VPC peering può contribuire a facilitare l'accesso e il trasferimento dei dati.

Per stabilire una connessione VPC peering, è necessario autorizzarne due distinte Account AWS all'interno di un unico stack. CloudFormation

Per ulteriori informazioni sul VPC peering e sui suoi limiti, consulta la Amazon VPC Peering Guide.

Prerequisiti

  1. Per la connessione peering sono necessari un peer VPC ID, un peer Account AWS ID e un ruolo di accesso tra account diversi.

    Nota

    Questa procedura guidata si riferisce a due account: un account che consente il peering tra più account (l'account dell'accettante) e un account che richiede la connessione in peering (l'account del richiedente).

  2. Per accettare la connessione VPC peering, il ruolo di accesso tra account diversi deve essere assunto dall'utente. La risorsa si comporta allo stesso modo di una risorsa di connessione VPC peering nello stesso account. Per informazioni su come un IAM amministratore concede le autorizzazioni per assumere il ruolo tra account diversi, consulta la Guida per l'utente sulla concessione delle autorizzazioni per cambiare ruolo. IAM

Fase 1: Creare un ruolo e un ruolo tra account VPC

Creare un ruolo VPC e un ruolo di accesso su più account (esempio)

In questo passaggio, creerai il ruolo VPC and nell'account accettatore.

  1. Nel AWS Management Console, scegli AWS CloudFormation.

  2. Seleziona Crea stack.

  3. Sono disponibili diverse opzioni. Per utilizzare AWS CloudFormation Designer per creare un nuovo modello vuoto, scegliete Crea modello in Designer.

    Se stai creando il modello in un altro editor di testo, scegli Il modello è pronto, quindi Amazon S3 URL o Carica un file modello, a seconda dei casi.

  4. Utilizza il seguente modello di esempio per creare il ruolo VPC e il ruolo interaccount che consente a un altro account di eseguire il peering.

    Esempio JSON
    { "AWSTemplateFormatVersion": "2010-09-09", "Description": "Create a VPC and an assumable role for cross account VPC peering.", "Parameters": { "PeerRequesterAccountId": { "Type": "String" } }, "Resources": { "vpc": { "Type": "AWS::EC2::VPC", "Properties": { "CidrBlock": "10.1.0.0/16", "EnableDnsSupport": false, "EnableDnsHostnames": false, "InstanceTenancy": "default" } }, "peerRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Principal": { "AWS": { "Ref": "PeerRequesterAccountId" } }, "Action": [ "sts:AssumeRole" ], "Effect": "Allow" } ] }, "Path": "/", "Policies": [ { "PolicyName": "root", "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:AcceptVpcPeeringConnection", "Resource": "*" } ] } } ] } } }, "Outputs": { "VPCId": { "Value": { "Ref": "vpc" } }, "RoleARN": { "Value": { "Fn::GetAtt": [ "peerRole", "Arn" ] } } } }
    Esempio YAML
    AWSTemplateFormatVersion: 2010-09-09 Description: Create a VPC and an assumable role for cross account VPC peering. Parameters: PeerRequesterAccountId: Type: String Resources: vpc: Type: 'AWS::EC2::VPC' Properties: CidrBlock: 10.1.0.0/16 EnableDnsSupport: false EnableDnsHostnames: false InstanceTenancy: default peerRole: Type: 'AWS::IAM::Role' Properties: AssumeRolePolicyDocument: Statement: - Principal: AWS: !Ref PeerRequesterAccountId Action: - 'sts:AssumeRole' Effect: Allow Path: / Policies: - PolicyName: root PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: 'ec2:AcceptVpcPeeringConnection' Resource: '*' Outputs: VPCId: Value: !Ref vpc RoleARN: Value: !GetAtt - peerRole - Arn
  5. Seleziona Successivo.

  6. Assegna un nome allo stack (ad esempio,VPC-owner), quindi inserisci l' Account AWS ID dell'account richiedente nel campo. PeerRequesterAccountId

  7. Accettare i valori predefiniti, quindi selezionare Next (Avanti).

  8. Scegli Riconosco che AWS CloudFormation potrebbe creare IAM risorse, quindi scegli Crea stack.

Fase 2: creazione di un modello che include AWS::EC2::VPCPeeringConnection

Ora che hai creato il ruolo «VPCe interaccount», puoi effettuare il peer con loro VPC utilizzando un altro Account AWS (l'account richiedente).

Per creare un modello che includa la VPCPeeringConnection risorsa AWS:::EC2: (esempio)

  1. Torna alla home page della AWS CloudFormation console.

  2. Seleziona Crea stack.

  3. Scegliete Crea modello in Designer per utilizzare AWS CloudFormation Designer per creare un nuovo modello vuoto.

    Se stai creando il modello in un altro editor di testo, scegli Il modello è pronto, quindi Amazon S3 URL o Carica un file modello, a seconda dei casi.

  4. Usa il seguente modello di esempio per creare una connessione VPC e una connessione VPC peering utilizzando il ruolo peer che hai creato nella Fase 1.

    Esempio JSON
    { "AWSTemplateFormatVersion": "2010-09-09", "Description": "Create a VPC and a VPC Peering connection using the PeerRole to accept.", "Parameters": { "PeerVPCAccountId": { "Type": "String" }, "PeerVPCId": { "Type": "String" }, "PeerRoleArn": { "Type": "String" } }, "Resources": { "vpc": { "Type": "AWS::EC2::VPC", "Properties": { "CidrBlock": "10.2.0.0/16", "EnableDnsSupport": false, "EnableDnsHostnames": false, "InstanceTenancy": "default" } }, "vpcPeeringConnection": { "Type": "AWS::EC2::VPCPeeringConnection", "Properties": { "VpcId": { "Ref": "vpc" }, "PeerVpcId": { "Ref": "PeerVPCId" }, "PeerOwnerId": { "Ref": "PeerVPCAccountId" }, "PeerRoleArn": { "Ref": "PeerRoleArn" } } } }, "Outputs": { "VPCId": { "Value": { "Ref": "vpc" } }, "VPCPeeringConnectionId": { "Value": { "Ref": "vpcPeeringConnection" } } } }
    Esempio YAML
    AWSTemplateFormatVersion: 2010-09-09 Description: Create a VPC and a VPC Peering connection using the PeerRole to accept. Parameters: PeerVPCAccountId: Type: String PeerVPCId: Type: String PeerRoleArn: Type: String Resources: vpc: Type: 'AWS::EC2::VPC' Properties: CidrBlock: 10.2.0.0/16 EnableDnsSupport: false EnableDnsHostnames: false InstanceTenancy: default vpcPeeringConnection: Type: 'AWS::EC2::VPCPeeringConnection' Properties: VpcId: !Ref vpc PeerVpcId: !Ref PeerVPCId PeerOwnerId: !Ref PeerVPCAccountId PeerRoleArn: !Ref PeerRoleArn Outputs: VPCId: Value: !Ref vpc VPCPeeringConnectionId: Value: !Ref vpcPeeringConnection
  5. Seleziona Successivo.

  6. Assegnare un nome allo stack (ad esempio, VPC-peering-connection).

  7. Accettare i valori predefiniti, quindi selezionare Next (Avanti).

  8. Scegli Riconosco che AWS CloudFormation potrebbe creare IAM risorse, quindi scegli Crea stack.

Creazione di un modello con una policy altamente restrittiva

Potresti voler creare una politica altamente restrittiva per scambiare le tue VPC conoscenze con un'altra persona. Account AWS

Il modello di esempio seguente mostra come modificare il modello VPC peer owner (l'account accettante creato nella fase 1 precedente) in modo che sia più restrittivo.

Esempio JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "Create a VPC and an assumable role for cross account VPC peering.", "Parameters": { "PeerRequesterAccountId": { "Type": "String" } }, "Resources": { "peerRole": { "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Action": [ "sts:AssumeRole" ], "Effect": "Allow", "Principal": { "AWS": { "Ref": "PeerRequesterAccountId" } } } ] }, "Path": "/", "Policies": [ { "PolicyDocument": { "Statement": [ { "Action": "ec2:acceptVpcPeeringConnection", "Effect": "Allow", "Resource": { "Fn::Sub": "arn:aws:ec2:${AWS::Region}:${AWS::AccountId}:vpc/${vpc}" } }, { "Action": "ec2:acceptVpcPeeringConnection", "Condition": { "StringEquals": { "ec2:AccepterVpc": { "Fn::Sub": "arn:aws:ec2:${AWS::Region}:${AWS::AccountId}:vpc/${vpc}" } } }, "Effect": "Allow", "Resource": { "Fn::Sub": "arn:aws:ec2:${AWS::Region}:${AWS::AccountId}:vpc-peering-connection/*" } } ], "Version": "2012-10-17" }, "PolicyName": "root" } ] }, "Type": "AWS::IAM::Role" }, "vpc": { "Properties": { "CidrBlock": "10.1.0.0/16", "EnableDnsHostnames": false, "EnableDnsSupport": false, "InstanceTenancy": "default" }, "Type": "AWS::EC2::VPC" } }, "Outputs": { "RoleARN": { "Value": { "Fn::GetAtt": [ "peerRole", "Arn" ] } }, "VPCId": { "Value": { "Ref": "vpc" } } } }
Esempio YAML
AWSTemplateFormatVersion: 2010-09-09 Description: Create a VPC and an assumable role for cross account VPC peering. Parameters: PeerRequesterAccountId: Type: String Resources: peerRole: Properties: AssumeRolePolicyDocument: Statement: - Action: - 'sts:AssumeRole' Effect: Allow Principal: AWS: Ref: PeerRequesterAccountId Path: / Policies: - PolicyDocument: Statement: - Action: 'ec2:acceptVpcPeeringConnection' Effect: Allow Resource: 'Fn::Sub': 'arn:aws:ec2:${AWS::Region}:${AWS::AccountId}:vpc/${vpc}' - Action: 'ec2:acceptVpcPeeringConnection' Condition: StringEquals: 'ec2:AccepterVpc': 'Fn::Sub': 'arn:aws:ec2:${AWS::Region}:${AWS::AccountId}:vpc/${vpc}' Effect: Allow Resource: 'Fn::Sub': >- arn:aws:ec2:${AWS::Region}:${AWS::AccountId}:vpc-peering-connection/* Version: 2012-10-17 PolicyName: root Type: 'AWS::IAM::Role' vpc: Properties: CidrBlock: 10.1.0.0/16 EnableDnsHostnames: false EnableDnsSupport: false InstanceTenancy: default Type: 'AWS::EC2::VPC' Outputs: RoleARN: Value: 'Fn::GetAtt': - peerRole - Arn VPCId: Value: Ref: vpc

Per accedere aVPC, puoi utilizzare lo stesso modello di richiedente del passaggio 2 precedente.