Google Cloud Functionsから地域制限をかけたAmazon CloudFrontへアクセスすると拒否される件について
はじめに
いやー最近(2021 年 3 月頃)、AWS と GCP で遊んでいたらこんな現象が出てきて困ったんすよね、、、ってことで共有します。ちなみに、2021/3/25 2021/7/21 時点でもまだ同じ現象は出ますね。
現象
日本リージョン(東京/大阪)にデプロイした Google Cloud Functions から、日本からの受付のみ許可するように地域制限をかけた Amazon CloudFront にアクセスをしました。期待はもちろん成功なんですが、、、
ジャジャーン!はい、キタコレ、拒否!!、、、きっと仲が良くないん(ry
CloudFront ってどうやって地理を判定しているの?
「Amazon CloudFront デベロッパーガイド」を見ると、サードパーティの GeoIP データベースを使っていますよってことです。あー、なるほど正確性は「99.8%」なのか。
てか、サードパーティの GeoIP データベースってどこよ?と思ったら「Amazon CloudFront API Reference」の方には MaxMind GeoIP databases って明記されておりました。
なるほど、じゃあ、ここのデータベースに Google Cloud Functions で利用されている IP アドレス範囲が入ってくればいいのか、、、まぁ AWS を疑ってたわけだけど AWS は全然悪くないのね。
余談、どんなコード書いたの?
「Cloud Functions でどんなコード書いて試したの?」って聞かれたので「ん、こんな感じの雑なので試しましたよ」って答えておく。(でも、ほんとはググってほしい)
def hello_world(request):
import requests
response = requests.get('http://XXXXXXXXXXXXX/index.html')
return response.text
requests
最後に
AWS から見るとやっぱ GCP って外国扱いなんかな、と思ったら AWS 全然悪くないじゃない。疑ってすいませんでした。ということで、Google Cloud Functions の IP アドレスも MaxMind GeoIP データベースにいつの日か登録されることを祈っております。
Discussion