【これを疑え】サイトがGoogleに認識されない【AWS ACL】

長く温めておいたサービスをいざローンチしてみる。
1週間近く様子を見てみるも、Googleで検索してみても全く自社サイトが表示されず。

htmlのmetaタグのdescriptionやOGPを見直してみるも改善されず。
これはいよいよ困ったなということで、まずはGoogleでサービスのドメインを検索。
(ドメイン検索なのでURL窓で検索してもダメ。画像のとおり検索窓から自社ドメインを検索)

URL検索

すると検索結果に全く浮上せず。
ここでわかったことは

「Googleに自社サイトが認識されていない」

ということだった。

Googleの検索エンジンに見つけてもらう必要があるため、Googleサーチボットに自社サイトの申請をしようと試みる。
具体的にはGoogleSearchConsoleに登録し、対象のURLを検査してみる。

URL検査結果

すると「URLはGoogleに登録できません」というエラーが・・・

原因をみてみるとどうやらアクセス禁止(403)が発生しているようだ。

robots.txtをおいてなければ、.htaccessでも禁止していない。

そして行き着いた答えはAWS WAFによる海外アクセスの遮断。
早速AWSを確認。
[WAF & Shield] → [Web ACLs] → [Rules]

Web ACLs Rules

この一覧からそれらしきものを探る。
あった・・・
具体的な箇所は以下。

{
  "Name": "rule-geo",
  "Priority": 0,
  "Statement": {
    "NotStatement": {
      "Statement": {
        "OrStatement": {
          "Statements": [
            {
              "GeoMatchStatement": {
                "CountryCodes": [
                  "JP"
                ]
              }
            }
          ]
        }
      }
    }
  },
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "rule-geo"
  }
},

ここで日本以外からのアクセス全てを遮断していたため、Google botのクローリングも弾かれていたという顛末だった。
一旦このruleを外し、AWSのマネージドルールであるAWSManagedRulesBotControlRuleSetを用いることにした。
これで特定のBotのみを許可する設定をすれば良い。
こんな感じになっていればOK。

AWSManagedRulesBotControlRuleSet

設定完了後、Google Search Consoleに戻って再度URL検査をおこなう。
今度は成功。ACLsのRuleは即時反映されるようで、設定から検査合格までは1分もあれば確認できた。

わかってしまうと当たり前のことでも、いきなり403エラーでサイトが認識できないとなると焦る。
セキュリティ対策は万全であることは好ましい。穴を空ける場合はしっかりと理解した上でやるのが鉄則。

ではでは。