はじめに
【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関数作成 セクション リンク