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 di Amazon Managed Workflows per l'ambiente Apache Airflow (Amazon MWAA). Lo fa eseguendo il comando amazon-mwaa-docker-images test su un'istanza Amazon EC2. Ciò conferma che i pacchetti Python funzionano con la versione Airflow di destinazione. Inoltre, impacchetta i 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 aggiornare o declassare l'ambiente Amazon MWAA a una versione specifica di Airflow.
Package Wheel Files: genera file wheel impacchettati per ambienti privi di accesso alla rete pubblica.
plugins.zip
Importante
Questa automazione comporta costi aggiuntivi AWS . L'automazione esegue il provisioning di un'istanza t3.large Amazon EC2 con un gp3 volume di 50 GB nel tuo account tramite. CloudFormation Questa istanza recupera il repository 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 al raggiungimento del limite massimo di tentativi (20 tentativi).
L'impacchettamento dei file Wheel viene eseguito solo quando il file dei requisiti contiene una
--find-linksdirettiva che punta al percorso di un 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, ilplugins.zipfile (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 del file, la versione Airflow di destinazione e l'accesso alla rete pubblica della sottorete.
Recupera l'AMI Amazon Linux 2023 più recente.
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 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 del cloud: 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
sono: AddRoleToInstanceProfile
sono: AttachRolePolicy
sono: CreateInstanceProfile
sono: CreateRole
sono: DeleteInstanceProfile
sono: DeleteRole
sono: DeleteRolePolicy
sono: DetachRolePolicy
sono: GetInstanceProfile
sono: GetRole
sono: GetRolePolicy
sono: PassRole
sono: PutRolePolicy
sono: RemoveRoleFromInstanceProfile
sono: SimulatePrincipalPolicy
sono: TagRole
s3: GetAccountPublicAccessBlock
s3: GetBucketAcl
s3: GetBucketLocation
s3: GetBucketPolicyStatus
s3: GetBucketPublicAccessBlock
s3: GetEncryptionConfiguration
s3: GetObject
s3: ListBucket
s3: PutObject
sms: DescribeInstanceInformation
sms: GetAutomationExecution
sms: GetCommandInvocation
sms: GetParameter
sms: ListCommandInvocations
sms: ListCommands
sms: SendCommand
sms: 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:
-
Accedi
AWSSupport-ValidateMWAADependenciesa Systems Manager nella sezione Documenti. -
Scegli Esegui automazione. Assicurati che il tuo ruolo IAM disponga delle autorizzazioni richieste elencate nella precedente sezione delle autorizzazioni 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 per la 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 (Opzionale):
La chiave oggetto Amazon S3 del file di vincoli personalizzati nel bucket Amazon S3. Deve terminare con l'
.txtestensione, se fornita. -
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 tua policy utilizza Condizioni o restrizioni a livello di risorsa. Seleziona questa opzione
YESper confermarlo e procedi.
-
-
Scegli Esegui.
-
L'automazione viene avviata.
-
Il documento esegue i seguenti passaggi:
-
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 del file, la versione Airflow di destinazione e l'accesso alla rete pubblica della 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 dello stack. CloudFormation
-
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 della ruota, 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