J'ai un CodePipeline
en 3 étapes sur AWS
.
Source: extrait lors de la validation d'une branche spécifique de CodeCommit
(succès)
Build: exécute des tests sur une image docker via CodeBuild
(succès)
Deploy: effectue un déploiement sur un groupe de déploiement (alias certaines instances EC2 spécifiquement balisées) via CodeDeploy
(échec).
L'étape 3 échoue avec
Impossible d'accéder à l'artefact avec la clé d'objet Amazon S3 'someitem- / BuildArtif / 5zyjxoZ' situé dans Amazon S3 seau d'artefacts 'codepipeline-eu-west-1-somerandomnumber'. Le fourni le rôle ne dispose pas des autorisations suffisantes.
À quel rôle le dernier fait-il référence?
Le rôle de service de CodePipeline
ou le rôle de service de CodeDeploy
?
Je suis presque certain d'avoir joint les politiques appropriées aux deux cependant ...
Voici un extrait de mon rôle de service CodePipeline
4 Réponses :
essayez de donner à la politique "CodeDeploy" un accès complet, cela devrait fonctionner.
Le message d'erreur doit faire référence au rôle CodeDeploy. L'action CodeDeploy transmet l'artefact S3 par référence à CodeDeploy, le rôle CodeDeploy doit donc avoir un accès en lecture à l'artefact CodePipeline.
Cela peut également être dû au fait que le BuildArtifact
n'existe pas. Vérifiez le chemin spécifié dans votre compartiment S3 pour voir si l'objet existe réellement. CodePipeline donne simplement à CodeDeploy une référence à un artefact qu'il pense a été construit et téléchargé, mais il ne le sait pas vraiment.
Ce problème n'est pas lié aux rôles attribués à Codepipeline ou à Codebuild. Si vous étudiez, vous trouverez que dans le compartiment S3 'codepipeline-eu-west-1-somerandomnumber', il n'y a pas de dossier "BuildArtif" et certainement pas de fichier - "5zyjxoZ".
Le problème est que Codebuild n'envoie aucun artefact à Codedeploy, remplacez les "Artefacts d'entrée" de Codebuild par la sortie de l'étape Source du Pipeline et le problème serait résolu.
Je suppose que c'est le rôle CodeDeploy, car c'est le CodePipeline qui met l'artefact dans le seau (bien que cela ne signifie pas nécessairement qu'il peut également le récupérer).
Cela est dû au fait que l'artefact n'a pas été créé. Reportez-vous à cette réponse ( stackoverflow.com/a/60983084/4842112 ) et à cet article - medium.com/@shanikae/…