Konfiguration einer Apache Airflow-Verbindung mithilfe eines Geheimnisses AWS Secrets Manager - 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.

Konfiguration einer Apache Airflow-Verbindung mithilfe eines Geheimnisses AWS Secrets Manager

AWS Secrets Manager ist ein unterstütztes alternatives Apache Airflow-Backend in einer Amazon Managed Workflows für Apache Airflow-Umgebung. Diese Anleitung zeigt, wie Sie AWS Secrets Manager Geheimnisse für Apache Airflow-Variablen und eine Apache Airflow-Verbindung auf Amazon Managed Workflows for Apache Airflow sicher speichern können.

Anmerkung

Schritt eins: Erteilen Sie Amazon MWAA die Erlaubnis, auf geheime Schlüssel von Secrets Manager zuzugreifen

Die Ausführungsrolle für Ihre MWAA Amazon-Umgebung benötigt Lesezugriff auf den geheimen Schlüssel in AWS Secrets Manager. Die folgende IAM Richtlinie ermöglicht Lese- und Schreibzugriff mithilfe der AWS verwalteten SecretsManagerReadWriteRichtlinie.

Um die Richtlinie Ihrer Ausführungsrolle zuzuordnen
  1. Öffnen Sie die Seite Umgebungen auf der MWAA Amazon-Konsole.

  2. Wählen Sie eine Umgebung aus.

  3. Wählen Sie im Bereich „Berechtigungen“ Ihre Ausführungsrolle aus.

  4. Wählen Sie Richtlinien anfügen.

  5. Geben Sie SecretsManagerReadWrite in das Textfeld Filterrichtlinien ein.

  6. Wählen Sie Richtlinie anfügen aus.

Wenn Sie keine AWS verwaltete Berechtigungsrichtlinie verwenden möchten, können Sie die Ausführungsrolle Ihrer Umgebung direkt aktualisieren, um eine beliebige Zugriffsebene auf Ihre Secrets Manager Manager-Ressourcen zu ermöglichen. Die folgende Richtlinienanweisung gewährt beispielsweise Lesezugriff auf alle Secrets, die Sie in einer bestimmten AWS Region in Secrets Manager erstellen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:ListSecretVersionIds" ], "Resource": "arn:aws:secretsmanager:us-west-2:012345678910:secret:*" }, { "Effect": "Allow", "Action": "secretsmanager:ListSecrets", "Resource": "*" } ] }

Schritt zwei: Erstellen Sie das Secrets Manager Manager-Backend als Apache Airflow-Konfigurationsoption

