1

在我的 Amazon EC2 实例上:

~$ curl -XGET https://www.googleapis.com/books/v1/volumes?q=Mark+Twain
{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "unknownLocation",
    "message": "Cannot determine user location."
   }
  ],
  "code": 503,
  "message": "Cannot determine user location."
 }
}

我的笔记本电脑发出的相同请求会产生正确的响应——JSON 格式的书籍数据。

我究竟做错了什么?是亚马逊的网络配置吗?是谷歌吗?那是我吗?了解其他可用区中的 EC2 用户是否看到此请求的相同错误会有所帮助。

4

1 回答 1

0

我知道这是一个非常古老的问题,但它仍然值得一个答案......

Google 返回上述错误:

  1. 当它无法确定您的 IP 所在位置时。它的许多书籍的许可协议需要知道你在哪里。

  2. 当 IP 在作为开放代理的内部黑名单中时。众所周知,EC2 用于托管代理,可能您的 IP 的先前所有者已被 Google 标记。

  3. 当存在 X-forwarded-for 标头时(这将由各种代理附加),则使用该 IP。如果这是一个内部 IP(如 10.0.0.1),谷歌会抱怨。这对于普通 EC2 实例应该不是问题,因为您有一个用于外部流量的外部 IP 地址,但是如果您使用 VPC 或 VPN 做某事,可能会发生疯狂。

我今天无法为 us-east 重现此错误,但仅在随机可用区域中测试了一个实例。

于 2012-04-05T07:49:27.690 回答