使用连接到 Apache Oozie 工作流程 AWS Schema Conversion Tool - AWS Schema Conversion Tool

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用连接到 Apache Oozie 工作流程 AWS Schema Conversion Tool

你可以使用 AWS SCT 命令行界面 (CLI) 将 Apache Oozie 工作流程转换为。 AWS Step Functions将 Apache Hadoop 工作负载迁移到 Amazon 后EMR,您可以使用中的原生服务 AWS Cloud 来编排任务。有关更多信息,请参阅 正在连接到 Apache Hadoop

AWS SCT 将你的 Oozie 工作流程转换为 AWS Step Functions 不支持的功能, AWS Step Functions 并使用它 AWS Lambda 来模拟这些功能。此外,还可以 AWS SCT 将你的 Oozie 作业属性转换为。 AWS Systems Manager

要转换 Apache Oozie 工作流程,请确保使用 AWS SCT 版本 1.0.671 或更高版本。另外,请熟悉 AWS SCT的命令行界面。有关更多信息,请参阅 CLI的参考 AWS Schema Conversion Tool

使用 Apache Oozie 为源的先决条件

使用连接到 Apache Oozie 需要满足以下先决条件。 AWS SCT CLI

  • 创建 Amazon S3 存储桶以存储状态机的定义。您可以使用这些定义配置状态机。有关更多信息,请参阅《Amazon S3 用户指南》中的创建存储桶

  • 使用AmazonS3FullAccess策略创建 AWS Identity and Access Management (IAM) 角色。 AWS SCT 使用此IAM角色访问您的 Amazon S3 存储桶。

  • 记下您的 AWS 密钥和私有访问 AWS 密钥。有关 AWS 访问密钥的更多信息,请参阅《IAM用户指南》中的管理访问密钥

  • 将您的 AWS 证书和有关 Amazon S3 存储桶的信息存储在全局应用程序设置的 AWS 服务配置文件中。然后, AWS SCT 使用此 AWS 服务配置文件来处理您的 AWS 资源。有关更多信息,请参阅 在中管理个人资料 AWS Schema Conversion Tool

要使用源代码 Apache Oozie 工作流程, AWS SCT 需要源文件的特定结构。每个应用程序文件夹都必须包含 job.properties 文件。此文件包含任务属性的键值对。此外,每个应用程序文件夹都必须包含 workflow.xml 文件。此文件描述了工作流程的操作节点和控制流节点。

连接到作为源的 Apache Oozie

按照以下过程连接到 Apache Oozie 源文件。

要在 Apache Oozie 中连接 AWS SCT CLI
  1. 创建新 AWS SCT CLI脚本或编辑现有场景模板。例如,您可以下载和编辑 OozieConversionTemplate.scts 模板。有关更多信息,请参阅 获取CLI场景

  2. 配置 AWS SCT 应用程序设置。

    以下代码示例保存了应用程序设置并允许在项目中存储密码。您可以在其他项目中使用这些保存的设置。

    SetGlobalSettings -save: 'true' -settings: '{ "store_password": "true" }' /
  3. 创建新 AWS SCT 项目。

    以下代码示例在 c:\sct 文件夹中创建 oozie 项目。

    CreateProject -name: 'oozie' -directory: 'c:\sct' /
  4. 使用 AddSource 命令将包含源 Apache Oozie 文件的文件夹添加到项目中。确保使用 vendor 参数的 APACHE_OOZIE 值。此外,还要提供以下必需参数的值: namemappingsFolder

    以下代码示例将 Apache Oozie 作为源代码添加到您的 AWS SCT 项目中。此示例创建了一个名为 OOZIE 的源对象。使用此对象名称添加映射规则。运行此代码示例后, AWS SCT 使用该c:\oozie文件夹将源文件加载到项目中。

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

    您可以在 Windows 中使用此示例和以下示例。

  5. 使用 ConnectSource 命令连接到源 Apache Oozie 文件。使用在上一步骤中定义的源对象的名称。

    ConnectSource -name: 'OOZIE' -mappingsFolder: 'c:\oozie' /
  6. 保存您的CLI脚本。接下来,为您的 AWS Step Functions 服务添加连接信息。

使用扩展包中 AWS Lambda 函数的权限

对于 AWS Step Functions 不支持的源函数, AWS SCT 创建一个扩展包。此扩展包包含模仿源 AWS Lambda 函数的函数。

要使用此扩展包,请创建具有以下权限的 AWS Identity and Access Management (IAM) 角色。

{ "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:::*/*" ] } ] }

要应用扩展包, AWS SCT 需要具有以下权限的IAM角色。

{ "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" ] } ] }

以目标 AWS Step Functions 身份连接到

使用以下步骤 AWS Step Functions 作为目标进行连接。

要连接 AWS Step Functions 到 AWS SCT CLI
  1. 打开你的CLI脚本,其中包含你的 Apache Oozie 源文件的连接信息。

  2. 使用AddTarget命令在 AWS SCT 项目中添加有关您的迁移目标的信息。确保使用 vendor 参数的 STEP_FUNCTIONS 值。此外,还要提供以下必需参数的值: nameprofile

    以下代码示例 AWS Step Functions 作为源代码添加到您的 AWS SCT 项目中。此示例创建了一个名为 AWS_STEP_FUNCTIONS 的目标对象。创建映射规则时使用此对象名称。此外,此示例还使用您在先决条件步骤中创建的 AWS SCT 服务配置文件。请务必更换 profile_name 用你的个人资料的名字。

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

    如果您不使用 AWS 服务配置文件,请确保为以下必填参数提供值:accessKeysecretKeyawsRegion、和s3Path。使用这些参数来指定您的 AWS 私有访问密钥、 AWS 私有密钥和 Amazon S3 存储桶的路径。 AWS 区域

  3. AWS Step Functions 使用ConnectTarget命令连接到。使用在上一步骤中定义的目标对象的名称。

    以下代码示例使用 AWS 服务配置文件连接到 AWS_STEP_FUNCTIONS 目标对象。请务必更换 profile_name 用你的个人资料的名字。

    ConnectTarget -name: 'AWS_STEP_FUNCTIONS' -profile: 'profile_name' /
  4. 保存您的CLI脚本。接下来,添加映射规则和迁移命令。有关更多信息,请参阅 转换 Oozie 工作流程;