es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pregunta sobre el bucket de origen de AWS CodeBuild desde otra región (interregional de otra cuenta).

Tengo un problema para configurar el origen de un proyecto de CodeBuild como un cubo de S3.

Estoy trabajando en crear una canalización de CI/CD transregional y multidominio mediante AWS CDK, y quiero utilizar un solo cubo de origen en un proyecto de CodeBuild dentro de la canalización.

  • El cubo de S3 que contiene el archivo de compilación se encuentra en la REGIÓNA / CUENTAA
  • El proyecto de CodeBuild se encuentra en la REGIÓNB / CUENTAB

(Versión de CDK 2.0 / TypeScript)

Obtengo el cubo de la siguiente manera utilizando el atributo ‘bucket’:

const bucket_X = s3.Bucket.fromBucketAttributes(
    this,
    "ImportedBucketByAttr",
    {
        bucketArn: "arn:aws:s3:::NOMBRE_DEL_CUBO",
        region: REGION_A,
    }
)

Y lo utilizo en la propiedad de origen del proyecto de CodeBuild.

const project_X = new codebuild.Project(this, NOMBRE_DEL_PROYECTO, {
    projectName: NOMBRE_DEL_PROYECTO,
    source: Source.s3({
        bucket: bucket_X,
        path: "",
    }),
    environment: {
        buildImage: LinuxBuildImage.STANDARD_5_0,
    },
    timeout: Duration.minutes(30),
    queuedTimeout: Duration.minutes(240),
    role: ROLE_X,
})

Pero el proyecto de CodeBuild muestra un error de región del cubo.

[Container] 2021/12/26 14:42:43 Waiting for agent ping
[Container] 2021/12/26 14:42:44 Waiting for DOWNLOAD_SOURCE
BucketRegionError: incorrect region, the bucket is not in 'REGION_B' region at endpoint ''
    status code: 301, request id: , host id:  for primary source

Si recuerdo correctamente, la primera vez que utilicé el atributo ‘region’ en ‘fromBucketAttributes’ con region: REGIÓN_A funcionaba (el proyecto de CodeBuild podía obtener el origen de una región diferente). Así que seguí con otras partes y realicé varias actualizaciones sin tenerlo en cuenta.

Pero después de algunas actualizaciones en el stack, comenzó a mostrar ese error 😥

Incluso eliminé el stack y lo redeployé, pero no tuve suerte.

¿Podrían darme una pequeña pista?
¿Cómo puedo utilizar el cubo en otra región como origen de CodeBuild?

(O indíquenme si mi memoria está equivocada… ¿CodeBuild no puede utilizar el cubo de una región diferente como origen?)

  • En mi opinión, el rol no es el problema. Puedo ver el cubo desde la CUENTA_B a través del enlace de información de origen de CodeBuild porque configuré la política y el rol del cubo. Y como ya saben.. si el rol fuera el problema, la consola mostraría un mensaje diferente.

Gracias de antemano.

Feliz año nuevo.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás enfrentando un problema al establecer un cubo S3 como fuente de un proyecto de CodeBuild en una región diferente. Primero, es importante verificar que el proyecto de CodeBuild tenga los permisos adecuados para acceder al cubo S3. Mencionaste que has configurado la política del cubo y el rol correctamente, por lo que eso no debería ser el problema.

    Una cosa que puedes comprobar es si el cubo S3 tiene una configuración de replicación entre regiones hacia la región donde se encuentra el proyecto de CodeBuild. Si no es así, puedes configurar la replicación entre regiones desde la región de origen hacia la región de destino utilizando la Consola de Administración de AWS o AWS CLI. La replicación entre regiones te permite replicar objetos desde un cubo de origen hacia un cubo de destino en una región diferente. Una vez configurada la replicación, el proyecto de CodeBuild podrá acceder al cubo replicado en la región de destino.

    Otra cosa que puedes verificar es si la versión del SDK utilizada para el cubo S3 es compatible en la región de destino. Puedes verificar la versión del SDK para la región A y B desde la documentación de AWS.

    Finalmente, puedes intentar utilizar una ubicación de origen diferente para el proyecto de CodeBuild, como un repositorio de GitHub o un repositorio de AWS CodeCommit, y ver si sigues enfrentando el mismo problema.

    Espero que esto te ayude a configurar tu canalización de CI/CD entre regiones y cuentas. ¡Feliz año nuevo!

Comments are closed.