

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

# 使用 連線至 Apache Oozie 工作流程 AWS Schema Conversion Tool
<a name="CHAP_Source.Oozie"></a>

您可以使用 AWS SCT 命令列界面 (CLI) 將 Apache Oozie 工作流程轉換為 AWS Step Functions。將 Apache Hadoop 工作負載遷移至 Amazon EMR 之後，您可以在 中使用原生服務 AWS 雲端 來協調任務。如需詳細資訊，請參閱[連線至 Apache Hadoop](CHAP_Source.Hadoop.md)。

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](CHAP_Reference.md)。

## 使用 Apache Oozie 做為來源的先決條件
<a name="CHAP_Source.Oozie.Prerequisites"></a>

使用 AWS SCT CLI 連線至 Apache Oozie 需要下列先決條件。
+ 建立 Amazon S3 儲存貯體以存放狀態機器的定義。您可以使用這些定義來設定狀態機器。如需詳細資訊，請參閱《Amazon S3 使用者指南》**中的[建立儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)。
+ 使用 `AmazonS3FullAccess`政策建立 AWS Identity and Access Management (IAM) 角色。 AWS SCT 使用此 IAM 角色來存取您的 Amazon S3 儲存貯體。
+ 請記下您的 AWS 私密金鑰和 AWS 私密存取金鑰。如需 AWS 存取金鑰的詳細資訊，請參閱《*IAM 使用者指南*》中的[管理存取金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html)。
+ 將您的 AWS 登入資料和 Amazon S3 儲存貯體的相關資訊儲存在全域應用程式設定中的 AWS 服務設定檔中。然後， AWS SCT 使用 AWS 此服務描述檔來使用您的 AWS 資源。如需詳細資訊，請參閱[在 中管理設定檔 AWS Schema Conversion Tool](CHAP_UserInterface.Profiles.md)。

若要使用來源 Apache Oozie 工作流程， AWS SCT 需要來源檔案的特定結構。您的每個應用程式資料夾都必須包含 `job.properties` 檔案。此檔案包含任務屬性的鍵值對。此外，您的每個應用程式資料夾必須包含 `workflow.xml` 檔案。此檔案說明工作流程的動作節點和控制流程節點。

## 連接至 Apache Oozie 做為來源
<a name="CHAP_Source.Oozie.Connecting"></a>

使用下列程序連線至您的 Apache Oozie 來源檔案。

**在 CLI 中連線至 Apache AWS SCT Oozie**

1. 建立新的 AWS SCT CLI 指令碼或編輯現有的案例範本。例如，您可以下載和編輯`OozieConversionTemplate.scts`範本。如需詳細資訊，請參閱[取得 CLI 案例](CHAP_Reference.md#CHAP_Reference.Scenario)。

1. 設定 AWS SCT 應用程式設定。

   下列程式碼範例會儲存應用程式設定，並允許 在您的專案中存放密碼。您可以在其他專案中使用這些已儲存的設定。

   ```
   SetGlobalSettings
       -save: 'true'
       -settings: '{
           "store_password": "true"
       }'
   /
   ```

1. 建立新的 AWS SCT 專案。

   下列程式碼範例會在 `c:\sct` 資料夾中建立`oozie`專案。

   ```
   CreateProject
       -name: 'oozie'
       -directory: 'c:\sct'
   /
   ```

1. 使用 `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 中使用此範例和下列範例。

1. 使用 `ConnectSource`命令連線至來源 Apache Oozie 檔案。使用您在上一個步驟中定義的來源物件名稱。

   ```
   ConnectSource
       -name: 'OOZIE'
       -mappingsFolder: 'c:\oozie'
   /
   ```

1. 儲存您的 CLI 指令碼。接著，為您的 AWS Step Functions 服務新增連線資訊。

## 在延伸套件中使用 AWS Lambda 函數的許可
<a name="CHAP_Source.Oozie.TargetPrerequisites"></a>

對於 AWS Step Functions 不支援的來源函數， AWS SCT 會建立延伸套件。此延伸套件包含 AWS Lambda 函數，可模擬您的來源函數。

若要使用此延伸套件，請建立具有下列許可的 AWS Identity and Access Management (IAM) 角色。

------
#### [ JSON ]

****  

```
{
    "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 角色。

------
#### [ JSON ]

****  

```
{
    "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::{{111122223333}}:role/sct/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:GetRole",
                "iam:ListRolePolicies"
            ],
            "Resource": [
                "arn:aws:iam::{{111122223333}}:role/lambda_LoadParameterInitialStateRole",
                "arn:aws:iam::{{111122223333}}:role/lambda_EvaluateJSPELExpressionsRole",
                "arn:aws:iam::{{111122223333}}:role/stepFunctions_MigratedOozieWorkflowRole"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "lambda:GetFunction",
                "lambda:CreateFunction",
                "lambda:UpdateFunctionCode",
                "lambda:DeleteFunction"
            ],
            "Resource": [
                "arn:aws:lambda:*:{{111122223333}}:function:LoadParameterInitialState",
                "arn:aws:lambda:*:{{111122223333}}:function:EvaluateJSPELExpressions"
            ]
        }
    ]
}
```

------

## 將 連接至 AWS Step Functions 做為目標
<a name="CHAP_Source.Oozie.Target"></a>

使用下列程序以目標 AWS Step Functions 身分連線至 。

**在 CLI AWS SCT AWS Step Functions 中連線至**

1. 開啟您的 CLI 指令碼，其中包含 Apache Oozie 來源檔案的連線資訊。

1. 使用 `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 儲存貯體的路徑。

1.  AWS Step Functions 使用 `ConnectTarget`命令連線至 。使用您在上一個步驟中定義的目標物件名稱。

   下列程式碼範例會使用 AWS 服務設定檔連線至`AWS_STEP_FUNCTIONS`目標物件。請確定您使用{{設定檔的名稱取代 profile\_name}}。

   ```
   ConnectTarget
       -name: 'AWS_STEP_FUNCTIONS'
       -profile: '{{profile_name}}'
   /
   ```

1. 儲存您的 CLI 指令碼。接著，新增映射規則和遷移命令。如需詳細資訊，請參閱[轉換 Oozie 工作流程；](big-data-oozie.md)。