AWS S3 JavaScript SDK - 网络错误:网络故障

ale*_*pja 6 javascript amazon-s3 amazon-web-services

我尝试使用 AWS 在浏览器网页的示例中提供的示例,但我不断收到错误NetworkingError: Network Failure。这是我正在使用的:

<html>
<head>
<script src="https://sdk.amazonaws.com/js/aws-sdk-2.0.0-rc11.min.js"></script>
<script type="text/javascript">
  // See the Configuring section to configure credentials in the SDK

  AWS.config.update({accessKeyId: '####', secretAccessKey: '####', region: 'us-east-1'});
  // Configure your region
//  AWS.config.region = '';
</script>
</head>
<body>
<input type="file" id="file-chooser" />
<button id="upload-button">Upload to S3</button>
<div id="results"></div>

<script type="text/javascript">
  var bucket = new AWS.S3({params: {Bucket: 'BUCKETNAMEGOESHERE'}});

  var fileChooser = document.getElementById('file-chooser');
  var button = document.getElementById('upload-button');
  var results = document.getElementById('results');
  button.addEventListener('click', function() {
    var file = fileChooser.files[0];
    if (file) {
      results.innerHTML = '';

      var params = {Key: file.name, ContentType: file.type, Body: file};
      bucket.putObject(params, function (err, data) {
        results.innerHTML = err ? err : 'UPLOADED.';
      });
    } else {
      results.innerHTML = 'Nothing to upload.';
    }
  }, false);
</script>

<div id="status"></div>
<ul id="objects"></ul>

<script type="text/javascript">
  var bucket = new AWS.S3({params: {Bucket: 'BUCKETNAMEGOESHERE'}});
  bucket.listObjects(function (err, data) {
    if (err) {
      document.getElementById('status').innerHTML =
        'Could not load objects from S3';
    } else {
      document.getElementById('status').innerHTML =
        'Could not load objects from S3';
    } else {
      document.getElementById('status').innerHTML =
        'Loaded ' + data.Contents.length + ' items from S3';
      for (var i = 0; i < data.Contents.length; i++) {
        document.getElementById('objects').innerHTML +=
          '<li>' + data.Contents[i].Key + '</li>';
      }
    }
  });
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我的存储桶位于美国标准区域,我无法确定它是否使用us-west-2us-east-1。当我转到我的存储桶的控制台时,该 URLhttps://console.aws.amazon.com/s3/home?region=us-west-2仍然有人在这里提到,美国标准是us-east-1

Msi*_*fer 7

出现此错误是因为您没有设置 CORS 配置。

  1. 打开 Amazon S3 控制台https://console.aws.amazon.com/s3/

  2. 从存储桶列表中选择您正在使用的存储桶的名称。

  3. 接下来,选择“权限”选项卡。

  4. 然后,在标题为“跨域资源共享 (CORS)”的编辑器中,您需要确保 S3 存储桶具有以下 CORS 配置:


[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "HEAD",
            "GET",
            "PUT",
            "POST",
            "DELETE"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [
            "ETag"
        ]
    }
]
Run Code Online (Sandbox Code Playgroud)


Wes*_*ley 3

截至撰写本答案时,根据Amazon Web Services General Reference,美国标准使用us-east-1.