🦔

app-ads.txtが403でアドマネージャが読み込めない

2023/12/19に公開

結論

CloudFrontで日本以外のリクエストをブロックしているのが原因でした。

前提

Route 53 -> CloudFront -> S3
の構成になっており、app-ads.txtはS3のバケットに置いてるだけ

詳細

アド マネージャー 360を使用しているプロジェクトで、app-ads.txtを配置したのですが、管理画面上では一向に読み込みができてない状態でした。

↑の画像のとおり403エラーで弾かれている様子

ちなみにですが、app-ads.txtの設置場所をアド マネージャーに伝える方法は下記になります。

https://support.google.com/admob/answer/9363762?hl=ja

スマホアプリなのに、サーバにapp-ads.txtを設置するというのが最初違和感ありましたが、
Google PlayやApp Storeを経由するというので納得がいきました。

以下、原因を特定するために行なったことになります。

IP制限が影響している?

VPNを切ってアクセスしてもパソコンや、スマホからはアクセスできる様子

許可されていないHTTPのリクエストメソッドが使われている?

GETとHEADは許可されていましたが、curlでOPTIONSメソッドを使ってリクエストしてみると403になったので、もしやと思い、CloudFront上でとりあえず許可してみました。

そうすると、curlでリクエストすると400が返ってくるようになりましたが、アド マネージャー上では変化なし(403のまま)。
※400なのは、s3側の設定が足りない可能性が高い。

CloudFrontのログを見てみる

s3に出力されていることに気がついたので確認してみることに

そして、ログの中に、ClientGeoBlockedというメッセージを発見して、気づきました。

国ごとの許可リストは、CloudFrontの管理画面上では下記のように設定してました。
CloudFront -> ディストリビューション -> 任意のディストリビューション ->Security

※AWS WAF -> Web ACLsの方でもできると思いますが、今回はそちらではなかったです。

ただ、上記の設定は重要なサービス要件に絡むので、簡単には外せませんので、対応するとなるとWeb ACLsの方で細かく設定することになりそうです。

しくみのテックブログ

Discussion