AWS S3:您尝试访问的存储区必须使用指定的端点进行寻址

use*_*214 173 ruby ruby-on-rails amazon-s3 amazon-web-services

我正在尝试使用AWS-SDK-Core Ruby Gem删除上传的图像文件.

我有以下代码:

require 'aws-sdk-core'

def pull_picture(picture)
    Aws.config = {
        :access_key_id => ENV["AWS_ACCESS_KEY_ID"],
        :secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"],
        :region => 'us-west-2'
    }

    s3 = Aws::S3::Client.new

    test = s3.get_object(
        :bucket => ENV["AWS_S3_BUCKET"],
        :key => picture.image_url.split('/')[-2],   
    )
end
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

您尝试访问的存储区必须使用指定的端点进行寻址.请将以后的所有请求发送到此端点.

我知道该区域是正确的,因为如果我将其更改为us-east-1,则会出现以下错误:

指定的密钥不存在.

我在这做错了什么?

小智 286

这个桶很可能是在不同的地区创建的,IE不是us-west-2.这是我见过的唯一一次"您尝试访问的存储桶必须使用指定的端点进行寻址.请将所有将来的请求发送到此端点."

美国标准是 us-east-1

  • 永远不会想到这一点,但它对我有用!在AWS SDK中,"美国标准"区域似乎是AWSRegionUSEast1. (29认同)
  • 如果您正在使用Ruby客户端,请在初始化客户端之前将"ENV ["AWS_REGION"]`设置为桶的正确值(例如"us-east-1"`) (6认同)
  • 我在 Java 中遇到了同样的问题。您的解决方案有所帮助。他们在 S3 中使用奇怪的名字。*Endpoint* 代表区域,*key* 代表存储库中的对象名称... (2认同)

Jay*_* Q. 20

在控制台中检查您的存储桶位置,然后将其用作对要使用的端点的引用:http: //docs.aws.amazon.com/general/latest/gr/rande.html#s3_region

  • 你能解释一下吗?替换`region:'us-west-1',`用什么? (2认同)

pra*_*sun 18

我遇到了类似的错误,因为存储桶位于区域中us-west-2,并且URL模式在路径中具有存储桶名称.有一次,我更改了URL模式,将bucketname作为URL子域来获取文件并且它有效.

例如,以前的URL是

https://s3.amazonaws.com/bucketname/filePath/filename
Run Code Online (Sandbox Code Playgroud)

然后我把它换成了

https://bucketname.s3.amazonaws.com/filePath/filename
Run Code Online (Sandbox Code Playgroud)


Zee*_*med 8

就我而言,我选择了错误的 RegionEndpoint。选择正确的 RegionEndpoint 后,它开始工作:)


gli*_*mbo 7

对于使用 的用户@aws-sdk/client-s3,请确保在发送命令之前向客户端提供存储桶的区域。使用 CLI 获取它:

$ aws s3api get-bucket-location --bucket <bucket_name>
{
    "LocationConstraint": "ca-central-1"
}
Run Code Online (Sandbox Code Playgroud)
const client = new S3Client({ region: "ca-central-1", credentials...
Run Code Online (Sandbox Code Playgroud)


小智 6

经过长时间的搜索,我找到了一个可行的解决方案。问题是因为错误region-code

\n\n

以下是区域代码列表,设置适当的区域代码即可解决您的问题。

\n\n
Code                         Name\nUS East (Ohio)               us-east-2\n\nUS East (N. Virginia)       us-east-1\n\nUS West (N. California)     us-west-1\n\nUS West (Oregon)            us-west-2\n\nAsia Pacific (Hong Kong)    ap-east-1\n\nAsia Pacific (Mumbai)       ap-south-1\n\nAsia Pacific (Osaka-Local)  ap-northeast-3\n\nAsia Pacific (Seoul)        ap-northeast-2\n\nAsia Pacific (Singapore)    ap-southeast-1\n\nAsia Pacific (Sydney)       ap-southeast-2\n\nAsia Pacific (Tokyo)        ap-northeast-1\n\nCanada (Central)            ca-central-1\n\nEurope (Frankfurt)          eu-central-1\n\nEurope (Ireland)            eu-west-1\n\nEurope (London)             eu-west-2\n\nEurope (Paris)             eu-west-3\n\nEurope (Stockholm)         eu-north-1\n\nMiddle East (Bahrain)      me-south-1\n\nSouth America (S\xc3\xa3o Paulo)   sa-east-1\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以通过单击存储桶名称右上角找到您的区域代码。

\n\n

在此输入图像描述

\n\n

了解模式详情请点击

\n