使用阿帕奇奧西作為來源 AWS SCT - AWS Schema Conversion Tool

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用阿帕奇奧西作為來源 AWS SCT

您可以使用命AWS SCT令列介面 (CLI) 將 Apache 工作流程轉換為. AWS Step Functions 將 Apache Hadoop 工作負載移轉至 Amazon EMR 之後,您可以使用中的原生服務AWS 雲端來協調您的任務。如需詳細資訊,請參閱使用阿帕奇 Hadoop 作為源

AWS SCT將您的 Oozie 工作流程轉換為AWS Step Functions並用AWS Lambda來模擬AWS Step Functions不支援的功能。此外,AWS SCT將您的 Oozie 工作屬性轉換為AWS Systems Manager。

若要轉換 Apache 工作流程,請確定您使用的是 1.0.671 或更高AWS SCT版本。此外,請熟悉的指令行介面。AWS SCT如需詳細資訊,請參閱AWS SCT CLI 參考資料

使用阿帕奇作為源代碼的先決條件

要使用 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服務設定檔儲存在AWS SCT

若要使用來源 Apache Oozie 工作流程,AWS SCT需要來源檔案的特定結構。您的每個應用程式資料夾都必須包含該job.properties檔案。此檔案包含工作屬性的索引鍵值組。此外,每個應用程式資料夾都必須包含該workflow.xml檔案。此檔案描述工作流程的動作節點和控制流程節點。

連接到阿帕奇奧西作為源

使用以下過程來連接到您的 Apache Oozie 源文件。

若要在 CLI 中連接到阿帕奇 AWS SCT
  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命令連接到您的源阿帕奇 Ozie 文件。使用您在上一個步驟中定義的來源物件名稱。

    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 SCT CLI AWS Step Functions 中連線到
  1. 打開您的 CLI 腳本,其中包括您的 Apache Oozie 源文件的連接信息。

  2. 使用AddTarget指令在AWS SCT專案中加入有關移轉目標的資訊。請確定您使用vendor參數的STEP_FUNCTIONS值。此外,請提供下列必要參數的值:nameprofile

    下列程式碼範例會新增AWS Step Functions為AWS SCT專案中的原始碼。此範例會以名稱建立目標物件AWS_STEP_FUNCTIONS。建立對應規則時,請使用此物件名稱。此外,此範例會使用您在先決條件步驟中建立的AWS SCT服務設定檔。請確定您已將設定檔的名稱取代為設定檔名稱。

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

    如果您不使用AWS服務設定檔,請確定您提供下列必要參數的值:accessKeysecretKeyawsRegion、和s3Path。使用這些參數指定您的AWS秘密存取金鑰AWS 區域、AWS秘密金鑰和 Amazon S3 儲存貯體的路徑。

  3. AWS Step Functions使用ConnectTarget指令連接到。使用您在上一個步驟中定義的目標物件的名稱。

    下列程式碼範例會使用您的AWS服務設定檔連線至AWS_STEP_FUNCTIONS目標物件。請確定您已將設定檔的名稱取代為設定檔名稱。

    ConnectTarget -name: 'AWS_STEP_FUNCTIONS' -profile: 'profile_name' /
  4. 儲存您的 CLI 指令碼。接下來,新增對應規則和移轉指令。如需詳細資訊,請參閱將阿帕奇奧西轉換為 AWS Step Functions