🚪
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の誤りはなかった。
結論
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忘れがちなので確認しよう👉
Discussion