

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Actualización de un token de CodeArtifact
<a name="samples-code-artifact"></a>

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](using-startup-script.md) y configurar [https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-extra-index-url](https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-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 [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/codeartifact.html#CodeArtifact.Client.get_authorization_token](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/codeartifact.html#CodeArtifact.Client.get_authorization_token) para recuperar un token nuevo cada vez que el entorno se inicie o se actualice.

**Topics**
+ [Versión](#samples-code-artifact-version)
+ [Requisitos previos](#samples-code-artifact-prereqs)
+ [Permisos](#samples-code-artifact-permissions)
+ [Código de ejemplo](#samples-code-artifact-code)
+ [Siguientes pasos](#samples-code-artifact-next-up)

## Versión
<a name="samples-code-artifact-version"></a>

Puede usar el código de ejemplo que aparece en esta página con **Apache Airflow v2** en [Python 3.10](https://peps.python.org/pep-0619/) y **Apache Airflow v3** en [Python 3.11](https://peps.python.org/pep-0664/).

## Requisitos previos
<a name="samples-code-artifact-prereqs"></a>

Para usar el código de muestra de esta página, necesitará lo siguiente:
+ Un [entorno de Amazon MWAA](get-started.md).
+ Un [repositorio de CodeArtifact](https://docs.aws.amazon.com/codeartifact/latest/ug/create-repo.html) en el que almacenar las dependencias de su entorno.

## Permisos
<a name="samples-code-artifact-permissions"></a>

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 [https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_GetAuthorizationToken.html](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_GetAuthorizationToken.html) 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
<a name="samples-code-artifact-code"></a>

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"
   ```

1. 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
<a name="samples-code-artifact-next-up"></a>
+ Aprenda a usar los scripts de inicio para personalizar su entorno en [Uso de un script de inicio con Amazon MWAA](using-startup-script.md).
+ Aprenda a cargar el código el DAG de este ejemplo en la carpeta `dags` de su bucket de Amazon S3 en [Cómo añadir o actualizar DAG](configuring-dag-folder.md).
+ Obtenga más información sobre cómo cargar el archivo `plugins.zip` de este ejemplo a su bucket de Amazon S3 en [Instalación de complementos personalizados](configuring-dag-import-plugins.md).