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

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

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

Amazon API Gateway を使用して、AWS Step Functions 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 FunctionsAPI StartExecutionリファレンスのを参照してください

注記

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. [Select type of trusted entity] (信頼されたエンティティ) ページの [AWS service] (のサービス) で、リストから API Gateway を選択し、[Next: Permissions] (次の手順: 許可) を選択します。

  3. [Attached permissions policy] (アクセス権限ポリシーを添付する) ページで、[Next: Tags] (次の手順: タグ) を選択します。

  4. (オプション) [Add tags] (タグを追加する) ページで、追加するタグを入力し、[Next: Review] (次の手順:レビュー) を選択します。

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

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

  6. 次の例に示すように、お客様のロールの名前を選択し、[Role ARN] (ロール 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 コンソールを開きます。

  2. REST API ボックスで、[Build] (構築) を選択します。

  3. [New API] (新しい API) を選択します。

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

リソースを作成するには
  1. StartExecutionAPI の「リソース」ページで、「アクション」、「リソースの作成」を選択します。

  2. [New Child Resource] (新しい子リソース) ページで、[Resource Name] (リソース名) に execution と入力し、[Create Resource] (リソースを作成) を選択します。

POST メソッドを作成するには
  1. [/execution Methods] (/execution メソッド) ページで、[Actions] (アクション)、[Create Method] (メソッドの作成) の順に選択します。

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

メソッドの統合ポイントを設定するには
  1. [/execution - POST - Setup] (/execution - POST - 設定) ページでは、[Integration Type] (統合タイプ) であれば、[AWS Service] ( のサービス) を選択します。

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

    注記

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

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

  4. [HTTP Method] (HTTP メソッド) でリストから 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] (/execution - POST - メソッドの実行) ページに表示されます。

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

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

API Gateway と Step Functions 間の通信をテストするには
  1. [/execution - POST - Method Execution] (/execution - POST - メソッドの実行) ページで、[Test] (テスト) を選択します。

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

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

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

    ステートマシンの ARN を API Gateway 呼び出しの本文に含めない場合は、次の例に示すように、body-mapping template を設定できます。

    { "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 の「リソース」ページで、「アクション」、「API をデプロイ」を選択します。

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

デプロイをテストするには
  1. StartExecutionAPI のステージ」ページで、「アルファ」、「/」、「実行」、「POST」を展開します。

  2. [alpha - POST - /execution] (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}