本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 連線至 Apache Oozie 工作流程 AWS Schema Conversion Tool
您可以使用 AWS SCT 命令列界面 (CLI) 將 Apache Oozie 工作流程轉換為 AWS Step Functions。將 Apache Hadoop 工作負載遷移至 Amazon EMR 之後,您可以在 中使用原生服務 AWS 雲端 來協調您的任務。如需詳細資訊,請參閱連線至 Apache Hadoop。
AWS SCT 會將 Oozie 工作流程轉換為 AWS Step Functions ,並使用 AWS Lambda 模擬 AWS Step Functions 不支援的功能。此外, 會將 Oozie 任務屬性 AWS SCT 轉換為 AWS Systems Manager。
若要轉換 Apache Oozie 工作流程,請確定您使用 1 AWS SCT .0.671 版或更新版本。此外,請熟悉 的命令列界面 AWS SCT。如需詳細資訊,請參閱的 CLI 參考 AWS Schema Conversion Tool。
使用 Apache Oozie 做為來源的先決條件
使用 AWS SCT CLI 連線至 Apache Oozie 需要下列先決條件。
-
建立 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 來源檔案。
在 CLI 中連線至 Apache AWS SCT Oozie
-
建立新的 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 做為目標。
在 CLI AWS SCTAWS Step Functions 中連線至
-
開啟您的 CLI 指令碼,其中包含 Apache Oozie 來源檔案的連線資訊。
-
使用
AddTarget
命令在 AWS SCT 專案中新增遷移目標的相關資訊。請確定您使用vendor
參數STEP_FUNCTIONS
的值。此外,請為下列必要參數提供值:name
和profile
。下列程式碼範例會在您的 AWS SCT 專案中新增 AWS Step Functions 做為來源。此範例會建立名為 的目標物件
AWS_STEP_FUNCTIONS
。當您建立映射規則時,請使用此物件名稱。此外,此範例會使用您在先決條件步驟中建立 AWS SCT 的服務設定檔。請確定您使用設定檔的名稱取代 profile_name
。AddTarget -name: 'AWS_STEP_FUNCTIONS' -vendor: 'STEP_FUNCTIONS' -profile: '
profile_name
' /如果您不使用 AWS 服務設定檔,請確定您提供下列必要參數的值:
accessKey
、awsRegion
、secretKey
和s3Path
。使用這些參數來指定您的 AWS 秘密存取金鑰、 AWS 秘密金鑰 AWS 區域、 以及 Amazon S3 儲存貯體的路徑。 -
AWS Step Functions 使用
ConnectTarget
命令連線至 。使用您在上一個步驟中定義的目標物件名稱。下列程式碼範例會使用 AWS 服務設定檔連線至
AWS_STEP_FUNCTIONS
目標物件。請確定您使用設定檔的名稱取代 profile_name
。ConnectTarget -name: 'AWS_STEP_FUNCTIONS' -profile: '
profile_name
' / -
儲存您的 CLI 指令碼。接下來,新增映射規則和遷移命令。如需詳細資訊,請參閱轉換 Oozie 工作流程;。