AWS Lambda/API GatewayのIP制限が解除されなくて困った話
AWSで環境構築・開発をするにあたって(AWSに限りませんがまあその)、
当然ながら作り掛けのものがお外から見えたり「こんにちわー」なんて入ってこられたらマズいので、ドア閉めてカギ掛けて知らない人が入ってこられないようにしておくのは大前提なわけです。
で、そういうクローズドな環境で、アレ作ってソレ足してトントンカチカチ釘打ってツーバイフォーが傾いてなんとか直してヘソを曲げる小人さんをあやして時折なにかに祈りつつテケリ・リなどと鳴きつつ――あくまでもののたとえです――システムを作っていきます。
作る過程で外部から確認してもらったり、はたまた外部のシステムと連携したり、なんてときにはクローズドな環境にそれらの外部さんが入ってこれるようにする必要がありまして、
そのときはWAFの制限に例外を設けたり、SGことセキュリティグループに外部さんを用意したり、ALBに「この人は通して」、EC2に「このSGついてる人は入れて」などとアレソレの準備をします。
今回はそれでちょっと困った話。――前置きが長い。
『どこそこ(Lambdaで動いてるところ)のIP制限を解除してほしい』
そう仰せつかって、「えーとWAFはこうすればよくって、API GatewayのリソースポリシーにIP制限掛かってるからそこなんとかすればよかんべ」と見積もって作業して。
「できました」という前に自分でチェック。
許可IPになるべく繋いでいたVPNを切って、F5で再読み込み。
{"Message":"User: anonymous is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:ここリージョン:ここアカウントID:ここAPIのID/ここステージ/ほかいろいろ"}
……アレ?(゜々。)
メッセージ:ユーザー: 匿名は次の実行を許可されていません
…………アレレレ?(。々゜)
「えーと、このメッセージが出てるってことはAPI Gatewayまでは来られているわけで、じゃあAPI Gatewayが『ここはとおさん』してるわけで、あっれぇ??」
既存リソースポリシーのバックアップ取ってからIP制限外して外部から入れるようにしたはずなんだけど……。
試しにリソースポリシーを空っぽにして保存してみても、『ここはとおさん』。
(゜々。)リソースポリシーなんにもないのに????(。々゜)
で、あーでもないこーでもない、と、いろいろ引っ掻き回した挙句。
API ゲートウェイ ⇒ リソース ⇒ アクションのドロップダウンで[API のデプロイ] を実行。
……これでリソースポリシーの変更が反映されました。
ちょっとわかるようになってきたからって基礎手順をおろそかにしてはならない。
――そんな教訓(੭ ᐕ)