从EC2访问Google Books API时出现503错误

从EC2访问Google Books API时出现503错误,api,amazon-ec2,http-status-code-503,google-books,Api,Amazon Ec2,Http Status Code 503,Google Books,在我的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": 50

在我的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用户是否看到此请求的相同错误,就会有所帮助。

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

Google返回上面指定的错误:

  • 当它无法确定您的IP地址时。其许多书籍的许可协议要求了解您的位置

  • 当IP作为开放代理被列入内部黑名单时。EC2已经被用来托管代理,也许你的IP的前所有者被Google标记了

  • 当存在X-forwarded-for报头(这将由各种代理追加)时,将使用该IP。如果这是一个内部ip(比如10.0.0.1),谷歌会抱怨。对于普通EC2实例来说,这不应该是一个问题,因为您有一个用于外部通信的外部IP地址,但如果您使用VPC或VPN进行操作,则可能会发生疯狂

  • 我今天无法为美国东部重现此错误,但只在随机可用性区域中测试了一个实例