桶的模式是${bucket}.s3-website-<region>.amazonaws.com(这是更通用的形式,适用于所有地区,见http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region,而${bucket}.s3-website.<region>.amazonaws.com的形式并不适用于所有地区)
如果你想知道你的存储桶的区域名称,你可以使用以下命令
aws s3api get-bucket-location --bucket <your-bucket>
你会得到
{
"LocationConstraint": null
}
这意味着您的存储桶已在 us-east-1 中创建
或者对于任何其他地区,您将正确获得地区名称
{
"LocationConstraint": "eu-central-1"
}
作为补充,如果您真的想构建可用终端节点列表,AWS SDK(s3 或 s3api)不提供此列表(截至今天)
使用 CLI 最接近的方法是从 ec2 区域获取列表。它将假设当有一个部署了 ec2 的新区域时,也部署了 s3(我不能保证有一天不会出现这种情况,但现在可以假设是否有一个新区域 ec2 和 s3 是至少服务 aws 将部署)
这样你就可以跑了
$ aws ec2 describe-regions
{
"Regions": [
{
"Endpoint": "ec2.ap-south-1.amazonaws.com",
"RegionName": "ap-south-1"
},
{
"Endpoint": "ec2.eu-west-1.amazonaws.com",
"RegionName": "eu-west-1"
},
{
"Endpoint": "ec2.ap-southeast-1.amazonaws.com",
"RegionName": "ap-southeast-1"
},
{
"Endpoint": "ec2.ap-southeast-2.amazonaws.com",
"RegionName": "ap-southeast-2"
},
{
"Endpoint": "ec2.eu-central-1.amazonaws.com",
"RegionName": "eu-central-1"
},
{
"Endpoint": "ec2.ap-northeast-2.amazonaws.com",
"RegionName": "ap-northeast-2"
},
{
"Endpoint": "ec2.ap-northeast-1.amazonaws.com",
"RegionName": "ap-northeast-1"
},
{
"Endpoint": "ec2.us-east-1.amazonaws.com",
"RegionName": "us-east-1"
},
{
"Endpoint": "ec2.sa-east-1.amazonaws.com",
"RegionName": "sa-east-1"
},
{
"Endpoint": "ec2.us-west-1.amazonaws.com",
"RegionName": "us-west-1"
},
{
"Endpoint": "ec2.us-west-2.amazonaws.com",
"RegionName": "us-west-2"
}
]
}
然后您可以应用模式${bucket}.s3-website-<RegionName>.amazonaws.com