

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`
<a name="automation-awssupport-validatemwaadependencies"></a>

 **Beschreibung** 

Das `AWSSupport-ValidateMWAADependencies` Runbook validiert die 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 EC2-Instance ausgeführt. Dadurch wird bestätigt, dass Ihre Python-Pakete mit Ihrer Airflow-Zielversion funktionieren. Es verpackt auch Raddateien für Umgebungen ohne öffentlichen Netzwerkzugriff.

 **Anwendungsfälle:** 
+ **Überprüfung der Abhängigkeiten**: Stellen Sie sicher, dass Abhängigkeiten (Anforderungsdatei) mit standardmäßigen oder benutzerdefinierten Einschränkungen kompatibel sind, bevor Sie die Amazon MWAA-Umgebung auf eine bestimmte Airflow-Version aktualisieren oder herabstufen.
+ **Raddateien verpacken**: Generieren Sie gepackte Raddateien `plugins.zip` für Umgebungen ohne öffentlichen Netzwerkzugriff.

**Wichtig**  
Diese Automatisierung verursacht zusätzliche AWS Kosten. Die Automatisierung stellt eine `t3.large` Amazon EC2 EC2-Instance mit einem `gp3` Volumen von 50 GB in Ihrem Konto über CloudFormation bereit. Diese Instanz ruft das Amazon-mwaa-docker-images-Repository ab, validiert Abhängigkeiten und packt Raddateien. 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 Modulen ohne Version 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 benutzerdefinierten Einschränkungen müssen in dem Amazon S3 S3-Bucket gespeichert werden, der in den Eingabeparametern angegeben ist. Alle generierten Dateien, einschließlich der aktualisierten `requirements.txt` `plugins.zip` Datei, Datei (falls zutreffend), Protokolle und des Berichts, werden in denselben Amazon S3 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 S3-Ziel-Bucket möglicherweise öffentlichen Lese- oder Schreibzugriff auf seine Objekte gewährt.
+ Überprüft die Eingabeparameter wie IAM-Berechtigungen, Speicherort und Besitz des Amazon S3 S3-Buckets, Existenz von Dateien, Airflow-Zielversion und Zugriff auf das öffentliche Subnetz.
+ 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 umfasst.
+ Wartet auf die Initialisierung der Amazon EC2 EC2-Instance.
+ Führt Befehle auf der Instance aus, um die Amazon MWAA-Abhängigkeiten zu überprüfen und bei Bedarf Raddateien herunterzuladen.
+ Bereinigt die erstellten Ressourcen, indem der Stapel gelöscht wird. CloudFormation 
+ Generiert den Abschlussbericht und lädt ihn in den Amazon S3 S3-Bucket hoch.

 [Führen Sie diese Automatisierung aus (Konsole)](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-ValidateMWAADependencies) 

**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
+ sts: 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** 

Gehen Sie wie folgt vor, um die Automatisierung zu konfigurieren:

1. Navigieren Sie [`AWSSupport-ValidateMWAADependencies`](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-ValidateMWAADependencies/description)in Systems Manager unter dem Abschnitt Dokumente zu.

1. 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 mit den Berechtigungen aufgeführt sind.

1. Geben Sie für die Eingabeparameter Folgendes ein:
   + **S3BucketName (Erforderlich):**

     Geben Sie den Namen des Amazon S3 S3-Buckets in Ihrem Konto ein, in das Sie die Fehlerbehebungsprotokolle 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 S3-Objektschlüssel der Anforderungsdatei im Amazon S3 S3-Bucket. Muss mit der `.txt` Erweiterung enden.
   + **ConstraintsFilePath (Fakultativ):**

     Der Amazon S3 S3-Objektschlüssel der Datei mit benutzerdefinierten Einschränkungen im Amazon S3 S3-Bucket. Muss mit der `.txt` Erweiterung enden, falls angegeben.
   + **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 EC2-Instance mit Amazon MWAA-Runner zu starten. Format:. `subnet-xxxxxxxxx`
   + **AutomationAssumeRole (Fakultativ):**

     Der Amazon-Ressourcenname (ARN) der IAM-Rolle, der es Systems Manager Automation ermöglicht, die Aktionen in Ihrem Namen durchzufü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 Sie diese Option`YES`, um dies zu bestätigen und fortzufahren.

1. Wählen Sie **Ausführen**.

1. Die Automatisierung wird eingeleitet.

1. Das Dokument führt die folgenden Schritte aus:
   + **`GetBucketPublicStatus`**:

     Prüft, ob der Amazon S3 S3-Ziel-Bucket möglicherweise öffentlichen Lese- oder Schreibzugriff auf seine Objekte gewährt.
   + **`ValidateInput`**:

     Überprüft die Eingabeparameter wie IAM-Berechtigungen, Speicherort und Besitz des Amazon S3 S3-Buckets, Existenz von Dateien, Airflow-Zielversion und Zugriff auf das öffentliche Subnetz.
   + **`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 EC2-Instance mit Amazon MWAA-Runner umfasst.
   + **`GetInstanceId`**:

     Ruft die Amazon EC2 EC2-Instance-ID aus der CloudFormation Stack-Ausgabe ab.
   + **`WaitForInstanceInitialization`**:

     Prüft den Status der Amazon EC2 EC2-Instance 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 Raddateien 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 S3-Bucket hoch.

1. Nachdem die Automatisierung abgeschlossen ist, finden Sie im Abschnitt „Ausgaben“ detaillierte Ausführungsergebnisse.

**Referenzen**

Systems Manager Automation
+ [Führen Sie diese Automatisierung aus (Konsole)](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-ValidateMWAADependencies/description)
+ [Führen Sie eine Automatisierung aus](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-working-executing.html)
+ [Eine Automatisierung einrichten](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup.html)
+ [Support Sie Automatisierungs-Workflows](https://aws.amazon.com/premiumsupport/technology/saw/)