Erfrischung eines CodeArtifact Zeichen - Amazon Managed Workflows für Apache Airflow

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erfrischung eines CodeArtifact Zeichen

Wenn du verwendest CodeArtifact Um Python-Abhängigkeiten zu installieren, benötigt Amazon MWAA ein aktives Token. Um Amazon MWAA den Zugriff auf eine zu ermöglichen CodeArtifact Zur Laufzeit können Sie ein Repository verwendenStartskriptund stelle das einPIP_EXTRA_INDEX_URLmit dem Token.

Im folgenden Thema wird beschrieben, wie Sie ein Startskript erstellen können, dasget_authorization_token CodeArtifact API-Vorgang zum Abrufen eines neuen Tokens bei jedem Start oder jeder Aktualisierung Ihrer Umgebung.

Version

  • Sie können das Codebeispiel auf dieser Seite verwenden mitApache Airflow v2 und höherinPython 3.10.

Voraussetzungen

Um den Beispielcode auf dieser Seite verwenden zu können, benötigen Sie Folgendes:

Berechtigungen

Um das zu aktualisieren CodeArtifact token und das Ergebnis in Amazon S3 schreiben Amazon MWAA muss in der Ausführungsrolle über die folgenden Berechtigungen verfügen.

  • Diecodeartifact:GetAuthorizationTokenAktion ermöglicht Amazon MWAA das Abrufen eines neuen Tokens von CodeArtifact. Die folgende Richtlinie gewährt die Erlaubnis für jeden CodeArtifact Domain, die Sie erstellen. Sie können den Zugriff auf Ihre Domänen weiter einschränken, indem Sie den Ressourcenwert in der Anweisung ändern und nur die Domänen angeben, auf die Ihre Umgebung zugreifen soll.

    { "Effect": "Allow", "Action": "codeartifact:GetAuthorizationToken", "Resource": "arn:aws:codeartifact:us-west-2:*:domain/*" }
  • Diests:GetServiceBearerTokenAktion ist erforderlich, um das aufzurufen CodeArtifact GetAuthorizationTokenAPI-Vorgang. Dieser Vorgang gibt ein Token zurück, das verwendet werden muss, wenn Sie einen Paketmanager wiepipmit CodeArtifact. Um einen Paketmanager mit einem zu verwenden CodeArtifact Repository, die Rolle der Ausführungsrolle in Ihrer Umgebung muss dies zulassensts:GetServiceBearerTokenwie in der folgenden Grundsatzerklärung dargestellt.

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

Codebeispiel

In den folgenden Schritten wird beschrieben, wie Sie ein Startskript erstellen können, das CodeArtifact Token.

  1. Kopieren Sie den Inhalt des folgenden Codebeispiels und speichern Sie ihn lokal untercode_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. Navigieren Sie zu dem Ordner, in dem Sie das Skript gespeichert haben. Benutzecpin einem neuen Eingabeaufforderungsfenster, um das Skript in Ihren Bucket hochzuladen. Ersetzendein-s3-Eimermit deinen Informationen.

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

    Bei Erfolg gibt Amazon S3 den URL-Pfad zum Objekt aus:

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

    Nachdem Sie das Skript hochgeladen haben, wird Ihre Umgebung aktualisiert und das Skript beim Start ausgeführt.

Als nächstes