翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 の許可を設定するには
-
IAM コンソール
にサインインして、[Roles] (ロール)、[Create role] (ロールの作成) の順に選択します。 -
[Select type of trusted entity] (信頼されたエンティティ) ページの [AWS service] (のサービス) で、リストから API Gateway を選択し、[Next: Permissions] (次の手順: 許可) を選択します。
-
[Attached permissions policy] (アクセス権限ポリシーを添付する) ページで、[Next: Tags] (次の手順: タグ) を選択します。
-
(オプション) [Add tags] (タグを追加する) ページで、追加するタグを入力し、[Next: Review] (次の手順:レビュー) を選択します。
-
[Review] (確認) ページで、 [Role Name] (ロール名) に
APIGatewayToStepFunctions
と入力し、[Create role] (ロールの作成) を選択します。ロールのリストで、IAM ロールが表示されます。
-
次の例に示すように、お客様のロールの名前を選択し、[Role ARN] (ロール ARN) をメモします。
arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
IAM ロールにポリシーを添付するには
-
[Roles] (ロール) ページで、ロール (
APIGatewayToStepFunctions
) を検索して選択します。 -
[Permissions] (許可) タブで [Attach Policy] (ポリシーを添付) を選択します。
-
[Attach Policy] (ポリシーを添付) ページで
AWSStepFunctionsFullAccess
を検索し、ポリシーを選択して、[Attach Policy] (ポリシーを添付) を選択します。
ステップ 2: API Gateway で API を作成する
IAM ロールを作成した後、カスタムの API Gateway API を作成できます。
API を作成するには
-
Amazon API Gateway コンソール
を開きます。 -
REST API ボックスで、[Build] (構築) を選択します。
-
[New API] (新しい API) を選択します。
-
[Settings] (設定) セクションで、[API name] (API名) に
StartExecutionAPI
と入力し、[Create API] (API を作成) を選択します。
リソースを作成するには
-
StartExecutionAPI
の「リソース」ページで、「アクション」、「リソースの作成」を選択します。 -
[New Child Resource] (新しい子リソース) ページで、[Resource Name] (リソース名) に
execution
と入力し、[Create Resource] (リソースを作成) を選択します。
POST メソッドを作成するには
-
[/execution Methods] (/execution メソッド) ページで、[Actions] (アクション)、[Create Method] (メソッドの作成) の順に選択します。
-
リストから
POST
を選択し、チェックマークをオンにします。
メソッドの統合ポイントを設定するには
-
[/execution - POST - Setup] (/execution - POST - 設定) ページでは、[Integration Type] (統合タイプ) であれば、[AWS Service] ( のサービス) を選択します。
-
AWS[Region] (リージョン) でリストからリージョンを選択します。
注記 現在 Step Functions をサポートしているリージョンについては、[Supported Regions] (サポートされているリージョン) を参照してください。
-
[AWS Service] ( のサービス) の場合、リストから Step Functions を選択します。
-
[HTTP Method] (HTTP メソッド) でリストから POST を選択します。
注記 すべての Step Functions API アクションは HTTP
POST
メソッドを使用します。 -
[Action Type] (アクションタイプ) で、[Use action name] (アクション名を使用する) を選択します。
-
[Action] (アクション) に
StartExecution
と入力します。 -
次の例に示すように、[Execution Role] (実行ロール) の場合は、前に作成した IAM ロールのロール ARN を入力します。
arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
-
[Save] (保存) を選択します。
API Gateway および Step Functions 間の視覚的なマッピングは [/execution - POST - Method Execution] (/execution - POST - メソッドの実行) ページに表示されます。
ステップ 3: API Gateway API のテストとデプロイ
API を作成したら、テストしてデプロイします。
API Gateway と Step Functions 間の通信をテストするには
-
[/execution - POST - Method Execution] (/execution - POST - メソッドの実行) ページで、[Test] (テスト) を選択します。
-
/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
" }このアプローチを使用することで、開発ステージ (例えば、
dev
、test
、prod
) に基づいて異なるステートマシンを使用できます。更新をリリースするには、次の例に示すように、ステージ変数を変更するだけです。{ "input": "$util.escapeJavaScript($input.json('$'))", "stateMachineArn": "$util.escapeJavaScript($stageVariables.get(
arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld
))" } -
実行がスタートされ、実行 ARN とそのエポック日が [Response Body] (レスポンス本文) の下に表示されます。
{ "executionArn": "
arn:aws:states:us-east-1:123456789012:execution:HelloWorld:MyExecution
", "startDate": 1486768956.878 }注記 AWS Step Functions コンソール
でステートマシンを選択することで、実行を確認できます。
API をデプロイするには
-
StartExecutionAPI
の「リソース」ページで、「アクション」、「API をデプロイ」を選択します。 -
[Deploy API] (API のデプロイ) ダイアログボックスで、[Deployment stage] (デプロイステージ) リストから [New Stage] (新しいステージ) を選択し、[Stage name] (ステージ名) に
alpha
を入力して、[Deploy] (デプロイ) を選択します。
デプロイをテストするには
-
StartExecutionAPI の
「ステージ」ページで、「アルファ」、「/」、「実行」、「POST」を展開します。 -
[alpha - POST - /execution] (alpha - POST - /execution) ページで、次の例に示すように、[Invoke URL] (呼び出し URL) をメモします。
https://a1b2c3d4e5.execute-api.us-east-1.amazonaws.com/alpha/execution
-
コマンドラインから、ステートマシンの 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}