Загрузка на Amazon S3 дает ошибку 403 - следующий пример руководства по фотоальбому - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь загрузить простое изображение в корзину S3, я всегда получаю сообщение об ошибке 403 при попытке загрузки, но методы list и createAlbum работают.

Я следовал этому руководству: Загрузка фотографий в Amazon S3 из браузера - AWS SDK для 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>

Cognito: enter image description here

S3: enter image description here

Что я делаю не так?

1 Ответ

0 голосов
/ 30 мая 2020

Это код Node.js для загрузки файлов в S3.

Настройка среды

AWS Учетные данные

Для начала вам необходимо сгенерировать AWS Учетные данные для доступа к ключу безопасности сначала. Для этого войдите в AWS Консоль управления .

Щелкните свое имя пользователя:

enter image description here

Выберите Ключи доступа -> Создать новый ключ доступа :

enter image description here

После этого вы можете скопировать Идентификатор ключа доступа и Секретный ключ доступа из этого окна или вы можете загрузить его как файл .CSV:

enter image description here

Создание корзины S3

Теперь давайте создадим корзину AWS S3 с надлежащим доступом. Мы можем сделать это с помощью консоли управления AWS или с помощью Node.js.

Чтобы создать корзину S3 с помощью консоли управления, go в службу S3, выбрав ее в меню службы:

enter image description here

Выберите «Создать сегмент» и введите имя сегмента и регион, в котором вы хотите разместить свой сегмент. Если вы уже знаете, из какого региона будет приезжать большинство ваших пользователей, разумно выбрать регион как можно ближе к их. Это гарантирует, что файлы с сервера будут обслуживаться в более оптимальные сроки.

Имя, которое вы выбираете для своей корзины, должно быть уникальным для всех AWS пользователей, поэтому попробуйте новое, если имя недоступно:

enter image description here

Следуйте инструкциям мастера и настройте разрешения и другие параметры в соответствии с вашими требованиями.

Для создания сегмента используя Node.js, нам сначала нужно настроить нашу среду разработки.

Среда разработки

Начните с нашего примера, настроив новый Node.js проект:

$ npm init

Чтобы начать использовать любые облачные службы AWS в Node.js, мы должны установить AWS SDK (System Development Kit).

Установите его, используя предпочитаемый вами менеджер пакетов - мы будем использовать npm:

$ npm i --save aws-sdk

Реализация

Создание сегмента S3

Если вы уже создали сегмент вручную, вы можете пропустить это часть. Но если нет, давайте создадим файл, скажем, create-bucket.js в каталоге вашего проекта.

Импортируйте библиотеку aws-sdk для доступа к вашей корзине S3:

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

Теперь давайте определим три константы для хранения ID, SECRET и BUCKET_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
});

Источник: Загрузка файлов в AWS S3 с помощью Node.js

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...