Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
AWSSupport-ValidateMWAADependencies
Descripción
El AWSSupport-ValidateMWAADependencies manual valida las dependencias de Python del entorno Amazon Managed Workflows para el entorno Apache Airflow (Amazon MWAA). Para ello, ejecuta el comando amazon-mwaa-docker-images test en una instancia de Amazon EC2. Esto valida que sus paquetes de Python funcionen con la versión de Airflow de destino. También empaqueta archivos Wheel para entornos sin acceso a la red pública.
Casos de uso:
Validación de dependencias: compruebe que las dependencias (archivo de requisitos) con restricciones predeterminadas o personalizadas sean compatibles antes de actualizar o degradar el entorno de Amazon MWAA a una versión específica de Airflow.
Package Wheel Files: genere archivos de ruedas empaquetados
plugins.zippara entornos que carecen de acceso a la red pública.
importante
Esta automatización conlleva AWS costes adicionales. La automatización t3.large aprovisiona una instancia de Amazon EC2 con un gp3 volumen de 50 GB en su cuenta mediante. CloudFormation Esta instancia busca el repositorio amazon-mwaa-docker-images, valida las dependencias y empaqueta los archivos de rueda. La instancia finaliza automáticamente tras la ejecución.
nota
Si se detectan módulos de Python no compatibles: en el caso de los módulos versionados, la versión específica se actualiza o elimina y el comando test se vuelve a ejecutar. En el caso de los módulos no versionados, se comenta el módulo y se vuelve a ejecutar el comando test. Este proceso continúa hasta que se admitan todos los módulos o se alcance el límite máximo de reintentos (20 intentos).
El empaquetado de archivos Wheel solo se ejecuta cuando el archivo de requisitos contiene una
--find-linksdirectiva que apunta a la ruta del complemento y a la--no-indexbandera.El archivo de requisitos y el archivo de restricciones personalizadas deben almacenarse en el bucket de Amazon S3 especificado en los parámetros de entrada. Todos los archivos generados, incluidos el
requirements.txtarchivo actualizado, elplugins.ziparchivo (si corresponde), los registros y el informe, se cargan en el mismo bucket de Amazon S3.Este manual solo es compatible con la versión 2.9.2 y posteriores de Airflow. Si se requiere la validación de una versión anterior, utilice aws-mwaa-local-runner.
¿Cómo funciona?
El manual de ejecución realiza los siguientes pasos:
Comprueba si el bucket de Amazon S3 de destino puede conceder acceso público de lectura o escritura a sus objetos.
Valida los parámetros de entrada, incluidos los permisos de IAM, la ubicación y propiedad del bucket de Amazon S3, la existencia del archivo, la versión de Airflow de destino y el acceso a la red pública a la subred.
Recupera la última AMI de Amazon Linux 2023.
Crea una CloudFormation pila que incluye un rol de IAM, un perfil de instancia, un grupo de seguridad y una instancia Amazon EC2 que ejecuta Amazon MWAA.
Espera a que se inicialice la instancia de Amazon EC2.
Ejecuta comandos en la instancia para validar las dependencias de Amazon MWAA y descargar los archivos de rueda si es necesario.
Elimina la pila para limpiar los recursos creados. CloudFormation
Genera el informe final y lo carga en el bucket de Amazon S3.
Ejecuta esta automatización (consola)
Tipo de documento
Automatización
Propietario
Amazon
Plataformas
/
Permisos de IAM necesarios
El parámetro AutomationAssumeRole requiere las siguientes acciones para utilizar el manual de procedimientos correctamente.
formación de nubes: CreateStack
formación de nubes: DeleteStack
formación de nubes: 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
objetivo: AddRoleToInstanceProfile
objetivo: AttachRolePolicy
objetivo: CreateInstanceProfile
objetivo: CreateRole
objetivo: DeleteInstanceProfile
objetivo: DeleteRole
objetivo: DeleteRolePolicy
objetivo: DetachRolePolicy
objetivo: GetInstanceProfile
objetivo: GetRole
objetivo: GetRolePolicy
objetivo: PassRole
objetivo: PutRolePolicy
objetivo: RemoveRoleFromInstanceProfile
objetivo: SimulatePrincipalPolicy
objetivo: 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
conjuntos: GetCallerIdentity
Ejemplo de política:
{ "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" } } } ] }
Instrucciones
Siga estos pasos para configurar la automatización:
-
Navegue hasta Systems Manager
AWSSupport-ValidateMWAADependenciesen la sección de documentos. -
Elija Ejecutar automatización. Asegúrese de que su función de IAM tenga los permisos necesarios enumerados en la sección de permisos anterior antes de ejecutarla.
-
Para los parámetros de entrada, introduzca lo siguiente:
-
S3BucketName (Obligatorio):
Introduzca el nombre del bucket de Amazon S3 de su cuenta en el que desea cargar los registros de solución de problemas. Asegúrese de que la política de cubos no conceda read/write permisos innecesarios a las partes que no necesiten acceder a los registros recopilados.
-
RequirementsFilePath (Obligatorio):
La clave de objeto de Amazon S3 del archivo de requisitos del bucket de Amazon S3. Debe terminar con la
.txtextensión. -
ConstraintsFilePath (Opcional):
La clave de objeto de Amazon S3 del archivo de restricciones personalizadas del bucket de Amazon S3. Debe terminar con la
.txtextensión si se proporciona. -
TargetAirflowVersion (Obligatorio):
La versión Airflow que se utilizará para validar las dependencias. La versión de destino debe ser compatible con Amazon MWAA. Formato:
X.Y.Z(por ejemplo,2.9.2). -
SubnetId (Obligatorio):
La subred que tiene acceso a la red pública para lanzar la instancia Amazon EC2 del ejecutor de Amazon MWAA. Formato:
subnet-xxxxxxxxx. -
AutomationAssumeRole (Opcional):
El nombre del recurso de Amazon (ARN) de la función de IAM que permite a Systems Manager Automation realizar las acciones en su nombre. Si no se especifica ningún rol, Systems Manager Automation utiliza los permisos del usuario que comienza este manual de procedimientos.
-
AcknowledgeIAMPolicyWarnings (Obligatorio):
Este manual comprueba previamente si su función de IAM tiene los permisos necesarios mediante. SimulatePrincipalPolicy Esta comprobación puede producir resultados inexactos si su política utiliza condiciones o restricciones a nivel de recursos. Seleccione esta opción
YESpara confirmarlo y continuar.
-
-
Elija Ejecutar.
-
Se inicia la automatización.
-
Este documento realiza los siguientes pasos:
-
GetBucketPublicStatus:Comprueba si el bucket de Amazon S3 de destino puede conceder acceso público de lectura o escritura a sus objetos.
-
ValidateInput:Valida los parámetros de entrada, incluidos los permisos de IAM, la ubicación y propiedad del bucket de Amazon S3, la existencia del archivo, la versión de Airflow de destino y el acceso a la red pública a la subred.
-
BranchOnValidationResult:Ramifica el flujo de trabajo en función de si los parámetros de entrada son válidos.
-
GetLatestAMI:Recupera la imagen de AMI más reciente para Amazon Linux 2023.
-
CreateMWAARunnerStack:Crea una CloudFormation pila que incluye un rol de IAM, un perfil de instancia, un grupo de seguridad y una instancia Amazon EC2 que ejecuta Amazon MWAA.
-
GetInstanceId:Recupera el ID de instancia de Amazon EC2 de la salida de CloudFormation la pila.
-
WaitForInstanceInitialization:Comprueba el estado de la instancia Amazon EC2 y espera a que se inicialice.
-
RunCommands:Ejecuta comandos en la instancia para validar las dependencias de Amazon MWAA y descargar los archivos de rueda si es necesario.
-
Cleanup:Elimina la pila para limpiar los recursos creados. CloudFormation
-
GenerateReport:Genera el informe final en función de los resultados de los pasos anteriores y lo carga en el bucket de Amazon S3.
-
-
Una vez completada la automatización, consulte la sección de resultados para ver los resultados de ejecución detallados.
Referencias
Automatización de Systems Manager