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?

備忘録Advent Calendar 2023

Day 19

【AWS Lambda関数作成】APIGatewayの作成手順(状態維持API編)

Last updated at Posted at 2023-12-18

はじめに

【AWS Lambda関数作成】APIGatewayの作成手順に関しての備忘録です。
初心者です😅
間違えてる部分が多々あると思います。
もし見つけた場合、ツッコミいただけると助かります🙇

🦁結論🦁

押さえておくべき点

  • AWSではAPI Gatewayは必須ツール。
  • API Gatewayは「情報の出し入れの管理」「セキュリティ」「様々なデバイスに対応」「データの変換」などを行うことができる。
  • CORS(Cross-Origin Resource Sharing)は、ウェブブラウザーのセキュリティポリシーの一部で、異なるウェブサイト(オリジン)間でデータを共有するためのルールや仕組み。
  • オリジンとは、ウェブサイトやウェブアプリケーションがホストされているドメイン(サイトのアドレス)のこと。

注意点

  • テストではステータスが「200」が返ってきたとしてもエラーメッセージがある場合がある。

前提🙊

AWSのアカウント作成が終わってる。
AWS Lambdaの環境構築が終わってる。
AWS Lambdaのコードがテスト含め完了してる。
IAMでの権限設定が完了してる。
Step Functionsの設定が完了してる。


手順詳細

<状態維持APIの作成手順>

APIの作成

AWSコンソールにログインし、API Gatewayをクリック。

左側のナビゲーションで「API」を選択し、「新しいAPIの作成」をクリック。

REST APIの「構築」をクリック。

新しいAPIを選択し、APIの名前(StateControlAPI)を入力し、「APIを作成」をクリック。
※他はデフォルト設定のままでOK


リソースの作成:

作成したAPIに移動し、左側のナビゲーションで「リソース」を選択し、「リソースの作成」をクリック。

リソース名を入力(今回は「status-check」と入力)してCORS (クロスオリジンリソース共有)にチェックを入れる。


メソッドの作成:

リソースを選択(今回は「status」)して、右下にある「メソッドを作成」をクリック。

メソッドのタイプを「POST」を選択して、統合タイプを「AWSのサービス」を選択。


メソッドでの統合リクエスト:

メソッド設定で、統合タイプとして「Lambda関数」を選択し、関連付けたいLambda関数を指定します。

AWSリージョンを「ap-northeast-1」を選択。
AWSサービスを「Step Functions」を選択。
HTTPメソッドは「POST」を選択。
アクション名を入力(今回は「DescribeExecution」)

実行ロールにIAMで作成した「実行ロール」を貼り付けして「メソッドを作成」をクリック。
IAM > ロール > myrole ここにある概要の部分にある「ARN」(発火APIと同じもの)

下にあるマッピングテンプレートの「Add mapping template」をクリック。

コンテンツタイプに「application/json」を入力。
(テンプレート生成は入力なし)
テンプレート本文に下記のコードを作成(Step FunctionsのArnを入力)して貼り付ける。

{
    "startActionArn": "$input.path('$.startActionArn')"
}

「保存」をクリック。
(他のコンテンツタイプがあったら削除する)


レスポンスの設定:

リソースから「POST」をクリック。
右下にある「メソッドレスポンス」をクリック。
「編集」をクリック。

「ヘッダーを追加」をクリックして「Access-Control-Allow-Headers」を入力する。
再度「ヘッダーを追加」をクリックして「Access-Control-Allow-Methods」を入力する。
再度「ヘッダーを追加」をクリックして「Access-Control-Allow-Origin」を入力する。
レスポンス本文に「application/json」を入力して、モデルを「Empty」を選択する。
「保存」をクリック。

「統合レスポンス」をクリック。
「編集」をクリック。
ヘッダーマッピングに「’*’」を入力。

マッピングテンプレートにある「削除」をクリック。
「保存」をクリック。


リクエストの設定

リソースから「POST」をクリック。
右下にある「統合リクエスト」をクリック。
「編集」をクリック。


テスト

リソースから「POST」をクリック。
右下にある「テスト」をクリック。

「リクエスト本文」に下記のコードを作成して入力。
※local_jan_codeの値は設定したサイトにあるスクレイピングしたいものを設定。

{
    "inputData": {
        "local_jan_code": "4901133716676",
        "executionArn": "ここにStep FunctionsのARNを入力"
    }
}

「テスト」をクリック。
ステータスに「200」があればOK
※ここでは必ず「Invalid Arn: 'Invalid ARN prefix:」というエラーメッセージがきます。
これはテスト環境では発火APIの実行がないため、非同期にてLambda関数の処理が進められてない関係でARNがないことになってしまうから。
あとは、実際のローカルからテストを実行して確認して調整が必要になる。

デプロイ:

右上の「APIをデプロイ」をクリック。

ステージを「New stage」を選択。

ステージ名を「prod」と入力して「デプロイ」をクリック。

完了。


AWS Lambda関数作成 セクション リンク

  1. AWSアカウントの作成
  2. AWSの開発環境の構築
  3. Lambda関数の開発とデバッグ
  4. IAMロールの作成と設定(途中まで作成したら、Step Functionsを設定する必要あり)
  5. AWS Step Functionsの設定とデバッグ(完了後、IAMの権限にStep Functionsを追加)
  6. API Gateway(発火API)の設定とデバッグ
  7. API Gateway(状態維持API)の設定とデバッグ
  8. Python(local環境)の開発とデバック
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?