0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[AWS]Step Functionのチュートリアル終わったからとりあえずAPI Gatewayから呼んでみた

Last updated at Posted at 2021-11-13

今回行う構成

image.png

  1. ローカルからAPIエンドポイントを叩く
  2. APIエンドポイントからLambdaを叩く
  3. Lambdaからstep functionを叩く
  4. Step Functionで設定したLambdaが叩かれる

想定読者

今回説明しないこと

  • Step Functionの説明
  • Lambdaの説明
  • API Gatewayの説明

それぞれ素晴らしい記事があるので書きを参考にしてみてください
Step Function
Lambda
API Gateway

手順

  • Lambda作成
  • API Gateway作成
  • PostmanからAPIコールしてみる

前提としてAWS公式のStep Functionのチュートリアルが終わっている方向けなのでStep Functionはできているという想定で行います

注意

AWS公式のチュートリアルのLambdaソースコードを下記のように書き換えます

def lambda_handler(event, context):
    statuscode = event["statuscode"]
    print(statuscode)
    if statuscode == "429" or statuscode == 429:
        raise TooManyRequestsException('429 Too Many Requests')
    elif statuscode == "503" or statuscode == 503:
        raise ServerUnavailableException('503 Server Unavailable')
    elif statuscode == "200" or statuscode == 200:
        return '200 OK'
    else:
        raise UnknownException('Unknown error')

LambdaからのstatuscodeがStringで渡してもintで渡ってきているみたいなので
※こちらんの事象わかる方教えていただきたいです

Lambda作成

まずは適当な名前でLambdaを作成してランタイムはpython3.6を使います

ソースコード

import boto3

client = boto3.client('stepfunctions')

def lambda_handler(event, context):
  status_code =str(event["statuscode"])
  res = client.start_execution(
          **{
            'input': '{"statuscode": %s}'%status_code,
            'stateMachineArn':"{step functionのarn}"
            }
          )

image.png

そしたら下記のようなjsonでテストを行います

{
  "statuscode": "200"
}

Step Functionを見ると成功になっているのが見れます

image.png

API Gateway作成

API Gatewayにアクセスして

左下のREST APIで「構築」をします
image.png

API名は任意の名前で作成します

そしたらリソース名に任意の名前を入力して CORSを有効にして作成します
image.png

POSTメソッドを追加して先ほど作成したLambda関数を選びます
image.png

デプロイします
image.png

POSTメソッドを選択するとURLが発行されているのでそちらをコピーします
image.png

PostmanからAPIコールしてみる

先程コピーしたURLをpostmanに貼り付けてPOSTでリクエストを送ってみます

Request Bodyの入力を忘れないでください

image.png

Step Function側からのレスポンスをLambda経由で受け取れていないのでnullが帰ってきますが、step functionでは処理が走っていると思います
image.png

##終わりに
Step Functionのチュートリアル後なにかやりたいと思いAPI Gatewayの連携をしましたが、
Step Functionの使い所は複数のLambdaの処理などが適しているのかな〜という所感です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?