AWS Step Functions
開発者ガイド

API Gateway を使用して Step Functions API を作成する

Amazon API Gateway を使用して、お客様の AWS Step Functions API を API Gateway API のメソッドに関連付けることができます。HTTPS リクエストが API メソッドに送信されると、API Gateway はお客様の Step Functions API アクションを呼び出します。

このチュートリアルでは、1 つのリソースと POST メソッドを使用して StartExecution API アクションとやり取りする API を作成する方法を示します。IAM コンソールを使用して API Gateway 用のロールを作成します。次に、API Gateway コンソールを使用して API Gateway API を作成し、リソースとメソッドを作成して、メソッドを StartExecution API アクションにマッピングします。最後に、API をデプロイしてテストします。この API アクションの詳細については、AWS Step Functions API リファレンスの「StartExecution」を参照してください。

注記

Amazon API Gateway は StartExecution を呼び出して Step Functions の実行を開始できますが、結果を取得するには DescribeExecution を呼び出す必要があります。

ステップ 1: API Gateway 用の IAM ロールを作成する

API Gateway API を作成する前に、API Gateway に Step Functions API アクションを呼び出すアクセス許可を付与する必要があります。

  1. IAM コンソールにログインして、[ロール]、[ロールの作成] の順に選択します。

  2. [信頼されたエンティティの種類を選択] ページの [AWS service] で、リストから [API Gateway] を選択し、[Next: Permissions] を選択します。

  3. [Attached permissions policy] ページで、[Next: Review] を選択します。

  4. [Review] ページで、[Role name (ロール名)] に APIGatewayToStepFunctions と入力し、[Create role (ロールの作成)] を選択します。

    ロールのリストで、IAM ロールが表示されます。

  5. お客様のロールの名前を選択し、[Role ARN] を書き留めます。以下に例を示します。

    arn:aws:iam::123456789012:role/APIGatewayToStepFunctions

IAM ロールにポリシーをアタッチするには

  1. [Roles] ページで、ロール (APIGatewayToStepFunctions) を検索して選択します。

  2. [Permissions] タブで [Attach Policy] を選択します。

  3. [Attach Policy] ページで AWSStepFunctionsFullAccess を検索し、ポリシーを選択して、[Attach Policy] を選択します。

ステップ 2: API Gateway API を作成する

IAM ロールを作成した後、カスタムの API Gateway API を作成できます。

API の作成

  1. Amazon API Gateway コンソールに移動し、[Get Started (使用を開始)] を選択します。

  2. [Create new API] ページで、[New API] を選択します。

  3. [Settings] セクションで、[API name (API 名)] に「StartExecutionAPI」と入力し、[Create API (API の作成)] を選択します。

リソースを作成する

  1. [StartExecutionAPI] の [Resources] ページで、[Actions]、[Create Resource] の順に選択します。

  2. [New Child Resource] ページで、[Resource Name] に execution と入力し、[Create Resource] を選択します。

POST メソッドの作成

  1. [/execution Methods] ページで、[Actions]、[Create Method] の順に選択します。

  2. リストから POST を選択し、チェックマークをオンにします。

メソッドの設定

[/execution - POST - Setup] ページで、メソッドの統合ポイントを設定します。

  1. [Integration Type] で、[AWS Service] を選択します。

  2. [AWS リージョン] でリストからリージョンを選択します。

    注記

    現在 Step Functions をサポートしているリージョンについては、「サポートされているリージョン」を参照してください。

  3. [AWS Service] でリストから [Step Functions] を選択します。

  4. [HTTP Method] でリストから [POST] を選択します。

    注記

    すべての Step Functions API アクションは HTTP POST メソッドを使用します。

  5. [Action Type] で、[Use action name] を選択します。

  6. [Action (アクション)] に「StartExecution」と入力します。

  7. [Execution Role (実行ロール)] に、前に作成した IAM ロールのロール ARN を入力します。以下に例を示します。

    arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
  8. [Save] を選択します。

    API Gateway および Step Functions 間の視覚的なマッピングは [/execution - POST - Method Execution] ページに表示されます。

ステップ 3: API Gateway API のテストとデプロイ

API を作成したら、テストしてデプロイします。

API Gateway と Step Functions 間の通信をテストする

  1. [/execution - POST - Method Execution] ページで、[Test] を選択します。

  2. [/execution - POST - Method Test] ページで、次のリクエストパラメータを、既存のステートマシン (または新しいステートマシンを作成) の ARN を使用して [Request Body] セクションにコピーし、[Test] を選択します。

    { "input": "{}", "name": "MyExecution", "stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld" }

    注記

    詳細については、AWS Step Functions API リファレンスの「StartExecution」の「リクエストの構文」を参照してください。

    ステートマシンの ARN を API Gateway 呼び出しの本文に含めない場合は、本文マッピングテンプレートを設定できます。次に例を示します。

    { "input": "$util.escapeJavaScript($input.json('$'))", "stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld" }

    このアプローチを使用することで、開発ステージ (たとえば、devtestprod) に基づいて異なるステートマシンを使用できます。更新をリリースするには、ステージ変数を変更するだけです。次に例を示します。

    { "input": "$util.escapeJavaScript($input.json('$'))", "stateMachineArn": "$util.escapeJavaScript($stageVariables.get(arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld))" }
  3. 実行が開始され、実行 ARN とそのエポック日が [Response Body] の下に表示されます。

    { "executionArn": "arn:aws:states:us-east-1:123456789012:execution:HelloWorld:MyExecution", "startDate": 1486768956.878 }

    注記

    AWS Step Functions コンソールでステートマシンを選択することで、実行を確認できます。

API をデプロイする

  1. [StartExecutionAPI] の [Resources] ページで、[Actions]、[Deploy API] の順に選択します。

  2. [Deploy API (API のデプロイ)] ダイアログボックスで、[Deployment stage (デプロイメントステージ)] リストから [New Stage (新しいステージ)] を選択し、[Stage name (ステージ名)] に alpha と入力して、[デプロイ] を選択します。

デプロイをテストするには

  1. [StartExecutionAPI] の [Stages] ページで、[alpha]、[/]、[/execution]、[POST] を展開します。

  2. [alpha - POST - /execution] ページで、[Invoke URL] を書き留めます。次に例を示します。

    https://a1b2c3d4e5.execute-api.us-east-1.amazonaws.com/alpha/execution
  3. コマンドラインから、ステートマシンの ARN を使用して curl コマンドを実行し、次にデプロイの URL を呼び出します。次に例を示します。

    curl -X POST -d '{"input": "{}","name": "MyExecution","stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld"}' https://a1b2c3d4e5.execute-api.us-east-1.amazonaws.com/alpha/execution

    実行 ARN とそのエポック日付が返されます。次に例を示します。

    {"executionArn":"arn:aws:states:us-east-1:123456789012:execution:HelloWorld:MyExecution","startDate":1.486772644911E9}