Usar Apache Oozie como origen para AWS SCT - AWS Schema Conversion Tool

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.

Usar Apache Oozie como origen para AWS SCT

Puede utilizar la interfaz de la línea de comandos (CLI) de AWS SCT para convertir los flujos de trabajo de Apache Oozie en. AWS Step Functions Tras migrar las cargas de trabajo de Apache Hadoop a Amazon EMR, puede utilizar un servicio nativo en la Nube de AWS para organizar sus trabajos. Para obtener más información, consulte Usar Apache Hadoop como origen.

AWS SCT convierte sus flujos de trabajo de Oozie a AWS Step Functions y utiliza AWS Lambda para simular características que AWS Step Functions no admite. Además, AWS SCT convierte las propiedades del trabajo de Oozie a AWS Systems Manager.

Para convertir los flujos de trabajo de Apache Oozie, utilice la versión 1.0.671 o posterior de AWS SCT. Además, familiarícese con la interfaz de la línea de comandos de AWS SCT. Para obtener más información, consulte AWS SCT Referencia CLI.

Requisitos previos para utilizar Apache Oozie como origen

Estos son los requisitos previos necesarios para conectarse a Apache Oozie con la CLI de AWS SCT.

  • Cree un bucket de Amazon S3 para almacenar las definiciones de las máquinas de estado. Puede usar estas definiciones para configurar sus máquinas de estado. Para obtener más información, consulte Crear un bucket en la Guía del usuario de Amazon S3.

  • Cree un rol AWS Identity and Access Management (de IAM) con la política de AmazonS3FullAccess. AWS SCT utiliza este rol de IAM para acceder a su bucket de Amazon S3.

  • Anote su clave secreta de AWS y su clave de acceso secreta de AWS. Para obtener más información acerca de las claves de acceso de AWS, consulte Administrar claves de acceso en la Guía del usuario de IAM.

  • Guarde las credenciales de AWS y la información sobre el bucket de Amazon S3 en el perfil de servicios de AWS en la configuración global de la aplicación. A continuación, AWS SCT utiliza este perfil de servicios de AWS para trabajar con sus recursos de AWS. Para obtener más información, consulte Almacenamiento de perfiles de servicio de AWS en AWS SCT.

Para trabajar con los flujos de trabajo de Apache Oozie de origen, AWS SCT requiere la estructura específica de los archivos de origen. Cada una de las carpetas de la aplicación debe incluir el archivo job.properties. Este archivo incluye pares clave-valor de las propiedades del trabajo. Además, cada una de las carpetas de la aplicación debe incluir el archivo workflow.xml. Este archivo describe los nodos de acción y los nodos de flujo de control del flujo de trabajo.

Conectar a Apache Oozie como origen

Utilice el siguiente procedimiento para conectarse a los archivos de origen de Apache Oozie.

Para conectarse a Apache Oozie en la CLI de AWS SCT
  1. Cree un script de la CLI de AWS SCT nuevo o edite una plantilla de escenario existente. Por ejemplo, puede descargar y editar la plantilla de OozieConversionTemplate.scts. Para obtener más información, consulte Obtención de escenarios de la CLI.

  2. Configure la configuración de aplicación de AWS SCT.

    El siguiente ejemplo de código guarda la configuración de aplicación y permite almacenar las contraseñas en el proyecto. Puede utilizar esta configuración guardada en otros proyectos.

    SetGlobalSettings -save: 'true' -settings: '{ "store_password": "true" }' /
  3. Cree un proyecto de AWS SCT nuevo.

    El siguiente ejemplo de código crea el proyecto de oozie en la carpeta c:\sct.

    CreateProject -name: 'oozie' -directory: 'c:\sct' /
  4. Agregue la carpeta con los archivos de Apache Oozie de origen al proyecto mediante el comando AddSource. Utilice el valor APACHE_OOZIE para el parámetro vendor. Además, proporcione valores para los siguientes parámetros obligatorios: name y mappingsFolder.

    El siguiente ejemplo de código agrega Apache Oozie como origen al proyecto de AWS SCT. En este ejemplo, se crea un objeto de origen con el nombreOOZIE. Utilice este nombre de objeto para añadir reglas de asignación. Tras ejecutar este ejemplo de código, AWS SCT utiliza la carpeta c:\ooziepara cargar los archivos de origen en el proyecto.

    AddSource -name: 'OOZIE' -vendor: 'APACHE_OOZIE' -mappingsFolder: 'c:\oozie' /

    Puede usar este ejemplo y los ejemplos siguientes en Windows.

  5. Conéctese a sus archivos de Apache Oozie de origen mediante el comando ConnectSource. Utilice el nombre del objeto de origen que definió en el paso anterior.

    ConnectSource -name: 'OOZIE' -mappingsFolder: 'c:\oozie' /
  6. Guarde el script de la CLI. A continuación, agregue la información de conexión para su servicio AWS Step Functions.

