バッチジョブ (AWS Batch、Amazon SNS) の管理 - AWS Step Functions

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

バッチジョブ (AWS Batch、Amazon SNS) の管理

このサンプルプロジェクトでは、AWS Batch ジョブを送信後、ジョブの結果 (成功または失敗) に基づき Amazon SNS 通知を送信する方法について説明します。このサンプルプロジェクトをデプロイすると、AWS Step Functions ステートマシン、AWS Batch ジョブ、および Amazon SNS トピックが作成されます。

このプロジェクトでは、Step Functions は、ステートマシンを使用して、AWS Batch ジョブを同期的に呼び出します。その後、ジョブが成功または失敗するまで待機し、ジョブの成功または失敗に関するメッセージを含む Amazon SNS トピックを送信します。

ステートマシンを作成してリソースをプロビジョンする

  1. Step Functions コンソールを開き、[Create a state machine] (ステートマシンの作成) を選択します。

  2. [Sample Projects] (サンプルプロジェクト)、[Manage a Batch Job] (バッチジョブの管理) の順に選択します。

    ステートマシン [Code] (コード) と [Visual Workflow] (ビジュアルワークフロー) が表示されます。

    
            AWS Batch ワークフローを管理します。
  3. [Next] (次へ) を選択します。

    作成されるリソースを示す [Deploy resources] (リソースのデプロイ) ページが表示されます。このサンプルプロジェクトでは、以下のリソースが含まれます。

    • AWS Batch ジョブ

    • 1 つの Amazon SNS トピック

  4. [Deploy Resources] (リソースのデプロイ) を選択します。

    注記

    これらのリソースおよび関連する IAM 許可が作成されるまで、最大 10 分かかることがあります。[Deploy resources] (リソースのデプロイ) ページが表示されている場合は、[Stack ID] (スタック ID) リンクを開いて、プロビジョンされているリソースを表示することができます。

新しい実行のスタート

  1. [New execution] (新しい実行) ページで、実行名を入力し (オプション)、[Start Execution] (実行のスタート) を選択します。

  2. (オプション) 実行を識別しやすくするために、名前ボックスに移動するとそのように表示されます。デフォルトでは、Step Functions は自動的に一意の実行名を生成します。

    注記

    Step Functions では、非 ASCII 文字を含むステートマシン、実行、およびアクティビティ名を作成できます。これらの非 ASCII 名は Amazon では機能しません。CloudWatch。確実に追跡できるようCloudWatchメトリクスを選択するには、ASCII 文字のみを使用する名前を選択します。

  3. 必要に応じて、Step Functions [Dashboard] (ダッシュボード) 上にある新しく作成されたステートマシンに移動し、[New execution] (新しい実行) を選択します。

  4. 実行が完了したら、[Visual workflow] (ビジュアルワークフロー) で状態を選択して、[Step details] (ステップ詳細) で、[Input] (入力) そして [Output] (出力) を参照できます。

ステートマシンのコード例

このサンプルオブジェクトのステートマシンは、パラメータを直接リソースに渡すことで、AWS Batch および Amazon SNS と統合します。

このステートマシンの例を参照して、Resource フィールドの Amazon リソースネーム (ARN) に接続し、Parameters をサービス API に渡すことで、Step Functions が AWS Batch と Amazon SNS を制御する方法を確認します。

‭AWS Step Functions‬ で他の ‭AWS のサービスを制御する方法の詳細については、‭他のサービスで AWS Step Functions を使用する を参照してください。

{ "Comment": "An example of the Amazon States Language for notification on an AWS Batch job completion", "StartAt": "Submit Batch Job", "TimeoutSeconds": 3600, "States": { "Submit Batch Job": { "Type": "Task", "Resource": "arn:aws:states:::batch:submitJob.sync", "Parameters": { "JobName": "BatchJobNotification", "JobQueue": "arn:aws:batch:us-east-1:123456789012:job-queue/BatchJobQueue-7049d367474b4dd", "JobDefinition": "arn:aws:batch:us-east-1:123456789012:job-definition/BatchJobDefinition-74d55ec34c4643c:1" }, "Next": "Notify Success", "Catch": [ { "ErrorEquals": [ "States.ALL" ], "Next": "Notify Failure" } ] }, "Notify Success": { "Type": "Task", "Resource": "arn:aws:states:::sns:publish", "Parameters": { "Message": "Batch job submitted through Step Functions succeeded", "TopicArn": "arn:aws:sns:us-east-1:123456789012:batchjobnotificatiointemplate-SNSTopic-1J757CVBQ2KHM" }, "End": true }, "Notify Failure": { "Type": "Task", "Resource": "arn:aws:states:::sns:publish", "Parameters": { "Message": "Batch job submitted through Step Functions failed", "TopicArn": "arn:aws:sns:us-east-1:123456789012:batchjobnotificatiointemplate-SNSTopic-1J757CVBQ2KHM" }, "End": true } } }

IAM の例

サンプルプロジェクトで生成されたこれらの AWS Identity and Access Management (IAM) ポリシーの例には、ステートマシンおよび関連リソースを実行するために必要な最小特権が含まれています。IAM ポリシーで必要なアクセス許可のみを含めることをお勧めします。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sns:Publish" ], "Resource": [ "arn:aws:sns:ap-northeast-1:123456789012:ManageBatchJob-SNSTopic-JHLYYG7AZPZI" ], "Effect": "Allow" }, { "Action": [ "batch:SubmitJob", "batch:DescribeJobs", "batch:TerminateJob" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:ap-northeast-1:123456789012:rule/StepFunctionsGetEventsForBatchJobsRule" ], "Effect": "Allow" } ] }

他の AWS のサービスで Step Functions を使用する時に IAM を設定する方法の情報については、統合サービスの IAM ポリシー を参照してください。