翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 に接続するには
-
新しい 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 SCT CLI で AWS Step Functions に接続するには
-
Apache Oozie ソースファイルの接続情報を含む CLI スクリプトを開きます。
-
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 シークレットキー、AWS リージョン、Amazon S3 バケットへのパスを指定します。 -
ConnectTarget
コマンドを使用して AWS Step Functions に接続します。前のステップで定義されたターゲットオブジェクトの名前を使用します。次のコード例では、AWS サービスプロファイルを使用して
AWS_STEP_FUNCTIONS
ターゲットオブジェクトに接続します。profile_name
は必ず自分のプロファイルの名前に置き換えてください。ConnectTarget -name: 'AWS_STEP_FUNCTIONS' -profile: '
profile_name
' / -
CLI スクリプトを保存します。次に、マッピングルールと移行コマンドを追加します。詳細については、「Apache Oozie を AWS Step Functions に変換 する」を参照してください。