Permisos para usar funciones de AWS Lambda en el paquete de extensión

Para las funciones de origen fuente que AWS Step Functions no admite, AWS SCT crea un paquete de extensión. Este paquete de extensión incluye funciones de AWS Lambda que simulan las funciones de origen.

Para usar este paquete de extensión, cree un rol de AWS Identity and Access Management (IAM) con los siguientes permisos.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "lambda", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:*:498160209112:function:LoadParameterInitialState:*", "arn:aws:lambda:*:498160209112:function:EvaluateJSPELExpressions:*" ] }, { "Sid": "emr", "Effect": "Allow", "Action": [ "elasticmapreduce:DescribeStep", "elasticmapreduce:AddJobFlowSteps" ], "Resource": [ "arn:aws:elasticmapreduce:*:498160209112:cluster/*" ] }, { "Sid": "s3", "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::*/*" ] } ] }

Para aplicar el paquete de extensión, AWS SCT necesita un rol de IAM con los siguientes permisos.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:GetRole", "iam:ListRolePolicies", "iam:CreateRole", "iam:TagRole", "iam:PutRolePolicy", "iam:DeleteRolePolicy", "iam:DeleteRole", "iam:PassRole" ], "Resource": [ "arn:aws:iam::ACCOUNT_NUMBER:role/sct/*" ] }, { "Effect": "Allow", "Action": [ "iam:GetRole", "iam:ListRolePolicies" ], "Resource": [ "arn:aws:iam::ACCOUNT_NUMBER:role/lambda_LoadParameterInitialStateRole", "arn:aws:iam::ACCOUNT_NUMBER:role/lambda_EvaluateJSPELExpressionsRole", "arn:aws:iam::ACCOUNT_NUMBER:role/stepFunctions_MigratedOozieWorkflowRole" ] }, { "Effect": "Allow", "Action": [ "lambda:GetFunction", "lambda:CreateFunction", "lambda:UpdateFunctionCode", "lambda:DeleteFunction" ], "Resource": [ "arn:aws:lambda:*:ACCOUNT_NUMBER:function:LoadParameterInitialState", "arn:aws:lambda:*:ACCOUNT_NUMBER:function:EvaluateJSPELExpressions" ] } ] }

Conexión a AWS Step Functions como origen

Utilice el siguiente procedimiento para conectarse a AWS Step Functions como origen.

Para conectarse a AWS Step Functions en la CLI de AWS SCT
  1. Abra el script de la CLI que incluye la información de conexión de los archivos de origen de Apache Oozie.

  2. Agregue la información sobre su origen de migración al proyecto de AWS SCT el comando AddTarget. Utilice el valor STEP_FUNCTIONS para el parámetro vendor. Además, proporcione valores para los siguientes parámetros obligatorios: name y profile.

    El siguiente ejemplo de código agrega AWS Step Functions como origen a su proyecto de AWS SCT. En este ejemplo, se crea un objeto de origen con el nombreAWS_STEP_FUNCTIONS. Utilice este nombre de objeto al crear reglas de asignación. Además, en este ejemplo se utiliza el perfil de servicios de AWS SCT que creó en el paso de requisitos previos. Sustituya profile_name por el nombre del perfil.

    AddTarget -name: 'AWS_STEP_FUNCTIONS' -vendor: 'STEP_FUNCTIONS' -profile: 'profile_name' /

    Si no usa el perfil de servicios de AWS, proporcione valores para los siguientes parámetros obligatorios:accessKey, secretKey, awsRegion y s3Path. Utilice estos parámetros para especificar la clave de acceso secreta de AWS, la clave secreta de AWS, la Región de AWS y la ruta a su bucket de Amazon S3.

  3. Conéctese a AWS Step Functions mediante el comando ConnectTarget. Utilice el nombre del objeto de origen que definió en el paso anterior.

    El siguiente ejemplo de código se conecta al objeto de destino de AWS_STEP_FUNCTIONS utilizando su perfil de servicios de AWS. Sustituya profile_name por el nombre del perfil.

    ConnectTarget -name: 'AWS_STEP_FUNCTIONS' -profile: 'profile_name' /
  4. Guarde el script de la CLI. A continuación, añada reglas de asignación y comandos de migración. Para obtener más información, consulte Conversión de Apache Oozie a AWS Step Functions .