コンテナタスクの管理 (Amazon ECS、Amazon SNS) - AWS Step Functions

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

コンテナタスクの管理 (Amazon ECS、Amazon SNS)

このサンプルプロジェクトでは、AWS Fargateタスクを実行し、ジョブが成功または失敗するかに基づいて Amazon SNS 通知を送信します。このサンプルプロジェクトをデプロイすると、AWS Step Functionsステートマシン、Fargate クラスター、および Amazon SNS トピックを参照してください。

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

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

  1. を開くStep Functions コンソールを選択し、ステートマシンの作成

  2. [Sample Projects (サンプルプロジェクト)]、[Manage a container task (コンテナタスクの管理)] の順に選択します。

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

    
          コンテナタスク通知ワークフロー。
  3. [Next] を選択します。

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

    • Fargate クラスター

    • Amazon SNS トピック

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

    注記

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

新しい実行の開始

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

  2. (省略可能) 実行を識別しやすくするために、ID を実行名を入力ボックスに移動するとそのように表示されます。ID を入力しない場合、Step Functions は自動的に一意の ID を生成します。

    注記

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

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

  4. 実行が完了したら、[] ダイアログボックス上のステートを選択できます。ビジュアルワークフローを参照して、Inputおよび出力[]ステップの詳細

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

このサンプルプロジェクトのステートマシンは、AWS Fargateおよび Amazon SNS を使用して、パラメータを直接リソースに渡すこともできます。このサンプルのステートマシンを参照して、Step Functions がどのようにステートマシンを使用して Fargate タスクを同期的に呼び出し、タスクの成功または失敗を待機して、ジョブが成功したか失敗したかどうかに関するメッセージを Amazon SNS トピックに送信するかご覧ください。

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

{ "Comment": "An example of the Amazon States Language for notification on an AWS Fargate task completion", "StartAt": "Run Fargate Task", "TimeoutSeconds": 3600, "States": { "Run Fargate Task": { "Type": "Task", "Resource": "arn:aws:states:::ecs:runTask.sync", "Parameters": { "LaunchType": "FARGATE", "Cluster": "arn:aws:ecs:ap-northeast-1:123456789012:cluster/FargateTaskNotification-ECSCluster-VHLR20IF9IMP", "TaskDefinition": "arn:aws:ecs:ap-northeast-1:123456789012:task-definition/FargateTaskNotification-ECSTaskDefinition-13YOJT8Z2LY5Q:1", "NetworkConfiguration": { "AwsvpcConfiguration": { "Subnets": [ "subnet-07e1ad3abcfce6758", "subnet-04782e7f34ae3efdb" ], "AssignPublicIp": "ENABLED" } } }, "Next": "Notify Success", "Catch": [ { "ErrorEquals": [ "States.ALL" ], "Next": "Notify Failure" } ] }, "Notify Success": { "Type": "Task", "Resource": "arn:aws:states:::sns:publish", "Parameters": { "Message": "AWS Fargate Task started by Step Functions succeeded", "TopicArn": "arn:aws:sns:ap-northeast-1:123456789012:FargateTaskNotification-SNSTopic-1XYW5YD5V0M7C" }, "End": true }, "Notify Failure": { "Type": "Task", "Resource": "arn:aws:states:::sns:publish", "Parameters": { "Message": "AWS Fargate Task started by Step Functions failed", "TopicArn": "arn:aws:sns:ap-northeast-1:123456789012:FargateTaskNotification-SNSTopic-1XYW5YD5V0M7C" }, "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:FargateTaskNotification-SNSTopic-1XYW5YD5V0M7C" ], "Effect": "Allow" }, { "Action": [ "ecs:RunTask" ], "Resource": [ "arn:aws:ecs:ap-northeast-1:123456789012:task-definition/FargateTaskNotification-ECSTaskDefinition-13YOJT8Z2LY5Q:1" ], "Effect": "Allow" }, { "Action": [ "ecs:StopTask", "ecs:DescribeTasks" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:ap-northeast-1:123456789012:rule/StepFunctionsGetEventsForECSTaskRule" ], "Effect": "Allow" } ] }

他の [Step Functions] を使用して IAM を設定する方法については、AWSサービスの詳細については、統合サービスの IAM ポリシー