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
  • Die von Ihnen erstellten Geheimnisse werden Ihnen in Rechnung gestellt. Weitere Informationen zu den Preisen von Secrets Manager finden Sie unter AWS Preise.

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

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

Um die Richtlinie Ihrer Ausführungsrolle zuzuordnen
  1. Öffnen Sie die Seite Umgebungen auf der Amazon MWAA-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 Amazon MWAA-Konsole für das Backend erstellen. AWS Secrets Manager 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 Amazon MWAA-Konsole.

  2. Wählen Sie eine Umgebung aus.

  3. Wählen Sie Bearbeiten aus.

  4. Wählen Sie Weiter aus.

  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 durchführt. 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 MWAA verwenden.

      Um ein Suchmuster anzugeben, geben Sie die Parameter connections_lookup_pattern und variables_lookup_pattern 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. Angeben neuerer Anbieterpakete

  6. Wählen Sie Speichern.

Schritt drei: Generieren Sie eine Apache AWS Airflow-Verbindungs-URI-Zeichenfolge

Um eine Verbindungszeichenfolge zu erstellen, verwenden Sie die Tabulatortaste auf Ihrer Tastatur, um die Schlüssel-Wert-Paare im Connection-Objekt einzurücken. 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 Airflow-Verbindungs-URI-Zeichenfolge für eine Amazon MWAA-Umgebung mithilfe von Apache Airflow oder einem Python-Skript.

Apache Airflow CLI

Die folgende Shell-Sitzung verwendet Ihre lokale Airflow-CLI, um eine Verbindungszeichenfolge zu generieren. Wenn Sie die CLI nicht 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 durch den ARN der Ausführungsrolle und die Region in YOUR_REGION (z. B.). us-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 durch Rot.

    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-UI-URL auf Amazon 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 MWAA anzumelden:

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

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

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

      ... )
  7. Druckt die Verbindungs-URI-Zeichenfolge aus:

    >>> myconn.get_uri()

    Sie sollten die Verbindungs-URI-Zeichenfolge 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 die 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 durch Rot.

  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 aus.

  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 aus.

  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üfen Sie auf der Seite „Überprüfen“ Ihr Geheimnis und wählen Sie dann Speichern aus.

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 Verbindungs-URI-Zeichenfolge 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 aus.

  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 aus.

  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üfen Sie auf der Seite „Überprüfen“ Ihr Geheimnis und wählen Sie dann Speichern aus.

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