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
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
Versão
É possível usar o exemplo de código nesta página com o Apache Airflow v2 no Python 3.10
Pré-requisitos
Para usar o código de amostra nesta página, você precisará do seguinte:
-
Um repositório CodeArtifact onde você armazena dependências para seu ambiente.
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:GetAuthorizationTokenpermite 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 CodeArtifactGetAuthorizationToken. Essa operação retorna um token que deve ser usado ao usar um gerenciador de pacotes, comopipcom CodeArtifact. Para usar um gerenciador de pacotes com um repositório CodeArtifact, um perfil de execução do seu ambiente deve permitirsts: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.
-
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" -
Navegue até a pasta em que você salvou o script. Use
cpem uma nova janela de prompt para fazer o upload do script em seu bucket. Substituaamzn-s3-demo-bucketpor suas informações.aws s3 cp code_artifact_startup_script.sh s3://amzn-s3-demo-bucket/code_artifact_startup_script.shSe 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
-
Saiba como usar scripts de startup para personalizar seu ambiente em Como usar um script de startup com o Amazon MWAA.
-
Saiba como fazer o upload do código DAG neste exemplo para a pasta
dagsem seu bucket do Amazon S3 em Como adicionar ou atualizar DAGs. -
Saiba mais sobre como fazer o upload do
plugins.ziparquivo neste exemplo para seu bucket do Amazon S3 em Como instalar plug-ins personalizados.