View a markdown version of this page

AWSSupport-ValidateMWAADependencies - AWS Systems Manager Runbook-Referenz für Automation

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.

AWSSupport-ValidateMWAADependencies

Beschreibung

Das AWSSupport-ValidateMWAADependencies Runbook validiert Python-Abhängigkeiten der Amazon Managed Workflows for Apache Airflow (Amazon MWAA) -Umgebung. Dazu wird der Testbefehl amazon-mwaa-docker-images auf einer Amazon EC2-Instance ausgeführt. Dadurch wird bestätigt, dass Ihre Python-Pakete mit Ihrer Airflow-Zielversion funktionieren. Es paketiert auch Wheel-Dateien für Umgebungen ohne öffentlichen Netzwerkzugriff.

Anwendungsfälle:

  • Überprüfung der Abhängigkeiten: Stellen Sie sicher, dass Abhängigkeiten (Anforderungsdatei) mit Standard- oder benutzerdefinierten Einschränkungen kompatibel sind, bevor Sie die Amazon MWAA-Umgebung auf eine bestimmte Airflow-Version aktualisieren oder herabstufen.

  • Wheel-Dateien paketieren: Generieren Sie Wheel-Pakete plugins.zip für Umgebungen, die keinen öffentlichen Netzwerkzugriff haben.

Wichtig

Diese Automatisierung verursacht zusätzliche AWS Kosten. Die Automatisierung stellt eine t3.large Amazon EC2-Instance mit einem gp3 50-GB-Volume in Ihrem Konto über bereit. CloudFormation Diese Instance ruft das Amazon-MWAA-Docker-Images-Repository ab, validiert Abhängigkeiten und packt Wheel-Dateien. Die Instanz wird nach der Ausführung automatisch beendet.

Anmerkung
  • Wenn nicht unterstützte Python-Module erkannt werden: Bei versionierten Modulen wird die spezifische Version aktualisiert oder entfernt, und der Testbefehl wird erneut ausgeführt. Bei nicht versionierten Modulen wird das Modul auskommentiert und der Testbefehl wird erneut ausgeführt. Dieser Vorgang wird fortgesetzt, bis alle Module unterstützt werden oder das maximale Wiederholungslimit (20 Versuche) erreicht ist.

  • Das Paketieren von Wheel-Dateien wird nur ausgeführt, wenn die Anforderungsdatei eine --find-links Direktive enthält, die auf einen Plugin-Pfad und das --no-index Flag verweist.

  • Die Anforderungsdatei und die Datei mit den benutzerdefinierten Einschränkungen müssen in dem Amazon S3-Bucket gespeichert werden, der in den Eingabeparametern angegeben ist. Alle generierten Dateien, einschließlich der aktualisierten requirements.txt plugins.zip Datei, der Datei (falls zutreffend), der Protokolle und des Berichts, werden in denselben Amazon S3-Bucket hochgeladen.

  • Dieses Runbook unterstützt nur Airflow Version 2.9.2 und höher. Wenn eine Validierung für eine frühere Version erforderlich ist, verwenden Sie aws-mwaa-local-runner.

Wie funktioniert es?

Das Runbook führt die folgenden Schritte aus:

  • Prüft, ob der Amazon S3-Ziel-Bucket potenziell öffentlichen Lese- oder Schreibzugriff auf seine Objekte gewährt.

  • Validiert die Eingabeparameter wie IAM-Berechtigungen, Standort und Besitz des Amazon S3-Buckets, Vorhandensein von Dateien, Airflow-Zielversion und Zugriff auf das öffentliche Subnetznetzwerk.

  • Ruft das neueste Amazon Linux 2023 AMI ab.

  • Erstellt einen CloudFormation Stack, der eine IAM-Rolle, ein Instance-Profil, eine Sicherheitsgruppe und eine Amazon EC2-Instance mit Amazon MWAA-Runner enthält.

  • Wartet auf die Initialisierung der Amazon EC2-Instance.

  • Führt Befehle auf der Instance aus, um die Amazon MWAA-Abhängigkeiten zu überprüfen und bei Bedarf Wheel-Dateien herunterzuladen.

  • Bereinigt die erstellten Ressourcen, indem der Stapel gelöscht wird. CloudFormation

  • Generiert den Abschlussbericht und lädt ihn in den Amazon S3-Bucket hoch.

Führen Sie diese Automatisierung aus (Konsole)

Art des Dokuments

Automatisierung

Eigentümer

Amazon

Plattformen

/

Erforderliche IAM-Berechtigungen

