2

Ich habe seit Tagen versucht, Upload-Datei von der AWS-SDK für Javascript zu einem S3 Eimer. Ich habe die korrekte CORS-Richtlinie hinzugefügt und zu Testzwecken verfügt der Bucket über öffentliche Berechtigungen. Der Datei-Upload funktioniert jedoch nur in 50% der Fälle.AWS S3 Zugriff verweigert nur manchmal

Ich versuche, 3-4 Dateien in unmittelbarer Folge von meiner Website hochzuladen, aber ich bekomme Zugriff nach der zweiten verweigert. Aus irgendeinem Grund sind die ersten 2 erfolgreich hochgeladen, aber die dritte fehlgeschlagen. Ich habe keine Ahnung, ob ich einen Fehler entdeckt habe oder ob ich etwas falsch gemacht habe.

Meine CORs-Richtlinie ist. Ich habe auch versucht,

`<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
<CORSRule> 
    <AllowedOrigin>http://*</AllowedOrigin> 
    <AllowedOrigin>https://*</AllowedOrigin> 
    <AllowedMethod>PUT</AllowedMethod> 
    <AllowedMethod>POST</AllowedMethod> 
    <AllowedMethod>GET</AllowedMethod> 
    <AllowedMethod>DELETE</AllowedMethod> 
    <MaxAgeSeconds>3000</MaxAgeSeconds> 
    <ExposeHeader>ETag</ExposeHeader> 
    <AllowedHeader>*</AllowedHeader> 
</CORSRule> 
</CORSConfiguration>` 

Ich habe auch versucht:

<AllowedOrigin>*</AllowedOrigin> 

zu keinem Erfolg.

Zum Hochladen von Dateien verwende ich temporäre Anmeldeinformationen von der AWS-Cognito SDK für Js. Der Code, den ich verwenden, um Dateien zu laden ist wie folgt:

function uploadFile(fileData,callback){ 
var file = fileData[4]; 
var key = ""; 
for(i=0; i<3; i++){ 
var temp = Math.ceil(Math.random()*1000000000000) 
key=key+temp; 
} 

AWS.config.sessionToken= mySessionToken; 
AWS.config.accessKeyId= myAccessKey; 
AWS.config.secretAccessKey= mySecretKey; 
AWS.config.region= myRegion; 
var bucket = new AWS.S3({params: {Bucket: myBucketName}}); 
var params = {Key: key, ContentType: file.type, Body: file, ACL:'bucket-owner- 
full-control'}; 
bucket.upload(params, function (err, data) { 
if (err) { 

callback(false,err,fileData); 

} 
else{ 
callback(true,"",fileData); 
} 
}); 

} 

Wenn es auf der Website zählt ich bin das Hochladen auf einer EC2-Instanz gehostet wird.

Ich weiß, es gibt viele Beiträge darüber, wie man Datei-Uploads mit S3 arbeiten kann, aber ich habe noch nie gesehen, wo es nur einen Teil der Zeit funktioniert. Ich nehme an, dass die Anmeldeinformationen, die ich verwende, und meine CORS-Konfiguration korrekt sind, da sonst die Uploads niemals richtig funktionieren würden.

Vielen Dank im Voraus für die Hilfe!

Edit:

Dieser Fehler tritt nur auf dem dritten sequentiellen Upload und ab. Die erste und die zweite Datei, die ich hochlade, haben keine Fehler und sind erfolgreich.

Der Fehlercode I erhalten ist wie folgt:

Put [S3Instance] 403

Verbotene
<Error> 
<Code> 
AccessDenied 
</Code> 
<Message> 
Access Denied 
</Message> 
<RequestId> 
RequestId 
</RequestId> 
<HostId> 
HostId 
</HostId> 
</Error> 
+0

Wenn Sie sagen, dass es fehlschlägt, können Sie bitte die Fehlermeldung protokollieren, die Sie vom SDK erhalten, und sie zur Frage hinzufügen? –

+0

@ShobhitPuri Vielen Dank für Ihre Antwort. Ich habe den Fehlercode hinzugefügt, den ich erhalte. – JohnSmith

+0

Irgendwann habe ich Fehler mit AWS SDK aufgrund eines Problems mit der Systemuhr gesehen. Vielleicht versuche es zurückzusetzen. –

Antwort

0

aktivieren CloudTrail Protokollierung und werfen Sie einen Blick auf die Protokolle, die Ursache zu ermitteln.

Verwandte Themen