Pareil avec un VPC dans un autre Compte AWS - AWS CloudFormation

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Pareil avec un VPC dans un autre Compte AWS

Vous pouvez établir un pair avec un cloud privé virtuel (VPC) dans un autre Compte AWS en utilisant AWS::EC2::VPCPeeringConnection. Cela crée une connexion réseau entre deux personnes VPCs qui vous permet d'acheminer le trafic entre elles afin qu'elles puissent communiquer comme si elles faisaient partie du même réseau. Une connexion VPC d'appairage peut faciliter l'accès aux données et leur transfert.

Pour établir une connexion VPC d'appairage, vous devez autoriser deux connexions distinctes Comptes AWS au sein d'une même CloudFormation pile.

Pour plus d'informations sur le VPC peering et ses limites, consultez le Amazon VPC Peering Guide.

Prérequis

Effectuez les opérations suivantes avant de vous connecter VPC à un VPC dans un autre Compte AWS.

  1. Vous avez besoin d'un VPC identifiant homologue, d'un Compte AWS identifiant homologue et d'un rôle d'accès entre comptes pour la connexion d'appairage.

    Note

    Cette procédure fait référence à deux comptes : un compte qui permet l'appairage entre comptes (le compte de l'accepteur). Et un compte qui demande la connexion d'appairage (le compte du demandeur).

  2. Pour accepter la connexion VPC d'appairage, vous devez assumer le rôle d'accès entre comptes. La ressource se comporte de la même manière qu'une ressource de connexion VPC d'appairage dans le même compte. Pour plus d'informations sur la manière dont un IAM administrateur accorde des autorisations lui permettant d'assumer le rôle multicompte, consultez le Guide de l'utilisateur sur l'octroi à un utilisateur des autorisations lui permettant de changer de rôleIAM.

Étape 1 : Création d'un rôle VPC et d'un rôle multicompte

Au cours de cette étape, vous allez créer le rôle VPC et dans le compte accepteur.

Pour créer un rôle d'accès VPC et un rôle d'accès entre comptes
  1. Dans le AWS Management Console, choisissez AWS CloudFormation.

  2. Sélectionnez Créer la pile.

  3. Choisir un modèle est prêt, puis télécharger un fichier modèle, puis choisir un fichier.

  4. Ouvrez un éditeur de texte sur votre ordinateur local et ajoutez l'un des modèles suivants. Enregistrez le fichier et revenez à la console pour le sélectionner comme fichier modèle.

    Exemple 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" ] } } } }
    Exemple 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. Choisissez Suivant.

  6. Donnez un nom à la pile (par exemple,VPC-owner), puis entrez l' Compte AWS ID du compte du demandeur dans le PeerRequesterAccountIdchamp.

  7. Acceptez les valeurs par défaut, puis choisissez Suivant.

  8. Choisissez Je reconnais que cela AWS CloudFormation pourrait créer IAM des ressources, puis choisissez Create stack.

Étape 2 : créer un modèle qui inclut AWS::EC2::VPCPeeringConnection

Maintenant que vous avez créé le VPC rôle multi-comptes, vous pouvez le comparer VPC en utilisant un autre Compte AWS (le compte du demandeur).

Pour créer un modèle qui inclut la VPCPeeringConnection ressource AWSEC2: : :
  1. Retournez à la page d'accueil de la AWS CloudFormation console.

  2. Sélectionnez Créer la pile.

  3. Choisir un modèle est prêt, puis télécharger un fichier modèle, puis choisir un fichier.

  4. Ouvrez un éditeur de texte sur votre ordinateur local et ajoutez l'un des modèles suivants. Enregistrez le fichier et revenez à la console pour le sélectionner comme fichier modèle.

    Exemple 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" } } } }
    Exemple 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. Choisissez Suivant.

  6. Attribuez un nom à la pile (par exemple, VPC-peering-connection).

  7. Acceptez les valeurs par défaut, puis choisissez Suivant.

  8. Choisissez Je reconnais que cela AWS CloudFormation pourrait créer IAM des ressources, puis choisissez Create stack.

Création d'un modèle avec une politique très restrictive

Vous souhaiterez peut-être créer une politique très restrictive pour vous associer à une autre VPC Compte AWS personne.

L'exemple de modèle suivant montre comment modifier le modèle de propriétaire VPC homologue (le compte accepteur créé à l'étape 1 ci-dessus) afin qu'il soit plus restrictif.

Exemple 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" } } } }
Exemple 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

Pour y accéderVPC, vous pouvez utiliser le même modèle de demandeur qu'à l'étape 2 ci-dessus.