Der AutomationAssumeRole Parameter erfordert die folgenden Aktionen, um das Runbook erfolgreich zu verwenden.

  • Wolkenbildung: CreateStack

  • Wolkenbildung: DeleteStack

  • Wolkenbildung: DescribeStacks

  • ec2: AuthorizeSecurityGroupEgress

  • ec2: CreateSecurityGroup

  • ec2: CreateTags

  • ec2: DeleteSecurityGroup

  • ec2: DescribeImages

  • ec2: DescribeInstances

  • ec2: DescribeInstanceStatus

  • ec2: DescribeRouteTables

  • ec2: DescribeSecurityGroups

  • ec2: DescribeSubnets

  • ec2: DescribeVpcs

  • ec2: ModifyInstanceAttribute

  • ec2: RevokeSecurityGroupEgress

  • ec2: RunInstances

  • ec2: TerminateInstances

  • Ich bin: AddRoleToInstanceProfile

  • ich bin: AttachRolePolicy

  • ich bin: CreateInstanceProfile

  • ich bin: CreateRole

  • ich bin: DeleteInstanceProfile

  • ich bin: DeleteRole

  • ich bin: DeleteRolePolicy

  • ich bin: DetachRolePolicy

  • ich bin: GetInstanceProfile

  • ich bin: GetRole

  • ich bin: GetRolePolicy

  • ich bin: PassRole

  • ich bin: PutRolePolicy

  • ich bin: RemoveRoleFromInstanceProfile

  • ich bin: SimulatePrincipalPolicy

  • ich bin: TagRole

  • s3: GetAccountPublicAccessBlock

  • s3: GetBucketAcl

  • s3: GetBucketLocation

  • s3: GetBucketPolicyStatus

  • s3: GetBucketPublicAccessBlock

  • s3: GetEncryptionConfiguration

  • s3: GetObject

  • s3: ListBucket

  • s3: PutObject

  • ssm: DescribeInstanceInformation

  • ssm: GetAutomationExecution

  • ssm: GetCommandInvocation

  • ssm: GetParameter

  • ssm: ListCommandInvocations

  • ssm: ListCommands

  • ssm: SendCommand

  • ssm: StartAutomationExecution

  • Sätze: GetCallerIdentity

