翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
バッチジョブ (AWS Batch、Amazon SNS) の管理
このサンプルプロジェクトでは、AWS Batch ジョブを送信後、ジョブの結果 (成功または失敗) に基づき Amazon SNS 通知を送信する方法について説明します。このサンプルプロジェクトをデプロイすると、AWS Step Functions ステートマシン、AWS Batch ジョブ、および Amazon SNS トピックが作成されます。
このプロジェクトでは、Step Functions は、ステートマシンを使用して、AWS Batch ジョブを同期的に呼び出します。その後、ジョブが成功または失敗するまで待機し、ジョブの成功または失敗に関するメッセージを含む Amazon SNS トピックを送信します。
ステートマシンを作成してリソースをプロビジョンする
-
Step Functions コンソール
を開き、[Create a state machine] (ステートマシンの作成) を選択します。 -
[Sample Projects] (サンプルプロジェクト)、[Manage a Batch Job] (バッチジョブの管理) の順に選択します。
ステートマシン [Code] (コード) と [Visual Workflow] (ビジュアルワークフロー) が表示されます。
-
[Next] (次へ) を選択します。
作成されるリソースを示す [Deploy resources] (リソースのデプロイ) ページが表示されます。このサンプルプロジェクトでは、以下のリソースが含まれます。
-
AWS Batch ジョブ
-
1 つの Amazon SNS トピック
-
-
[Deploy Resources] (リソースのデプロイ) を選択します。
注記 これらのリソースおよび関連する IAM 許可が作成されるまで、最大 10 分かかることがあります。[Deploy resources] (リソースのデプロイ) ページが表示されている場合は、[Stack ID] (スタック ID) リンクを開いて、プロビジョンされているリソースを表示することができます。
新しい実行のスタート
-
[New execution] (新しい実行) ページで、実行名を入力し (オプション)、[Start Execution] (実行のスタート) を選択します。
(オプション) 実行を識別しやすくするために、名前ボックスに移動するとそのように表示されます。デフォルトでは、Step Functions は自動的に一意の実行名を生成します。
注記 Step Functions では、非 ASCII 文字を含むステートマシン、実行、およびアクティビティ名を作成できます。これらの非 ASCII 名は Amazon では機能しません。CloudWatch。確実に追跡できるようCloudWatchメトリクスを選択するには、ASCII 文字のみを使用する名前を選択します。
-
必要に応じて、Step Functions [Dashboard] (ダッシュボード) 上にある新しく作成されたステートマシンに移動し、[New execution] (新しい実行) を選択します。
-
実行が完了したら、[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 ポリシー を参照してください。