s3 javascript创建桶

s3 javascript创建桶

问题描述:

我的cognitoIdentityPool代码为我的凭据,并在浏览器中使用amazon aws javascript。除了createBucket之外,我可以在浏览器中使用JavaScript进行所有操作。我在html中的js代码看起来像;所有的s3 javascript创建桶

var s3 = new AWS.S3(); 
var params = { 
    Bucket: 'myuniquebucketname', 
    ACL: 'private', 
    CreateBucketConfiguration: { 
    LocationConstraint: 'us-east-1' 
    }, 
    GrantFullControl: 'STRING_VALUE', 
    GrantRead: 'STRING_VALUE', 
    GrantReadACP: 'STRING_VALUE', 
    GrantWrite: 'STRING_VALUE', 
    GrantWriteACP: 'STRING_VALUE' 
}; 
s3.createBucket(params, function(err, data) { 
    if (err) console.log(err, err.stack); // an error occurred 
    else  console.log(data);   // successful response 
}); 

首先,如果我充分的控制,我能写STRING_VALUE在GrantFullControl: 'STRING_VALUE', 顺便说一句,它不是必要成立GrantRead,GrantWrite或工作脚本了其他补助线。它给出了交叉来源的CORS错误。但是,我可以清除桶,清除上传文件到桶等,没有CORS错误。请任何想法。

+0

我不知道你可以用JS做到这一点,你能告诉我在哪里可以找到在S3上使用JS的教程吗? – zer00ne

我相信这是预期的行为。假设您的页面来自mybucket.s3.amazonaws.com,然后通过putObject上传文件会导致对mybucket.s3.amazonaws.com(同一个域)的HTTP请求,因此可以,但调用createBucket的目标是s3.amazonaws .com(一个不同的域),因此会导致CORS错误。同样,如果您调用listBuckets,则出于同样的原因它将失败并显示CORS错误。

+0

相同的域名,不同的域名或localhost.local域名无关紧要。我可以把文件,删除桶等从每个域。只是“createBucket”我不能从任何域。我的CORS配置没问题。 –

+0

@kaya_如果发出listBuckets会发生什么? – jarmod

+0

是的,当我调用listBuckets时,它会因CORS错误而失败。但是在sdk中有listBuckets属性; http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#listBuckets-property 为什么? –