Beispiel für eine Richtlinie:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadOnlyPermissions", "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeInstanceStatus", "ec2:DescribeImages", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "iam:SimulatePrincipalPolicy", "iam:GetRolePolicy", "s3:GetAccountPublicAccessBlock", "ssm:GetParameter" ], "Resource": "*" }, { "Sid": "CloudFormationPermissions", "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:DescribeStacks" ], "Resource": "arn:<aws|aws-cn|aws-us-gov>:cloudformation:*:*:stack/MWAA-Runner-*" }, { "Sid": "MWAARunnerInstancesEC2Permissions", "Effect": "Allow", "Action": [ "ec2:TerminateInstances", "ec2:ModifyInstanceAttribute" ], "Resource": "*", "Condition": { "StringLike": { "ec2:ResourceTag/Name": "mwaa-runner-*" } } }, { "Sid": "EC2CreateTagsOnMWAARunnerResources", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "*", "Condition": { "StringLike": { "aws:RequestTag/Name": "mwaa-runner-*" } } }, { "Sid": "EC2CreateTagsOnStackCreation", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "*", "Condition": { "StringEquals": { "ec2:CreateAction": "RunInstances" } } }, { "Sid": "MWAAInstanceRoleIAMPermissions", "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:CreateRole", "iam:DeleteRole", "iam:DetachRolePolicy", "iam:GetRole", "iam:PutRolePolicy", "iam:DeleteRolePolicy", "iam:GetRolePolicy", "iam:TagRole" ], "Resource": "arn:<aws|aws-cn|aws-us-gov>:iam::*:role/mwaa-instance-role-*" }, { "Sid": "MWAAInstanceProfileIAMPermissions", "Effect": "Allow", "Action": [ "iam:CreateInstanceProfile", "iam:DeleteInstanceProfile", "iam:GetInstanceProfile", "iam:AddRoleToInstanceProfile", "iam:RemoveRoleFromInstanceProfile" ], "Resource": "arn:<aws|aws-cn|aws-us-gov>:iam::*:instance-profile/mwaa-instance-profile-*" }, { "Sid": "S3AccessPermissions", "Effect": "Allow", "Action": [ "s3:GetBucketAcl", "s3:GetBucketLocation", "s3:GetBucketPolicyStatus", "s3:GetBucketPublicAccessBlock", "s3:GetEncryptionConfiguration", "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:<aws|aws-cn|aws-us-gov>:s3:::<S3BucketName>", "arn:<aws|aws-cn|aws-us-gov>:s3:::<S3BucketName>/*" ] }, { "Sid": "SSMAutomationExecution", "Effect": "Allow", "Action": [ "ssm:GetAutomationExecution", "ssm:StartAutomationExecution" ], "Resource": [ "arn:<aws|aws-cn|aws-us-gov>:ssm:*:*:automation-definition/AWSSupport-ValidateMWAADependencies:*", "arn:<aws|aws-cn|aws-us-gov>:ssm:*:*:automation-execution/*" ] }, { "Sid": "OtherMutationPermissions", "Effect": "Allow", "Action": [ "ec2:CreateSecurityGroup", "ec2:DeleteSecurityGroup", "ec2:AuthorizeSecurityGroupEgress", "ec2:RevokeSecurityGroupEgress", "ec2:RunInstances", "s3:GetAccountPublicAccessBlock", "ssm:GetCommandInvocation", "ssm:ListCommands", "ssm:ListCommandInvocations", "ssm:DescribeInstanceInformation", "ssm:SendCommand", "sts:GetCallerIdentity" ], "Resource": "*" }, { "Sid": "PassRolePermission", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:<aws|aws-cn|aws-us-gov>:iam::*:role/mwaa-instance-role-*", "Condition": { "StringEquals": { "iam:PassedToService": "ec2.amazonaws.com" } } } ] }

Anweisungen

Folgen Sie diesen Schritten, um die Automatisierung zu konfigurieren:

  1. Navigieren Sie AWSSupport-ValidateMWAADependencies im Systems Manager im Abschnitt Dokumente zu.

  2. Wählen Sie Automatisierung ausführen. Stellen Sie vor der Ausführung sicher, dass Ihre IAM-Rolle über die erforderlichen Berechtigungen verfügt, die im vorherigen Abschnitt „Berechtigungen“ aufgeführt sind.

  3. Geben Sie für die Eingabeparameter Folgendes ein:

    • S3BucketName (Erforderlich):

      Geben Sie den Namen des Amazon S3-Buckets in Ihrem Konto ein, in das Sie die Protokolle zur Fehlerbehebung hochladen möchten. Stellen Sie sicher, dass die Bucket-Richtlinie Parteien, die keinen Zugriff auf die gesammelten Protokolle benötigen, keine unnötigen read/write Berechtigungen gewährt.

    • RequirementsFilePath (Erforderlich):

      Der Amazon S3-Objektschlüssel der Anforderungsdatei im Amazon S3-Bucket. Muss mit der .txt Erweiterung enden.

    • ConstraintsFilePath (Fakultativ):

      Der Amazon S3-Objektschlüssel der Datei mit benutzerdefinierten Einschränkungen im Amazon S3-Bucket. Muss mit der .txt Erweiterung enden, falls vorhanden.

    • TargetAirflowVersion (Erforderlich):

      Die Airflow-Version, die für die Validierung der Abhängigkeiten verwendet werden soll. Die Zielversion muss von Amazon MWAA unterstützt werden. Format: X.Y.Z (z. B.). 2.9.2

    • SubnetId (Erforderlich):

      Das Subnetz, das über öffentlichen Netzwerkzugriff verfügt, um die Amazon MWAA-Runner-Instance Amazon EC2 zu starten. Format:. subnet-xxxxxxxxx

    • AutomationAssumeRole (Fakultativ):

      Der Amazon-Ressourcenname (ARN) der IAM-Rolle, die es Systems Manager Automation ermöglicht, die Aktionen in Ihrem Namen auszuführen. Wenn keine Rolle angegeben ist, verwendet Systems Manager Automation die Berechtigungen des Benutzers, der dieses Runbook startet.

    • AcknowledgeIAMPolicyWarnings (Erforderlich):

      Dieses Runbook überprüft vorab, ob Ihre IAM-Rolle über die erforderlichen Berechtigungen verfügt. SimulatePrincipalPolicy Diese Prüfung kann zu ungenauen Ergebnissen führen, wenn Ihre Richtlinie Bedingungen oder Einschränkungen auf Ressourcenebene verwendet. Wählen SieYES, um dies zu bestätigen und fortzufahren.

  4. Wählen Sie Ausführen.

  5. Die Automatisierung wird initiiert.

  6. Das Dokument führt die folgenden Schritte aus:

    • GetBucketPublicStatus:

      Prüft, ob der Amazon S3-Ziel-Bucket potenziell öffentlichen Lese- oder Schreibzugriff auf seine Objekte gewährt.

    • ValidateInput:

      Validiert die Eingabeparameter wie IAM-Berechtigungen, Standort und Besitz des Amazon S3-Buckets, Vorhandensein von Dateien, Airflow-Zielversion und Zugriff auf öffentliche Subnetzwerke.

    • BranchOnValidationResult:

      Verzweigt den Workflow je nachdem, ob die Eingabeparameter gültig sind.

    • GetLatestAMI:

      Ruft das neueste AMI für Amazon Linux 2023-Image ab.

    • CreateMWAARunnerStack:

      Erstellt einen CloudFormation Stack, der eine IAM-Rolle, ein Instance-Profil, eine Sicherheitsgruppe und eine Amazon MWAA-Runner-Instance (Amazon EC2-Instance) enthält.

    • GetInstanceId:

      Ruft die Amazon EC2-Instance-ID aus der Stack-Ausgabe ab. CloudFormation

    • WaitForInstanceInitialization:

      Überprüft den Status der Amazon EC2-Instanz und wartet auf die Initialisierung.

    • RunCommands:

      Führt Befehle auf der Instance aus, um die Amazon MWAA-Abhängigkeiten zu überprüfen und bei Bedarf Wheel-Dateien herunterzuladen.

    • Cleanup:

      Bereinigt die erstellten Ressourcen, indem der Stapel gelöscht wird. CloudFormation

    • GenerateReport:

      Generiert den Abschlussbericht auf der Grundlage der Ergebnisse der vorherigen Schritte und lädt den Bericht in den Amazon S3-Bucket hoch.

  7. Nach Abschluss der Automatisierung finden Sie im Abschnitt Ausgaben detaillierte Ausführungsergebnisse.

Referenzen

Systems Manager Automation