繁体   English   中英

每当我尝试将图像上传到Amazon Web Services S3存储桶时,都会收到400错误

[英]Getting a 400 error whenever I try to Upload an image to an Amazon Web Services S3 bucket

你好

请耐心等待,因为我是新手。

我正在尝试使用NodeJS Knox客户端将图像文件上传到Amazon Web Services S3存储桶,但是每次尝试都会出现400错误。 我认为这可能是授权问题,因为我在NodeJS中的代码中找不到任何错误。 上传完成后,我将knox客户端对象打印到控制台上,并获得了这一部分,不确定是否告诉我AWS未授权我:

代理商:
代理商{
域:null,
_events:{免费:[功能]},
_eventsCount:1
_maxListeners:未定义,
defaultPort:443,
协议:“ https:”,
选项:{path:null},
要求: {},
插座:
{'photogridjose.s3.amazonaws.com:443 ::::::::::':
[TLSSocket {
_tlsOptions:
{pipe:null,
secureContext:SecureContext {上下文:SecureContext {},
singleUse:true},
isServer:否,
requestCert:是的,
* rejectUnauthorized:是的,
会话:未定义,
NPN协议:未定义,
ALPN协议:未定义,
requestOCSP:undefined},
_secureFounded:否,
_securePending:否,
_newSessionPending:否,
_controlReleased:是的,
_SNICallback:null,
服务器名称:null,
npnProtocol:null,
alpnProtocol:null,
授权:假,*
authorizationError:null,
加密:true,
_事件:
{ 关:
[[功能],
{[功能:绑定一次包装器]侦听器:[功能]},
[功能:onClose]],
结束:
[{[功能:绑定一次包装器]侦听器:[功能:onend]},
{[函数:绑定一次包装器]侦听器:[函数:onHangUp]}],
完成:[功能:onSocketFinish],
_socketEnd:[功能:onSocketEnd],
secureConnect:{[功能:绑定一次包装器]侦听器:[功能]},
连接:{[功能:绑定一次包装]侦听器:[功能]},
安全:[功能],
免费:[功能:onFree],
agentRemove:[功能:onRemove]},
_eventsCount:9
连接:正确,
_hadError:否,
_处理:
TLSWrap {
bytesRead:0,
_externalStream:[外部],
fd:-1,
_父母:
TCP {
bytesRead:0,
_externalStream:[外部],
fd:-1,
阅读:[Getter / Setter],
所有者:[Circular],
onread:null,
onconnection:null,
writeQueueSize:0},
_parentWrap:未定义,
_secureContext:SecureContext {上下文:SecureContext {},
singleUse:true},
阅读:错误,
所有者:[Circular],
onread:[功能:onread],


我使用了AWS提供的AWSAccessKeyId和AWSSecretKey并更改了S3存储桶的策略,因此将其设置为对所有人可读/写。

这是我的存储桶策略文档:

{
“ Version”:“ 2012-10-17”,
“ Id”:“ Policy150032 *******”,
“声明”:[
{
“ Sid”:“ Stmt1500 *********”,
“效果”:“允许”,
“主体”:“ *”,
“动作”:[
“ s3:GetObject”,
“ s3:PutObject”,
“ *”
],
“资源”:“ arn:aws:s3 ::: Myphotogrid / *”
}
]
}


这是我的CORS文件:

<CORSConfiguration xmlns =“ http://s3.amazonaws.com/doc/2006-03-01/”>
<CORSRule>
<AllowedOrigin> * </ AllowedOrigin>
<AllowedMethod>获取</ AllowedMethod>
<AllowedMethod>开机自检</ AllowedMethod>
<AllowedMethod> PUT </ AllowedMethod>
<AllowedHeader>授权</ AllowedHeader>
</ CORSRule>
</ CORSConfiguration>

这是该事务的S3存储桶的日志:

<错误>
<Code> AccessDenied </ Code>
<Message>访问被拒绝</ Message>
<RequestId> 37329C57F01BEC29 </ RequestId>
<HostId> zYNm + 4zorTHrNnmHBAYPVpFfkJJ3VL1qtJ + PI9vJPRHhCb7vGhhav4YNRlbbakRJlpyab6Gfcn0 = </ HostId>
</ Error>

这里有没有人有使用AWS S3存储桶有帮助的经验?

制作了一个新的S3存储桶并删除了旧的S3存储桶,确保公众有权读取/写入存储桶,并选择离我的位置最近的服务器来存储它,这既解决了400错误,又解决了307错误。 我现在收到200成功响应,并且文件没有问题地上传到我的S3存储桶。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM