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
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
Versión
Puede usar el código de ejemplo que aparece en esta página con Apache Airflow v2 en Python 3.10
Requisitos previos
Para usar el código de muestra de esta página, necesitará lo siguiente:
-
Un repositorio de CodeArtifact en el que almacenar las dependencias de su entorno.
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:GetAuthorizationTokenpermite 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:GetServiceBearerTokenes necesaria para llamar a la operación de la APIGetAuthorizationTokende CodeArtifact. Esta operación devuelve el token que debe usarse cuando se usa un administrador de paquetes comopipcon CodeArtifact. Para usar un administrador de paquetes con un repositorio de CodeArtifact, el rol de ejecución de su entorno debe permitirsts: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.
-
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" -
Vaya a la carpeta en la que guardó el script. Utilice
cpen una nueva ventana de símbolo del sistema para cargar el script en su bucket. Sustituyaamzn-s3-demo-bucketpor su información.aws s3 cp code_artifact_startup_script.sh s3://amzn-s3-demo-bucket/code_artifact_startup_script.shSi 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
-
Aprenda a usar los scripts de inicio para personalizar su entorno en Uso de un script de inicio con Amazon MWAA.
-
Aprenda a cargar el código el DAG de este ejemplo en la carpeta
dagsde su bucket de Amazon S3 en Cómo añadir o actualizar DAG. -
Obtenga más información sobre cómo cargar el archivo
plugins.zipde este ejemplo a su bucket de Amazon S3 en Instalación de complementos personalizados.