API Gateway を使用して Step Functions API を作成する - 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 を作成する方法を示します。AWS Identity and Access Management (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 のサービス] で、リストから [API Gateway] を選択し、[Next: Permissions (次へ: アクセス許可)] を選択します。

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

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

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

  5. 次の例に示すように、お客様のロールの名前を選択し、[ロール ARN] をメモします。

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

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

  1. [ロール] ページで、ロール (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 (呼び出し 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}