🚪

API Gatewayをterraform Applyしてリクエスト送ったら403エラーが出て困った

に公開

背景

API GateWayとlambdaをterraform applyした際はエラーなど出ていなかったが、実際にcurlでAPIにリクエストを送ってみたら下記のようなエラーが出た

"message": "Invalid key=value pair (missing equal-sign) in Authorization header (hashed with SHA-256 and encoded with Base64): 'hogehoge'"

エラーメッセージを読むとリクエストのAuthorization ヘッダーの値が key=value の形式になっていないため、イコール記号 (=) が見つからないというもの。

しかし、確認したところ特に設定の誤りはなく、コンソールからAPI Gatewayのメソッドをテストした際には問題なくレスポンスが帰ってきていた。

調べたところURLが誤っている際にも同じようなエラーが出るみたいだが、今回のケースではURLの誤りはなかった。
https://zenn.dev/wac/articles/471dd86e565c09

結論

API Gatewayにlambdaをデプロイし忘れていたのが原因

deploymentのリソースを作り、triggersを定義することで変更を検知してデプロイする仕組みを構築
することで解決

resource "aws_api_gateway_deployment" "hoge"{
    rest_api_id = aws_api_rest_api.hoge.id

    triggers = {
        deployment = aws_api_gateway_rest_api.hoge.body
    }

    lifecycle {
    create_before_destroy = true
    }
}

terraformの自分にはエラーメッセージと原因が異なっており解決に手こずったので記事に残しました

リソースの本体定義したことに満足してdeployment忘れがちなので確認しよう👉

GitHubで編集を提案

Discussion