刷新令 CodeArtifact 牌 - Amazon Managed Workflows for Apache Airflow

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

刷新令 CodeArtifact 牌

如果您使用 CodeArtifact 安裝 Python 依賴關係,Amazon MWAA 需要一個活動令牌。要允許 Amazon MWAA 在運行時訪問 CodeArtifact 存儲庫,您可以使用啟動腳本並使PIP_EXTRA_INDEX_URL用令牌進行設置。

下列主題說明如何建立啟動指令碼,以便在每次環境啟動或更新時使用該get_authorization_token CodeArtifact API作業擷取新 Token。

版本

  • 您可以使用此頁面上的代碼示例與 Apache 氣流 V2Python 3.10

必要條件

若要使用此頁面上的範例程式碼,您需要下列項目:

許可

若要重新整理權 CodeArtifact 杖並將結果寫入 Amazon S3,Amazon MWAA 必須在執行角色中具有下列許可。

  • codeartifact:GetAuthorizationToken操作允許 Amazon MWAA 從中檢索新令牌 CodeArtifact。下列原則會授與您建立的每個 CodeArtifact 網域的權限。您可以修改陳述式中的資源值,並僅指定您希望環境存取的網域,進一步限制對網域的存取。

    { "Effect": "Allow", "Action": "codeartifact:GetAuthorizationToken", "Resource": "arn:aws:codeartifact:us-west-2:*:domain/*" }
  • 需要sts:GetServiceBearerToken執行動作才能呼叫 CodeArtifactGetAuthorizationTokenAPI作業。此操作返回使用包管理器(如 with)時必須使用的pip令牌 CodeArtifact。若要將套件管理員與 CodeArtifact 存放庫搭配使用,您環境的執行角色必須允許,sts:GetServiceBearerToken如下列原則陳述式所示。

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

範例程式碼

下列步驟說明如何建立更新 Token 的啟動指 CodeArtifact 令碼。

  1. 複製下列程式碼範例的內容,並在本機儲存為code_artifact_startup_script.sh

    #!/bin/sh # Startup script for MWAA, see 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. 導覽至您儲存指令碼的資料夾。cp在新的提示視窗中使用,將指令碼上傳至您的值區。Replace (取代) your-s3-bucket 與您的信息。

    $ aws s3 cp code_artifact_startup_script.sh s3://your-s3-bucket/code_artifact_startup_script.sh

    如果成功,Amazon S3 會輸出物件的URL路徑:

    upload: ./code_artifact_startup_script.sh to s3://your-s3-bucket/code_artifact_startup_script.sh

    上傳指令碼之後,您的環境會在啟動時更新並執行指令碼。

後續步驟?