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.zipfü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-linksDirektive enthält, die auf einen Plugin-Pfad und das--no-indexFlag 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.txtplugins.zipDatei, 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:
-
Navigieren Sie
AWSSupport-ValidateMWAADependenciesim Systems Manager im Abschnitt Dokumente zu. -
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.
-
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
.txtErweiterung enden. -
ConstraintsFilePath (Fakultativ):
Der Amazon S3-Objektschlüssel der Datei mit benutzerdefinierten Einschränkungen im Amazon S3-Bucket. Muss mit der
.txtErweiterung 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 Sie
YES, um dies zu bestätigen und fortzufahren.
-
-
Wählen Sie Ausführen.
-
Die Automatisierung wird initiiert.
-
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.
-
-
Nach Abschluss der Automatisierung finden Sie im Abschnitt Ausgaben detaillierte Ausführungsergebnisse.
Referenzen
Systems Manager Automation