Apache Oozie を AWS SCT のソースとしての使用 - AWS Schema Conversion Tool

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Apache Oozie を AWS SCT のソースとしての使用

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 ワークフローを変換するには、必ず AWS SCT バージョン 1.0.671 以降を使用してください。また、AWS SCT のコマンドラインインターフェイスにも慣れておいてください。詳細については、「AWS SCT CLI リファレンス」を参照してください。

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 サービスプロファイルの AWS SCT への保存」を参照してください。

AWS SCT でソース Apache Oozie ワークフローを使用するには、ソースファイルの特定の構造が必要です。各アプリケーションフォルダには job.properties ファイルが含まれている必要があります。このファイルには、ジョブプロパティのキーと値のペアが含まれています。また、各アプリケーションフォルダにこの workflow.xml ファイルが含まれている必要があります。このファイルには、ワークフローのアクションノードと制御フローノードが記述されています。

ソースとしての Apache Cassandra への接続

以下の手順を使用して、Apache Oozie ソースファイルに接続します。

AWS SCT CLI で Apache Oozie に接続するには
  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 値は必ず使用してください。以下の必須のパラメータの値 name および mappingsFolder を指定します。

    次のコード例では、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 SCT CLI で AWS Step Functions に接続するには
  1. Apache Oozie ソースファイルの接続情報を含む CLI スクリプトを開きます。

  2. 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 サービスプロファイルを使用しない場合は、accessKeysecretKeyawsRegions3Path の必須パラメータの値を指定してください。これらのパラメータを使用して、AWS シークレットアクセスキー、AWS シークレットキー、AWS リージョン、Amazon S3 バケットへのパスを指定します。

  3. ConnectTarget コマンドを使用して AWS Step Functions に接続します。前のステップで定義されたターゲットオブジェクトの名前を使用します。

    次のコード例では、AWS サービスプロファイルを使用して AWS_STEP_FUNCTIONS ターゲットオブジェクトに接続します。profile_name は必ず自分のプロファイルの名前に置き換えてください。

    ConnectTarget -name: 'AWS_STEP_FUNCTIONS' -profile: 'profile_name' /
  4. CLI スクリプトを保存します。次に、マッピングルールと移行コマンドを追加します。詳細については、「Apache Oozie を AWS Step Functions に変換 する」を参照してください。