Actualización de un token de CodeArtifact - Amazon Managed Workflows para Apache Airflow

Actualización de un token de CodeArtifact

Si utiliza CodeArtifact para instalar dependencias de Python, Amazon MWAA requiere un token activo. Para permitir que Amazon MWAA acceda a un repositorio de CodeArtifact en tiempo de ejecución, puede usar un script de inicio y configurar PIP_EXTRA_INDEX_URL con el token.

En el siguiente tema se describe cómo crear un script de inicio que utilice la operación de la API de CodeArtifact get_authorization_token para recuperar un token nuevo cada vez que el entorno se inicie o se actualice.

Versión

Puede usar el código de ejemplo que aparece en esta página con Apache Airflow v2 en Python 3.10 y Apache Airflow v3 en Python 3.11.

Requisitos previos

Para usar el código de muestra de esta página, necesitará lo siguiente:

Permisos

Para actualizar el token CodeArtifact y escribir el resultado en Amazon S3, Amazon MWAA debe tener los siguientes permisos en el rol de ejecución.

  • La acción codeartifact:GetAuthorizationToken permite a Amazon MWAA recuperar un nuevo token de CodeArtifact. La siguiente política otorga permisos a todos los dominios de CodeArtifact que cree. Puede restringir aún más el acceso a sus dominios modificando el valor del recurso en la instrucción y especificando solo los dominios a los que desee que acceda su entorno.

    { "Effect": "Allow", "Action": "codeartifact:GetAuthorizationToken", "Resource": "arn:aws:codeartifact:us-west-2:*:domain/*" }
  • La acción sts:GetServiceBearerToken es necesaria para llamar a la operación de la API GetAuthorizationToken de CodeArtifact. Esta operación devuelve el token que debe usarse cuando se usa un administrador de paquetes como pip con CodeArtifact. Para usar un administrador de paquetes con un repositorio de CodeArtifact, el rol de ejecución de su entorno debe permitir sts:GetServiceBearerToken, tal y como se muestra en la siguiente instrucción de política.

    { "Sid": "AllowServiceBearerToken", "Effect": "Allow", "Action": "sts:GetServiceBearerToken", "Resource": "*" }

Código de ejemplo

Los siguientes pasos describen cómo crear un script de inicio que actualice el token CodeArtifact.

  1. Copie el contenido del código de ejemplo siguiente y guárdelo localmente como code_artifact_startup_script.sh.

    #!/bin/sh # Startup script for MWAA, refer to https://docs.aws.amazon.com/mwaa/latest/userguide/using-startup-script.html set -eu # setup code artifact endpoint and token # https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-0 # https://docs.aws.amazon.com/mwaa/latest/userguide/samples-code-artifact.html DOMAIN="amazon" DOMAIN_OWNER="112233445566" REGION="us-west-2" REPO_NAME="MyRepo" echo "Getting token for CodeArtifact with args: --domain $DOMAIN --region $REGION --domain-owner $DOMAIN_OWNER" TOKEN=$(aws codeartifact get-authorization-token --domain $DOMAIN --region $REGION --domain-owner $DOMAIN_OWNER | jq -r '.authorizationToken') echo "Setting Pip env var for '--index-url' to point to CodeArtifact" export PIP_EXTRA_INDEX_URL="https://aws:$TOKEN@$DOMAIN-$DOMAIN_OWNER.d.codeartifact.$REGION.amazonaws.com/pypi/$REPO_NAME/simple/" echo "CodeArtifact startup setup complete"
  2. Vaya a la carpeta en la que guardó el script. Utilice cp en una nueva ventana de símbolo del sistema para cargar el script en su bucket. Sustituya amzn-s3-demo-bucket por su información.

    aws s3 cp code_artifact_startup_script.sh s3://amzn-s3-demo-bucket/code_artifact_startup_script.sh

    Si se ejecuta correctamente, Amazon S3 muestra la ruta URL del objeto:

    upload: ./code_artifact_startup_script.sh to s3://amzn-s3-demo-bucket/code_artifact_startup_script.sh

    Tras cargar el script, su entorno actualiza y ejecuta el script al iniciarse.

Siguientes pasos