Google Cloud Functionsから地域制限をかけたAmazon CloudFrontへアクセスすると拒否される件について

1 min read読了の目安(約1700字

はじめに

どうもみなさん、こんにちは。いやー、最近こんな現象が出てきて困ったんすよね。

現象

日本リージョン(東京/大阪)にデプロイした Google Cloud Functions から、日本からの受付のみ許可するように地域制限をかけた Amazon CloudFront にアクセスをしました。期待はもちろん成功なんですが、、、

error

ジャジャーン!はい、キタコレ、拒否!!、、、きっと仲が良くないん(ry

CloudFront ってどうやって地理を判定しているの?

Amazon CloudFront デベロッパーガイド」を見ると、サードパーティの GeoIP データベースを使っていますよってことです。あー、なるほど正確性は「99.8%」なのか。

georestrictions-cloudfront-001.png

てか、サードパーティの GeoIP データベースってどこよ?と思ったら「Amazon CloudFront API Reference」の方には MaxMind GeoIP databases って明記されておりました。

georestrictions-cloudfront-002.png

なるほど、じゃあ、ここのデータベースに Google Cloud Functions で利用されている IP アドレス範囲が入ってくればいいのか、、、まぁ AWS を疑ってたわけだけど AWS は全然悪くないのね。

余談、どんなコード書いたの?

「Cloud Functions でどんなコード書いて試したの?」って聞かれたので「ん、こんな感じの雑なので試しましたよ」って答えておく。(でも、ほんとはググってほしい)

main.py
def hello_world(request):
    import requests
    response = requests.get('http://XXXXXXXXXXXXX/index.html')
    return response.text
requirements.txt
requests

最後に

AWS さんから見るとやっぱ GCP って外国扱いなんかな、と思ったら AWS 全然悪くないじゃないか。はい、疑ってすいませんでした。さて Google さん、2021/3/25 時点でまだ修正されておりませんので、はよ日本と判定されるように対応いただけると助かります、、、