gpt4 book ai didi

amazon-web-services - AWS存储桶和区域

转载 作者:行者123 更新时间:2023-12-04 00:14:08 24 4
gpt4 key购买 nike

该应用程序将载波与carrierwave-aws宝石结合使用。迁移rails版本(最高达到4.2),ruby版本(2.2.3)并重新部署到同一台登台服务器时,会遇到障碍。

AWS存储桶最初是在免费层(即俄勒冈州us-west-2)中创建的。但是,我发现所有S3文件都具有链接到eu-west-1的属性。诚然,我一直在研究并考虑使用eu-west-1地区。但是我不记得进行任何配置更改-甚至不确定免费层中是否允许...

所以是的,我必须使用以下命令配置我的上传初始化程序:

config.asset_host = 'https://s3-eu-west-1.amazonaws.com/theapp'
config.aws_credentials = {
region: 'eu-west-1'
}


现在可以通过包含 region=us-west-2的URL访问AWS控制台

我不明白这是怎么回事,正在寻找建议。

最佳答案

尽管外观如此,并且AWS账户没有“家”(本地)区域。

控制台默认使用us-west-2(Oregon),传统观点认为,该地区是AWS拥有最多的可用/备用资源,较低的运营成本,较低的客户价格以及最少的增长限制的地区,因此如果用户手头没有足够的信息来主动选择他们部署服务的区域,则默认情况下将使用俄勒冈州。

但是,对于每个帐户,没有特定区域具有特殊地位。如果您在控制台中切换区域,则控制台下次将倾向于打开同一区域。

大多数AWS服务-EC2,SQS,SNS,RDS(仅举几个例子)都是严格地区域性的:出于可靠性和可生存性的考虑,区域是独立的且未连接在一起¹。在控制台的给定区域中时,您只能看到该区域中的EC2资源,该区域中的SQS队列,该区域中的SNS主题等。要查看其他区域中的资源,请在控制台中切换区域。

向这些服务发出API请求时,您正在使用该区域中的终结点,并且您的凭据也包括该区域。

其他服务是全球性的,具有集中管理功能-这里的示例是CloudFront,IAM和Route 53托管区域。对这些服务进行请求时,请始终使用“ us-east-1”区域,因为这是这些服务的中央全局管理部门的所在地。这些服务通常是一个分区事件(全球网络的一部分与另一部分隔离)。管理更改已复制到世界各地,但是复制配置后,区域安装可以自主运行,而不会造成主要服务影响。当您在控制台中选择这些服务时,您会注意到该区域更改为“全局”。

S3是一种混合动力汽车,与其他所有混合动力汽车完全不同。在控制台中选择S3时,您会注意到控制台区域也更改为显示“ Global”,并且您可以看到所有存储桶,就像其他全局服务一样。 S3具有独立的操作区域,但是具有全局名称空间。这些区域在逻辑上是连通的,并且可以在它们之间传递管理消息,并且可以跨区域传输数据(但只有在您故意这样做时,否则数据会保留在您存储数据的区域中)。

与其他全局服务不同,S3没有可以处理所有可能请求的单个全局端点。

每次创建存储分区时,都选择要存储分区的区域。与该存储桶相关的后续请求必须提交到存储桶的区域,并且必须具有正确区域的授权凭证。

如果您向该存储桶的另一个S3区域的端点提交请求,则会收到一条错误消息,告诉您该存储桶的正确区域。

< HTTP/1.1 301 Moved Permanently
< x-amz-bucket-region: us-east-1
< Server: AmazonS3
<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>
<Bucket>...</Bucket>
<Endpoint>s3.amazonaws.com</Endpoint>
<RequestId>...</RequestId>
<HostId>...</HostId>
</Error>


相反,如果将S3请求发送到正确的端点,但是在身份验证凭据中使用了错误的区域,则由于类似的原因,您将收到另一个错误:

< HTTP/1.1 400 Bad Request
< x-amz-bucket-region: us-west-2
< Server: AmazonS3
<
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>AuthorizationQueryParametersError</Code>
<Message>Error parsing the X-Amz-Credential parameter; the region 'eu-west-1' is wrong; expecting 'us-west-2'</Message>
<Region>us-west-2</Region>
<RequestId>...</RequestId>
<HostId>...</HostId>
</Error>


同样,此区域是您创建存储分区的区域,即默认的“美国标准”(us-east-1)。创建存储桶后,就无法将其移动到其他区域。在不更改名称的情况下将存储桶“移动”到其他区域的唯一方法是从存储桶中删除所有文件,删除存储桶(您不能删除非空存储桶),等待几分钟,然后创建新区域中的存储桶。在S3删除存储桶之后才能在全局可用的名称之前的几分钟内,总是有其他人可以自己使用存储桶名称...因此,请仔细选择您的存储桶区域。

为了清楚起见,对S3 API交互进行了编辑和重新格式化;一些不相​​关的标题和其他内容已删除。



¹未连接在一起(乍看之下)在某种意义上是矛盾的,例如,您可以将一个区域中的SQS队列订阅到另一个区域中的SNS主题,可以将RDS从一个区域复制到另一个区域,并且您可以将EBS快照和AMI从一个区域传输到另一区域...但是这里没有讨论这些反向通道。每个区域中服务的控制平面是隔离且独立的。一个区域中的RDS基础结构出现问题可能会中断向另一区域中RDS的复制,但不会影响另一区域中的RDS操作。一个地区的SNS中断不会影响另一个地区的SNS。这些系统和服务有时具有跨区域通信功能,可以处理客户请求的服务,但是这些区域服务的每个区域的核心操作都是独立的。

关于amazon-web-services - AWS存储桶和区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33279591/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com