【发布时间】:2018-01-07 10:29:18
【问题描述】:
嗨,
请多多包涵,因为我是新手。
我正在尝试使用 NodeJS Knox 客户端将图像文件上传到 Amazon Web Services S3 存储桶,但每次尝试时都会收到 400 错误。我认为这可能是一个授权问题,因为我在 NodeJS 中的代码上找不到任何错误。我在完成上传后将 knox 客户端对象打印到控制台,我得到了这部分,不确定它是否告诉我 AWS 没有授权我:
代理:
代理{
域:空,
_events:{免费:[功能]},
_eventsCount:1,
_maxListeners:未定义,
默认端口:443,
协议:'https:',
选项:{路径:空},
请求:{},
插座:
{'photogridjose.s3.amazonaws.com:443:::::::::':
[ TLSSocket {
_tlsOptions:
{ 管道:空,
secureContext: SecureContext { 上下文: SecureContext {},
singleUse: true },
isServer:假,
requestCert: true,
* rejectUnauthorized: true,
会话:未定义,
NPNProtocols:未定义,
ALPN 协议:未定义,
请求OCSP:未定义},
_secureEstablished:假,
_securePending:假,
_newSessionPending:假,
_controlReleased:是的,
_SNICallback:空,
服务器名称:空,
npnProtocol:空,
alpnProtocol: null,
授权: false, *
授权错误:空,
加密:真,
_事件:
{关闭:
[[功能],
{ [Function: bound onceWrapper] listener: [Function] },
[功能:关闭]],
结束:
[ { [Function: bound onceWrapper] 监听器: [Function: onend] },
{ [Function: bound onceWrapper] listener: [Function: onHangUp] } ],
完成:[功能:onSocketFinish],
_socketEnd:[功能:onSocketEnd],
secureConnect: { [Function: bound onceWrapper] listener: [Function] },
connect: { [Function: bound onceWrapper] 监听器: [Function] },
安全:[功能],
免费:[功能:onFree],
agentRemove: [功能: onRemove] },
_eventsCount:9,
连接:是的,
_hadError:错误,
_句柄:
TLSWrap {
字节读取:0,
_externalStream:[外部],
fd:-1,
_父:
TCP {
字节读取:0,
_externalStream:[外部],
fd:-1,
阅读:[Getter/Setter],
所有者:[循环],
已读:空,
连接:空,
writeQueueSize: 0 },
_parentWrap:未定义,
_secureContext: SecureContext { 上下文: SecureContext {},
singleUse: true },
阅读:错误,
所有者:[循环],
onread:[功能:onread],
我使用了 AWS 提供的 AWSAccessKeyId 和 AWSSecretKey,并更改了 S3 存储桶的策略,因此将其设置为每个人都可以读/写。
这是我的存储桶策略文档:
{
“版本”:“2012-10-17”,
"Id": "Policy150032*******",
“声明”:[
{
“席德”:“Stmt1500*********”,
“效果”:“允许”,
“校长”:“*”,
“行动”:[
"s3:GetObject",
"s3:PutObject",
“*”
],
“资源”:“arn:aws:s3:::Myphotogrid/*”
}
]
}
这是我的 CORS 文档:
配置>
这是该事务的 S3 存储桶日志:
拒绝访问
zYNm+4zorTHrNnmHBAYPVpFfkJJ3VL1qtJ+PI9vJPRHhCb7vGhhav4YNRlbbakRJlpyab6Gfcn0=
错误>
这里有没有人有使用 AWS S3 存储桶的经验可以提供帮助?。
【问题讨论】:
-
400 是一个错误的请求。这可能意味着您的请求数据无效。不是授权问题。如果您未经授权,您将看到 403。检查here 以获取错误响应列表。
-
我删除了我的 S3 存储桶并创建了一个新存储桶,现在我收到 307 错误,这是一个临时重定向,可能是因为刚刚创建了新存储桶。如果这能解决问题,我会更新。这似乎是 S3 存储桶本身的权限问题。
标签: node.js amazon-web-services amazon-s3 knox-amazon-s3-client