Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
AWSSupport-ValidateMWAADependencies
Descrizione
Il AWSSupport-ValidateMWAADependencies runbook convalida le dipendenze Python dell'ambiente Amazon Managed Workflows for Apache Airflow (Amazon MWAA). A tale scopo, esegue il comando di test amazon-mwaa-docker-images su un'istanza Amazon EC2. Ciò verifica che i tuoi pacchetti Python funzionino con la versione di Airflow di destinazione. Inoltre, crea pacchetti di file wheel per ambienti senza accesso alla rete pubblica.
Casi d'uso:
Convalida delle dipendenze: verifica che le dipendenze (file dei requisiti) con vincoli predefiniti o personalizzati siano compatibili prima di effettuare l'upgrade o il downgrade dell'ambiente Amazon MWAA a una versione Airflow specifica.
Package Wheel Files: genera file wheel impacchettati
plugins.zipper ambienti che non hanno accesso alla rete pubblica.
Importante
Questa automazione comporta costi aggiuntivi AWS . L'automazione fornisce un'istanza t3.large Amazon EC2 con un gp3 volume di 50 GB nel tuo account tramite. CloudFormation Questa istanza recupera l'archivio amazon-mwaa-docker-images, convalida le dipendenze e impacchetta i file wheel. L'istanza viene terminata automaticamente dopo l'esecuzione.
Nota
Se vengono rilevati moduli Python non supportati: per i moduli con versione, la versione specifica viene aggiornata o rimossa e il comando test viene eseguito nuovamente. Per i moduli senza versione, il modulo viene commentato e il comando test viene eseguito nuovamente. Questo processo continua fino al supporto di tutti i moduli o fino al raggiungimento del limite massimo di tentativi (20 tentativi).
Il pacchetto del file Wheel viene eseguito solo quando il file dei requisiti contiene una
--find-linksdirettiva che punta al percorso del plugin e al flag.--no-indexIl file dei requisiti e il file dei vincoli personalizzati devono essere archiviati nel bucket Amazon S3 specificato nei parametri di input. Tutti i file generati, inclusi il
requirements.txtfile aggiornato,plugins.zipil file (se applicabile), i log e il report, vengono caricati nello stesso bucket Amazon S3.Questo runbook supporta solo Airflow versione 2.9.2 e successive. Se è richiesta la convalida per una versione precedente, usa aws-mwaa-local-runner.
Come funziona?
Il runbook esegue i seguenti passaggi:
Verifica se il bucket Amazon S3 di destinazione concede potenzialmente l'accesso pubblico in lettura o scrittura ai suoi oggetti.
Convalida i parametri di input tra cui le autorizzazioni IAM, la posizione e la proprietà del bucket Amazon S3, l'esistenza dei file, la versione di Airflow di destinazione e l'accesso alla rete pubblica di sottorete.
Recupera l'ultima AMI Amazon Linux 2023.
Crea uno CloudFormation stack che include un ruolo IAM, un profilo di istanza, un gruppo di sicurezza e un'istanza Amazon EC2 runner Amazon MWAA.
Attende l'inizializzazione dell'istanza Amazon EC2.
Esegue comandi sull'istanza per convalidare le dipendenze di Amazon MWAA e scaricare i file wheel, se necessario.
Pulisce le risorse create eliminando lo stack. CloudFormation
Genera il report finale e lo carica nel bucket Amazon S3.
Esegui questa automazione (console)
Tipo di documento
Automazione
Proprietario
Amazon
Piattaforme
/
Autorizzazioni IAM richieste
Il AutomationAssumeRole parametro richiede le seguenti azioni per utilizzare correttamente il runbook.
formazione di nuvole: CreateStack
formazione di nuvole: DeleteStack
formazione di nuvole: 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
obiettivo: AddRoleToInstanceProfile
Io sono: AttachRolePolicy
Io sono: CreateInstanceProfile
Io sono: CreateRole
Io sono: DeleteInstanceProfile
Io sono: DeleteRole
Io sono: DeleteRolePolicy
Io sono: DetachRolePolicy
Io sono: GetInstanceProfile
Io sono: GetRole
Io sono: GetRolePolicy
Io sono: PassRole
Io sono: PutRolePolicy
Io sono: RemoveRoleFromInstanceProfile
Io sono: SimulatePrincipalPolicy
Io sono: 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
set: GetCallerIdentity
Politica di esempio:
{ "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" } } } ] }
Istruzioni
Segui questi passaggi per configurare l'automazione:
-
Accedere
AWSSupport-ValidateMWAADependenciesa Systems Manager nella sezione Documenti. -
Scegli Esegui automazione. Assicurati che il tuo ruolo IAM disponga delle autorizzazioni richieste elencate nella sezione sulle autorizzazioni precedente prima dell'esecuzione.
-
Per i parametri di input, inserisci quanto segue:
-
S3BucketName (Obbligatorio):
Inserisci il nome del bucket Amazon S3 nel tuo account in cui desideri caricare i log di risoluzione dei problemi. Assicurati che la policy del bucket non conceda read/write autorizzazioni non necessarie a parti che non hanno bisogno di accedere ai log raccolti.
-
RequirementsFilePath (Obbligatorio):
La chiave oggetto Amazon S3 del file dei requisiti nel bucket Amazon S3. Deve terminare con l'estensione.
.txt -
ConstraintsFilePath (Facoltativo):
La chiave oggetto Amazon S3 del file dei vincoli personalizzati nel bucket Amazon S3. Deve terminare con l'estensione, se fornita.
.txt -
TargetAirflowVersion (Obbligatorio):
La versione Airflow da utilizzare per convalidare le dipendenze. La versione di destinazione deve essere supportata da Amazon MWAA. Formato:
X.Y.Z(ad es.).2.9.2 -
SubnetId (Obbligatorio):
La sottorete con accesso alla rete pubblica per avviare l'istanza Amazon EC2 di Amazon MWAA runner. Formato:.
subnet-xxxxxxxxx -
AutomationAssumeRole (Opzionale):
L'Amazon Resource Name (ARN) del ruolo IAM che consente a Systems Manager Automation di eseguire le azioni per tuo conto. Se non viene specificato alcun ruolo, Systems Manager Automation utilizza le autorizzazioni dell'utente che avvia questo runbook.
-
AcknowledgeIAMPolicyWarnings (Obbligatorio):
Questo runbook verifica preventivamente se il tuo ruolo IAM dispone delle autorizzazioni richieste utilizzando. SimulatePrincipalPolicy Questo controllo può produrre risultati imprecisi se la policy utilizza condizioni o restrizioni a livello di risorsa. Seleziona
YESper confermarlo e procedi.
-
-
Scegli Esegui.
-
L'automazione viene avviata.
-
Il documento esegue le seguenti operazioni:
-
GetBucketPublicStatus:Verifica se il bucket Amazon S3 di destinazione concede potenzialmente l'accesso pubblico in lettura o scrittura ai suoi oggetti.
-
ValidateInput:Convalida i parametri di input tra cui le autorizzazioni IAM, la posizione e la proprietà del bucket Amazon S3, l'esistenza dei file, la versione di Airflow di destinazione e l'accesso alla rete pubblica di sottorete.
-
BranchOnValidationResult:Suddivide il flusso di lavoro in base alla validità dei parametri di input.
-
GetLatestAMI:Recupera l'immagine AMI più recente per Amazon Linux 2023.
-
CreateMWAARunnerStack:Crea uno CloudFormation stack che include un ruolo IAM, un profilo di istanza, un gruppo di sicurezza e un'istanza Amazon EC2 runner Amazon MWAA.
-
GetInstanceId:Recupera l'ID dell'istanza Amazon EC2 dall'output CloudFormation dello stack.
-
WaitForInstanceInitialization:Verifica lo stato dell'istanza Amazon EC2 e attende l'inizializzazione.
-
RunCommands:Esegue comandi sull'istanza per convalidare le dipendenze di Amazon MWAA e scaricare i file wheel, se necessario.
-
Cleanup:Pulisce le risorse create eliminando lo stack. CloudFormation
-
GenerateReport:Genera il report finale in base all'output dei passaggi precedenti e lo carica nel bucket Amazon S3.
-
-
Una volta completata l'automazione, consulta la sezione Output per i risultati di esecuzione dettagliati.
Riferimenti
Systems Manager Automation