API Gateway を使用した Step Functions API の作成 - AWS Step Functions

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

API Gateway を使用した Step Functions API の作成

Amazon API Gateway を使用して、API Gateway AWS Step Functions APIsのメソッドに 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 をデプロイしてテストします。

注記

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

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

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

API Gateway の許可を設定するには
  1. IAM コンソールにサインインして、[Roles] (ロール)、[Create role] (ロールの作成) の順に選択します。

  2. [信頼されたエンティティを選択] ページで、以下の操作を実行します。

    1. [信頼できるエンティティタイプ] は、デフォルトの AWS のサービス の選択のままにします。

    2. [ユースケース] には、ドロップダウンリストから、[API Gateway] を選択します。

  3. [API Gateway] を選択し、[次へ] をクリックします。

  4. [アクセス許可を追加] ページで [次へ] を選択します。

  5. (オプション) [名前、確認、および作成] ページで、ロール名などの詳細を入力します。たとえば、APIGatewayToStepFunctions と入力します。

  6. [ロールの作成] を選択します。

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

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

    arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
IAM ロールにポリシーをアタッチするには
  1. [Roles] (ロール) ページで、ロール (APIGatewayToStepFunctions) を検索して選択します。

  2. [アクセス許可] タブで、[アクセス許可の追加] を選択してから、[ポリシーのアタッチ] を選択します。

  3. [ポリシーのアタッチ] ページで AWSStepFunctionsFullAccess を検索し、ポリシーを選択して、次に [アクセス許可の追加] を選択します。

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

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

API を作成するには
  1. Amazon API Gateway コンソールを開き、[API を作成] を選択します。

  2. [API タイプを選択] ページの [REST API] ペインで、[ビルド] を選択します。

  3. REST API の作成ページで、新しい API を選択し、StartExecutionAPI 名 に API を入力します。

  4. [API エンドポイントタイプ][リージョン] のままにし、[API の作成] を選択します。

リソースを作成するには
  1. StartExecutionAPIリソースページで、リソースの作成を選択します。

  2. [リソースの作成] ページで、[リソース名]execution と入力し、[リソースを作成] を選択します。

POST メソッドを作成するには
  1. [/execution] リソースを選択し、[メソッドを作成] を選択します。

  2. [メソッドタイプ] で、POST を選択します。

  3. [統合タイプ] で、[AWS のサービス] を選択します。

  4. AWS リージョン については、リストからリージョンを選択します。

    注記

    現在 Step Functions をサポートしているリージョンについては、[Supported Regions] (サポートされているリージョン) を参照してください。

  5. AWS のサービス の場合、リストから [Step Functions] を選択します。

  6. [AWS サブドメイン] は空白のままにします。

  7. [HTTP メソッド] でリストから [POST] を選択します。

    注記

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

  8. [アクションタイプ] で、[アクション名を使用] を選択します。

  9. [アクション名] に「StartExecution」と入力します。

  10. 次の例に示すように、[実行ロール] の場合は、前に作成した IAM ロールのロール ARN を入力します。

    arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
  11. [認証情報キャッシュ][デフォルトタイムアウト] はデフォルトのままにし、[保存] を選択します。

API ゲートウェイおよび Step Functions 間の視覚的なマッピングは [/execution - POST - メソッドの実行] ページに表示されます。

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

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

API Gateway と Step Functions 間の通信をテストするには
  1. [/execution - POST - メソッドの実行] ページで、[テスト] を選択します。タブを表示するには、右矢印ボタンを選択する必要がある場合があります。

  2. [/execution - POST - メソッドのテスト] タブで、次のリクエストパラメータを、既存のステートマシン (または Lambda 関数を使用する新しいステートマシンを作成) の ARN を使用して [リクエスト本文] セクションにコピーし、[テスト] を選択します。

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

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

    注記

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

    { "input": "$util.escapeJavaScript($input.json('$'))", "stateMachineArn": "$util.escapeJavaScript($stageVariables.arn)" }

    このアプローチにより、開発ステージ (例えば、devtestprod) に基づいて異なるステートマシンの ARN を指定できます。マッピングテンプレートのステージ変数指定の詳細については、「API Gateway デベロッパーガイド」の「$stageVariables」を参照してください。

  3. 実行がスタートされ、実行 ARN とそのエポック日が [レスポンス本文] の下に表示されます。

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

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

API をデプロイするには
  1. StartExecutionAPIリソースページで、API をデプロイを選択します

  2. [ステージ][新規ステージ] を選択します。

  3. [Stage name (ステージ名)] に alpha と入力します。

  4. (オプション) [説明] に説明を入力します。

  5. デプロイを選択します。

デプロイをテストするには
  1. StartExecutionAPIステージページで、アルファ //executionPOST を展開し、POST メソッドを選択します。

  2. [メソッドの上書き] で、コピーアイコンを選択して API の呼び出し 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}
    注記

    「認証トークンが見つかりません」というエラーが表示された場合は、呼び出し URL が /execution で終わっていることを確認してください。