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
Jay*_* Q. 20
在控制台中检查您的存储桶位置,然后将其用作对要使用的端点的引用:http: //docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
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)
对于使用 的用户@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\nCode 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\nRun Code Online (Sandbox Code Playgroud)\n\n您可以通过单击存储桶名称右上角找到您的区域代码。
\n\n\n\n了解模式详情请点击
\n| 归档时间: |
|
| 查看次数: |
103461 次 |
| 最近记录: |