簡體   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