8
5

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 1 year has passed since last update.

AWS Lambda + API Gatewayでエラーになったら確認すること

Last updated at Posted at 2022-08-18

Lambda + APIGatewayでREST APIを構築し、いろんなエラーに遭遇しました。
確認すべき箇所をメモしておきます。

403 {"message":"Forbidden"}

リクエストURLは正しいでしょうか

API Gatewayはpath+ステージ名を付けたりします。
このステージ名が抜けてるとForbiddenになりますので、確認してみてください。

構成

https://{APIのID}.execute-api.{リージョン}.amazonaws.com/{ステージ名}/{リソース名}

https://api-id.execute-api.us-east-2.amazonaws.com/default/pets?id=4&type=dog

リソースポリシーが間違っていないでしょうか

リソースポリシーが真っ白だとエラーになります。
左メニューの「リソースポリシー」を確認してみてください。

例えば全部許可するなら以下のように書きます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:ap-northeast-1:000000000000:api-id/*"
        }
    ]
}

"Resource"にはarnを入れてくださいね。
設定後は必ずAPIをデプロイしましょう。

502 Bad Gateway

API Gatewayに問題はないかもしれません...

APIGatewayをトリガーにしてLambdaが動き、Lambdaでエラーが発生した場合、502エラーが返ってきます。
なので、APIGatewayに問題はないかもしれません。
Lambda側のCloud Watchログなどを確認して、Lambdaの問題なのかAPIGateWayの問題なのかを切り分けてみてください。

エンドポイントがプライベート設定なのでしょうか

左メニュー「設定」 > エンドポイントの設定 を「プライベート」にしているとVPCの設定が求められます。
「プライベート」にするなら正しいVPCが設定されているかを確認してみてくださいね。
「リージョン」ならVPCの設定は必要ありません。

image.png

API keyが有効になってますでしょうか

左メニュー「リソース」 > 対象リソース名のメソッド > 「メソッドリクエスト」 をクリックして、APIキーの必要性が「false」になっていることを確認してください。

image.png

もしAPI Keyを設定するなら、
左メニューの「APIキー」からAPIを作って、ヘッダーにx-api-keyの項目名で設定しましょう。
また、左メニューの「設定」で「API キーのソース」が「ヘッダー」になっていることも確認してください。
設定後は必ずAPIをデプロイしましょう。

そのほか

リソースのデプロイをお忘れではないでしょうか...

これまでの内容でも赤文字で記載していますが、リソースやリソースポリシーをいじったら必ずデプロイしましょう。
私はこれをやってなくて1時間溶かしました😆

参考

参考にさせていただきました。

以上

8
5
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
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?