【问题标题】:Uploading to Amazon S3 gives 403 error - following example photo album guide上传到 Amazon S3 会出现 403 错误 - 以下示例相册指南
【发布时间】:2020-09-13 22:49:34
【问题描述】:

我正在尝试将简单图像上传到 S3 存储桶,尝试上传时总是收到 403 错误,但 list 和 createAlbum 方法有效。

我已遵循本指南:Uploading Photos to Amazon S3 from a Browser - AWS SDK for JavaScript

由于教程的上传对我不起作用,我尝试使用S3.upload 方法但没有成功,如下所示:

    S3.upload({
      Key: 'my-album/aqui.png',
      Body: file,
      ACL: 'public-read',
      Bucket: SOUNDS_BUCKET_NAME
      }, function(err, data) {
        if(err) {
          alert('fail')
        } else {
          alert('Successfully Uploaded!');
        }
      }
    );

我相信这个错误是我的 S3 或我的身份池上的配置,但配置与教程相同:

CORS

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>
    <AllowedMethod>HEAD</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

认知:

S3:

我做错了什么?

【问题讨论】:

  • 你明白 403 错误是什么意思吗?
  • 是的,我知道,关键是我不知道我应该在哪里更改 aws 的权限以授予上传权限。

标签: javascript amazon-web-services amazon-s3


【解决方案1】:

这是将文件上传到 S3 的 Node.js 代码。

设置环境

AWS 凭证

要开始使用,您需要先生成 AWS 安全密钥访问凭证。为此,请登录您的 AWS 管理控制台

点击您的用户名:

选择访问密钥 -> 创建新访问密钥

之后,您可以从该窗口复制 访问密钥 ID秘密访问密钥,也可以将其下载为 .CSV 文件:

创建 S3 存储桶

现在让我们创建一个具有适当访问权限的 AWS S3 存储桶。我们可以使用 AWS 管理控制台或使用 Node.js 来做到这一点。

要使用管理控制台创建 S3 存储桶,请从服务菜单中选择 S3 服务:

选择“创建存储桶”并输入您的存储桶的名称以及您要托管存储桶的区域。如果您已经知道大多数用户来自哪个地区,那么明智的做法是选择尽可能接近他们所在地区的地区。这将确保来自服务器的文件将在更优化的时间范围内提供。

您为存储桶选择的名称应该是所有 AWS 用户中唯一的名称,因此如果该名称不可用,请尝试使用新名称:

按照向导操作并根据您的要求配置权限和其他设置。

要使用 Node.js 创建存储桶,我们首先必须设置我们的开发环境。

开发环境

通过配置一个新的 Node.js 项目开始使用我们的示例:

$ npm init

要开始在 Node.js 中使用任何 AWS 云服务,我们必须安装 AWS SDK(系统开发工具包)。

使用您喜欢的包管理器安装它 - 我们将使用 npm:

$ npm i --save aws-sdk

实施

创建 S3 存储桶

如果您已经手动创建了一个桶,您可以跳过这部分。但如果没有,让我们在您的项目目录中创建一个文件,例如,create-bucket.js

导入 aws-sdk 库以访问您的 S3 存储桶:

const AWS = require('aws-sdk');

现在,让我们定义三个常量来存储IDSECRETBUCKET_NAME。这些用于识别和访问我们的存储桶:

// Enter copied or downloaded access ID and secret key here
const ID = '';
const SECRET = '';

// The name of the bucket that you have created
const BUCKET_NAME = 'test-bucket';

现在我们需要通过传递访问密钥来初始化 S3 接口:

const s3 = new AWS.S3({
    accessKeyId: ID,
    secretAccessKey: SECRET
});

来源:Uploading Files to AWS S3 with Node.js

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 2015-10-28
    相关资源
    最近更新 更多