J'ai AWS Code Pipeline for CI / CD pour mon application. J'utilise 2 comptes AWS. Le compte 1 est pour mes référentiels et pipelines et le compte 2 est l'endroit où se trouvent tous les infra / serveurs.

C'est donc l'étape de déploiement de mon pipeline où deploymentGroup est créé dans le compte-2 et affecté en tant qu'objet props.ec2DeploymentGroup

{
    stageName: "deploy-to-" + props.targetEnvName,
    actions: [
       new codepipeline_actions.CodeDeployServerDeployAction({
          actionName: "deploy-to-"+props.targetEnvName+"-"+ props.applicationName + "-ec2",
          input: appBuildOutput,
          deploymentGroup: props.ec2DeploymentGroup
       })
        ]
  }

Maintenant, lorsque ma phase de déploiement s'exécute, il tente de déployer avec succès des artefacts sur DeploymentGroup / Servers dans le compte-2, mais il échoue à l'événement downloadBundle avec une erreur

Accès refusé

Et c'est parce que mon compartiment d'artefacts est dans le compte-1 (car mon pipeline est dans le compte-1) et le groupe de déploiement dans le compte-2 n'a pas accès à ce compartiment d'artefacts dans le compte-1.

J'ai essayé de faire quelque chose comme ça, mais je ne sais pas comment obtenir le rôle de props.ec2DeploymentGroup pour le transmettre ici.

pipeline.artifactBucket.grantRead(whatObjectToPassHere)

Alors, comment dois-je donner un accès entre comptes au compartiment d'artefacts à l'aide d'AWS CDK?

0
Dhiraj 24 févr. 2021 à 04:21

1 réponse

Meilleure réponse

J'ai donc trouvé la solution à mon problème (j'ai eu l'aide du support AWS), mon profil d'instance EC2 n'avait pas accès à mon compartiment d'artefacts dans un autre compte.

Ce que j'ai géré dans CDK en utilisant le code ci-dessous

const ec2InstanceProfileRole = iam.Role.fromRoleArn(this, 'Role', 
'arn:aws:iam::'+props.targetAccountId+':role/'+props.ec2InstanceProfileName, 
{
   mutable: false,
});

pipeline.artifactBucket.grantRead(ec2InstanceProfileRole);
0
Dhiraj 8 mars 2021 à 03:17