Como atualizar um token CodeArtifact - Amazon Managed Workflows for Apache Airflow

Como atualizar um token CodeArtifact

Se você estiver usando o CodeArtifact para instalar dependências do Python, o Amazon MWAA exigirá um token ativo. Para permitir que o Amazon MWAA acesse um repositório CodeArtifact em runtime, é possível usar um script de startup e configurar PIP_EXTRA_INDEX_URL com o token.

O tópico a seguir descreve como é possível criar um script de startup que usa a operação da API CodeArtifact get_authorization_token para recuperar um novo token sempre que seu ambiente for inicializado ou atualizado.

Versão

É possível usar o exemplo de código nesta página com o Apache Airflow v2 no Python 3.10 e o Apache Airflow v3 no Python 3.11.

Pré-requisitos

Para usar o código de amostra nesta página, você precisará do seguinte:

Permissões

Para atualizar o token CodeArtifact e gravar o resultado no Amazon S3, o Amazon MWAA deve ter as seguintes permissões no perfil de execução.

  • A ação codeartifact:GetAuthorizationToken permite que o Amazon MWAA recupere um novo token do CodeArtifact. A política a seguir concede permissão para cada domínio do CodeArtifact que você criar. É possível restringir ainda mais o acesso aos seus domínios modificando o valor do recurso na instrução e especificando somente os domínios que você deseja que seu ambiente acesse.

    { "Effect": "Allow", "Action": "codeartifact:GetAuthorizationToken", "Resource": "arn:aws:codeartifact:us-west-2:*:domain/*" }
  • A ação sts:GetServiceBearerToken é necessária para chamar a operação da API CodeArtifact GetAuthorizationToken. Essa operação retorna um token que deve ser usado ao usar um gerenciador de pacotes, como pip com CodeArtifact. Para usar um gerenciador de pacotes com um repositório CodeArtifact, um perfil de execução do seu ambiente deve permitir sts:GetServiceBearerToken, conforme mostrado na instrução da política a seguir.

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

Exemplo de código

As etapas a seguir descrevem como é possível criar um script de inicialização que atualize o token CodeArtifact.

  1. Copie o conteúdo da amostra de código a seguir e salve 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. Navegue até a pasta em que você salvou o script. Use cp em uma nova janela de prompt para fazer o upload do script em seu bucket. Substitua amzn-s3-demo-bucket por suas informações.

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

    Se tiver êxito, o Amazon S3 envia o caminho da URL para o objeto:

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

    Depois de fazer o upload do script, seu ambiente atualiza e executa o script no startup.

Próximas etapas