我们的AWS声明进来了,我们发现我们被双重收费的请求数。
第一次充电对Asia Pacific (Tokyo)
(AP-东北-1),这是简单的,因为它就是我们斗的位置。但是,有反对US East (N. Virginia)
(美国东部-1)具有类似的请求数另外收费。
长话短说,看来这是因为我们使用的aws s3
command发生的事情,我们没有指定一个区域或者通过--region
选项或any of the fallback methods。
打字aws configure list
显示region: Value=<not set> Type=None Location=None
。
然而,我们的aws s3
命令成功,尽管这看似隐藏费用。该假设是,我们的要求先去美国东部-1,但由于没有通过我们指定的名称水桶那里,转身回来AP-东北-1,它最终成功,同时获得占两次。
其中aws
运行命令的EC2实例本身就是AP-东北-1如果算个什么。
所以,问题是,上面是一个合理的帐户所发生的事情的推测? (即它是预期的行为。)而且,它似乎有点阴险给我,但有一个合适的理由呢?
你们看到的是正确的。该aws s3
命令需要知道的区域,以访问S3桶。
由于这还没有提供,它将使请求us-east-1
,这实际上是默认的 - 看到AWS S3 region chart看到us-east-1
不需要位置约束。
如果S3接收的铲斗,其不在该区域的请求则返回与用于桶的正确区域PermanentRedirect响应。的AWS CLI透明地处理此,并且重复与正确的端点,其包括的区域中的请求。
看到这个动作,最简单的方法是运行在调试模式下的命令:
aws s3 ls ap-northeast-1-bucket --debug
输出将包括:
DEBUG - Response body:
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>PermanentRedirect</Code><Message>The bucket you are attempting to access
must be addressed using the specified endpoint. Please send all future requests to
this endpoint.</Message>
<Endpoint>ap-northeast-1-bucket.s3.ap-northeast-1.amazonaws.com</Endpoint>
<Bucket>ap-northeast-1</Bucket>
<RequestId>3C4FED2EFFF915E9</RequestId><HostId>...</HostId></Error>
在AWS CLI不承担该地区是一样的调用EC2实例,这是一个long running confusion/feature request。
附加说明:这种方式不是所有AWS服务将自动发现区域,如果区域不设置将失败。 S3的作品,因为它使用本身就要求某种形式的发现服务的全局命名空间。