Hola, creé un proyecto de codepipeline con la siguiente configuración:
Todo el proceso funciona bien hasta que intenta implementarse, por alguna razón recibo el siguiente error durante la implementación:
Permisos insuficientes No se puede acceder al artefacto con la clave de objeto de Amazon S3 'FailedScanSubscriber/MyAppBuild/Wmu5kFy' ubicada en el depósito de artefactos de Amazon S3 'codepipeline-us-west-2-913731893217'. El rol proporcionado no tiene suficientes permisos.
Durante la fase de construcción, incluso puede crear una nueva imagen acoplable en el repositorio de ECS.
Intenté todo, cambié los roles y las políticas de IAM, agregué acceso completo a S3, incluso configuré el depósito S3 como público, nada funcionó. No tengo opciones, si alguien pudiera ayudarme sería maravilloso, tengo poca experiencia con AWS, por lo que se agradece cualquier ayuda.
Pude encontrar una solución. El verdadero problema es que cuando el proveedor de implementación se configura como Amazon ECS, necesitamos generar un artefacto de salida que indique el nombre de la definición de la tarea y el uri de la imagen, por ejemplo:
post_build: commands: - printf '[{"name":"your.task.definition.name","imageUri":"%s"}]' $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG > imagedefinitions.json artifacts: files: imagedefinitions.jsonEsto sucede cuando AWS CodeDeploy no puede encontrar el artefacto de compilación de AWS CodeBuild. Si ingresa al depósito S3 y verifica la ruta, verá que el objeto artefacto NO ESTÁ ALLÍ.
Aunque el error dice sobre un problema de permiso. Esto puede suceder debido a la ausencia del objeto artefacto.
Solución: configure correctamente la sección de artifacts en buildspec.yml y configure las etapas de AWS Codepipeline especificando correctamente los nombres de los artefactos de entrada y salida.
artifacts: files: - '**/*' base-directory: base_dir name: build-artifact-name discard-paths: noConsulte este artículo: https://medium.com/@shanikae/insufficient-permissions-unable-to-access-the-artifact-with-amazon-s3-247f27e6cdc3
Para mí, el problema fue que mi paso de CodeBuild fue cifrar los artefactos usando la clave predeterminada de AWS Managed S3.
Mi paso de implementación usa un rol de cuentas cruzadas, por lo que no pudo recuperar el artefacto. Una vez que cambié la clave de cifrado de Codebuild a mi CMK como debería haber sido originalmente, mi paso de implementación tuvo éxito.