本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用连接到 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
-
创建新 AWS SCT CLI脚本或编辑现有场景模板。例如,您可以下载和编辑
OozieConversionTemplate.scts
模板。有关更多信息,请参阅 获取CLI场景。 -
配置 AWS SCT 应用程序设置。
以下代码示例保存了应用程序设置并允许在项目中存储密码。您可以在其他项目中使用这些保存的设置。
SetGlobalSettings -save: 'true' -settings: '{ "store_password": "true" }' /
-
创建新 AWS SCT 项目。
以下代码示例在
c:\sct
文件夹中创建oozie
项目。CreateProject -name: 'oozie' -directory: 'c:\sct' /
-
使用
AddSource
命令将包含源 Apache Oozie 文件的文件夹添加到项目中。确保使用vendor
参数的APACHE_OOZIE
值。此外,还要提供以下必需参数的值:name
和mappingsFolder
。以下代码示例将 Apache Oozie 作为源代码添加到您的 AWS SCT 项目中。此示例创建了一个名为
OOZIE
的源对象。使用此对象名称添加映射规则。运行此代码示例后, AWS SCT 使用该c:\oozie
文件夹将源文件加载到项目中。AddSource -name: 'OOZIE' -vendor: 'APACHE_OOZIE' -mappingsFolder: 'c:\oozie' /
您可以在 Windows 中使用此示例和以下示例。
-
使用
ConnectSource
命令连接到源 Apache Oozie 文件。使用在上一步骤中定义的源对象的名称。ConnectSource -name: 'OOZIE' -mappingsFolder: 'c:\oozie' /
-
保存您的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
-
打开你的CLI脚本,其中包含你的 Apache Oozie 源文件的连接信息。
-
使用
AddTarget
命令在 AWS SCT 项目中添加有关您的迁移目标的信息。确保使用vendor
参数的STEP_FUNCTIONS
值。此外,还要提供以下必需参数的值:name
和profile
。以下代码示例 AWS Step Functions 作为源代码添加到您的 AWS SCT 项目中。此示例创建了一个名为
AWS_STEP_FUNCTIONS
的目标对象。创建映射规则时使用此对象名称。此外,此示例还使用您在先决条件步骤中创建的 AWS SCT 服务配置文件。请务必更换profile_name
用你的个人资料的名字。AddTarget -name: 'AWS_STEP_FUNCTIONS' -vendor: 'STEP_FUNCTIONS' -profile: '
profile_name
' /如果您不使用 AWS 服务配置文件,请确保为以下必填参数提供值:
accessKey
、secretKey
awsRegion
、和s3Path
。使用这些参数来指定您的 AWS 私有访问密钥、 AWS 私有密钥和 Amazon S3 存储桶的路径。 AWS 区域 -
AWS Step Functions 使用
ConnectTarget
命令连接到。使用在上一步骤中定义的目标对象的名称。以下代码示例使用 AWS 服务配置文件连接到
AWS_STEP_FUNCTIONS
目标对象。请务必更换profile_name
用你的个人资料的名字。ConnectTarget -name: 'AWS_STEP_FUNCTIONS' -profile: '
profile_name
' / -
保存您的CLI脚本。接下来,添加映射规则和迁移命令。有关更多信息,请参阅 转换 Oozie 工作流程;。