Im folgenden Abschnitt wird beschrieben, wie Sie eine Apache Airflow-Konfigurationsoption auf der MWAA Amazon-Konsole für das AWS Secrets Manager Backend erstellen. Wenn Sie in eine gleichnamige Konfigurationseinstellung verwenden, hat die Konfigurationairflow.cfg, die Sie in den folgenden Schritten erstellen, Vorrang und überschreibt die Konfigurationseinstellungen.

  1. Öffnen Sie die Seite Umgebungen auf der MWAA Amazon-Konsole.

  2. Wählen Sie eine Umgebung aus.

  3. Wählen Sie Edit (Bearbeiten) aus.

  4. Wählen Sie Weiter.

  5. Wählen Sie im Bereich mit den Airflow-Konfigurationsoptionen die Option Benutzerdefinierte Konfiguration hinzufügen aus. Fügen Sie die folgenden Schlüssel-Wert-Paare hinzu:

    1. secrets.backend: airflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackend

    2. secrets.backend_kwargs: {"connections_prefix" : "airflow/connections", "variables_prefix" : "airflow/variables"} Dadurch wird Apache Airflow so konfiguriert, dass es unter Pfaden nach Verbindungszeichenfolgen und Variablen sucht. airflow/connections/* airflow/variables/*

      Sie können ein Suchmuster verwenden, um die Anzahl der API Aufrufe zu reduzieren, die Amazon MWAA in Ihrem Namen an Secrets Manager tätigt. Wenn Sie kein Suchmuster angeben, sucht Apache Airflow im konfigurierten Backend nach allen Verbindungen und Variablen. Indem Sie ein Muster angeben, schränken Sie die möglichen Pfade ein, nach denen Apache Airflow sucht. Dies senkt Ihre Kosten, wenn Sie Secrets Manager mit Amazon verwendenMWAA.

      Um ein Suchmuster anzugeben, geben Sie die variables_lookup_pattern Parameter connections_lookup_pattern und an. Diese Parameter akzeptieren eine RegEx Zeichenfolge als Eingabe. Um beispielsweise nach Geheimnissen zu suchen, die mit beginnentest, geben Sie Folgendes einsecrets.backend_kwargs:

      { "connections_prefix": "airflow/connections", "connections_lookup_pattern": "^test", "variables_prefix" : "airflow/variables", "variables_lookup_pattern": "^test" }
      Anmerkung

      Um connections_lookup_pattern und verwenden zu könnenvariables_lookup_pattern, müssen Sie apache-airflow-providers-amazon Version 7.3.0 oder höher installieren. Weitere Informationen zum Aktualisieren von Anbieterpaketen auf neuere Versionen finden Sie unter. Spezifizierung neuerer Provider-Pakete

  6. Wählen Sie Save (Speichern) aus.

Schritt drei: Generieren Sie eine Apache Airflow-Verbindungszeichenfolge AWS URI

Um eine Verbindungszeichenfolge zu erstellen, verwenden Sie die Tabulatortaste auf Ihrer Tastatur, um die Schlüssel-Wert-Paare im Connection-Objekt einzuziehen. Wir empfehlen außerdem, in Ihrer Shell-Sitzung eine Variable für das extra Objekt zu erstellen. Der folgende Abschnitt führt Sie durch die Schritte zum Generieren einer Apache URI Airflow-Verbindungszeichenfolge für eine MWAA Amazon-Umgebung mithilfe von Apache Airflow oder einem Python-Skript.

Apache Airflow CLI

Die folgende Shell-Sitzung verwendet Ihren lokalen Airflow, um eine Verbindungszeichenfolge CLI zu generieren. Wenn Sie das nicht CLI installiert haben, empfehlen wir die Verwendung des Python-Skripts.

  1. Öffnen Sie eine Python-Shell-Sitzung:

    python3
  2. Geben Sie den folgenden Befehl ein:

    >>> import json
  3. Geben Sie den folgenden Befehl ein:

    >>> from airflow.models.connection import Connection
  4. Erstellen Sie in Ihrer Shell-Sitzung eine Variable für das extra Objekt. Ersetzen Sie die Beispielwerte in YOUR_EXECUTION_ROLE_ARN mit der Ausführungsrolle ARN und der Region in YOUR_REGION (wieus-east-1).

    >>> extra=json.dumps({'role_arn': 'YOUR_EXECUTION_ROLE_ARN', 'region_name': 'YOUR_REGION'})
  5. Erstellen Sie das Verbindungsobjekt. Ersetzen Sie den Beispielwert myconn durch den Namen der Apache Airflow-Verbindung.

    >>> myconn = Connection(
  6. Verwenden Sie die Tabulatortaste auf Ihrer Tastatur, um jedes der folgenden Schlüssel-Wert-Paare in Ihrem Verbindungsobjekt einzurücken. Ersetzen Sie die Beispielwerte in red.

    1. Geben Sie den AWS Verbindungstyp an:

      ... conn_id='aws',
    2. Geben Sie die Apache Airflow-Datenbankoption an:

      ... conn_type='mysql',
    3. Geben Sie die Apache Airflow-Benutzeroberfläche bei Amazon URL MWAA an:

      ... host='288888a0-50a0-888-9a88-1a111aaa0000.a1.us-east-1.airflow.amazonaws.com/home',
    4. Geben Sie die AWS Zugriffsschlüssel-ID (Benutzername) an, um sich bei Amazon anzumeldenMWAA:

      ... login='YOUR_AWS_ACCESS_KEY_ID',
    5. Geben Sie den AWS geheimen Zugriffsschlüssel (Passwort) an, um sich bei Amazon anzumeldenMWAA:

      ... password='YOUR_AWS_SECRET_ACCESS_KEY',
    6. Geben Sie die extra Shell-Sitzungsvariable an:

      ... extra=extra
    7. Schließt das Verbindungsobjekt.

      ... )
  7. Druckt die URI Verbindungszeichenfolge:

    >>> myconn.get_uri()

    Sie sollten die URI Verbindungszeichenfolge in der Antwort sehen:

    'mysql://288888a0-50a0-888-9a88-1a111aaa0000.a1.us-east-1.airflow.amazonaws.com%2Fhome?role_arn=arn%3Aaws%3Aiam%3A%3A001122332255%3Arole%2Fservice-role%2FAmazonMWAA-MyAirflowEnvironment-iAaaaA&region_name=us-east-1'
Python script

Das folgende Python-Skript benötigt den Apache Airflow CLI nicht.

  1. Kopieren Sie den Inhalt des folgenden Codebeispiels und speichern Sie ihn lokal unter. mwaa_connection.py

    import urllib.parse conn_type = 'YOUR_DB_OPTION' host = 'YOUR_MWAA_AIRFLOW_UI_URL' port = 'YOUR_PORT' login = 'YOUR_AWS_ACCESS_KEY_ID' password = 'YOUR_AWS_SECRET_ACCESS_KEY' role_arn = urllib.parse.quote_plus('YOUR_EXECUTION_ROLE_ARN') region_name = 'YOUR_REGION' conn_string = '{0}://{1}:{2}@{3}:{4}?role_arn={5}&region_name={6}'.format(conn_type, login, password, host, port, role_arn, region_name) print(conn_string)
  2. Ersetzen Sie die Platzhalter in red.

  3. Führen Sie das folgende Skript aus, um eine Verbindungszeichenfolge zu generieren.

    python3 mwaa_connection.py

Schritt 4: Fügen Sie die Variablen in Secrets Manager hinzu

Im folgenden Abschnitt wird beschrieben, wie Sie das Geheimnis für eine Variable in Secrets Manager erstellen.

Um das Geheimnis zu erstellen
  1. Öffnen Sie die AWS Secrets Manager -Konsole.

  2. Wählen Sie Store a new secret (Ein neues Secret speichern).

  3. Wählen Sie Andere Art von Geheimnis.

  4. Wählen Sie im Bereich Geben Sie die Schlüssel/Wert-Paare an, die in diesem geheimen Schlüssel gespeichert werden sollen, die Option Klartext aus.

  5. Fügen Sie den Variablenwert als Klartext im folgenden Format hinzu.

    "YOUR_VARIABLE_VALUE"

    Um beispielsweise eine Ganzzahl anzugeben:

    14

    Um beispielsweise eine Zeichenfolge anzugeben:

    "mystring"
  6. Wählen Sie für den Verschlüsselungsschlüssel eine AWS KMS Schlüsseloption aus der Dropdownliste aus.

  7. Geben Sie in das Textfeld für Geheimer Name einen Namen im folgenden Format ein.

    airflow/variables/YOUR_VARIABLE_NAME

    Beispielsweise:

    airflow/variables/test-variable
  8. Wählen Sie Weiter.

  9. Gehen Sie auf der Seite Geheimen Schlüssel konfigurieren im Bereich Geheimer Name und Beschreibung wie folgt vor.

    1. Geben Sie unter Geheimer Name einen Namen für Ihr Geheimnis ein.

    2. (Optional) Geben Sie unter Beschreibung eine Beschreibung für Ihr Geheimnis ein.

    Wählen Sie Weiter.

  10. Behalten Sie unter Rotation konfigurieren — optional die Standardoptionen bei und wählen Sie Weiter.

  11. Wiederholen Sie diese Schritte in Secrets Manager für alle zusätzlichen Variablen, die Sie hinzufügen möchten.

  12. Überprüfe auf der Seite „Überprüfen“ deinen geheimen Schlüssel und wähle dann „Speichern“.

Schritt fünf: Fügen Sie die Verbindung in Secrets Manager hinzu

Im folgenden Abschnitt wird beschrieben, wie Sie das Geheimnis für Ihre Verbindungszeichenfolge URI in Secrets Manager erstellen.

Um das Geheimnis zu erstellen
  1. Öffnen Sie die AWS Secrets Manager -Konsole.

  2. Wählen Sie Store a new secret (Ein neues Secret speichern).

  3. Wählen Sie Andere Art von Geheimnis.

  4. Wählen Sie im Bereich Geben Sie die Schlüssel/Wert-Paare an, die in diesem geheimen Schlüssel gespeichert werden sollen, die Option Klartext aus.

  5. Fügen Sie die URI Verbindungszeichenfolge als Klartext im folgenden Format hinzu.

    YOUR_CONNECTION_URI_STRING

    Beispielsweise:

    mysql://288888a0-50a0-888-9a88-1a111aaa0000.a1.us-east-1.airflow.amazonaws.com%2Fhome?role_arn=arn%3Aaws%3Aiam%3A%3A001122332255%3Arole%2Fservice-role%2FAmazonMWAA-MyAirflowEnvironment-iAaaaA&region_name=us-east-1
    Warnung

    Apache Airflow analysiert jeden der Werte in der Verbindungszeichenfolge. Sie dürfen weder einfache noch doppelte Anführungszeichen verwenden, da die Verbindung sonst als einzelne Zeichenfolge analysiert wird.

  6. Wählen Sie für den Verschlüsselungsschlüssel eine AWS KMS Schlüsseloption aus der Dropdownliste aus.

  7. Geben Sie in das Textfeld für Geheimer Name einen Namen im folgenden Format ein.

    airflow/connections/YOUR_CONNECTION_NAME

    Beispielsweise:

    airflow/connections/myconn
  8. Wählen Sie Weiter.

  9. Gehen Sie auf der Seite Geheimen Schlüssel konfigurieren im Bereich Geheimer Name und Beschreibung wie folgt vor.

    1. Geben Sie unter Geheimer Name einen Namen für Ihr Geheimnis ein.

    2. (Optional) Geben Sie unter Beschreibung eine Beschreibung für Ihr Geheimnis ein.

    Wählen Sie Weiter.

  10. Behalten Sie unter Rotation konfigurieren — optional die Standardoptionen bei und wählen Sie Weiter.

  11. Wiederholen Sie diese Schritte in Secrets Manager für alle zusätzlichen Variablen, die Sie hinzufügen möchten.

  12. Überprüfe auf der Seite „Überprüfen“ deinen geheimen Schlüssel und wähle dann „Speichern“.

Beispiel-Code

Ressourcen

  • Weitere Informationen zur Konfiguration von Secrets Manager Manager-Geheimnissen mit der Konsole und dem AWS CLI finden Sie unter Create a Secret im AWS Secrets Manager Benutzerhandbuch.

  • Verwenden Sie ein Python-Skript, um eine große Menge von Apache Airflow-Variablen und -Verbindungen zu Secrets Manager zu migrieren, siehe Move your Apache Airflow connections and variables to. AWS Secrets Manager

Als nächstes

  • Erfahren Sie unter, wie Sie ein Token für den Zugriff auf die Apache Airflow-Benutzeroberfläche generieren. Zugreifen auf Apache Airflow