Ошибка загрузки AWSS3Provider: в параметрах отсутствует обязательный ключ Bucket?

Я использую react-native-image-picker, чтобы получить путь к файлу видео на моем телефоне-симуляторе iOS для моего собственного приложения React. Как использовать это для загрузки на S3 с помощью Amplify?

import ImagePicker from 'react-native-image-picker';
import RNFetchBlob from 'react-native-fetch-blob';
import {Storage} from 'aws-amplify';

class App extends Component {

 constructor(props) {
    super(props)

 }

  //This function is called on a Button click
  pickVideo = async () => {

     const options = {
     mediaType: 'video'
  };

  ImagePicker.launchImageLibrary(options, (response) => {

    if(response.didCancel){
      console.log('User cancelled image picker');
    }
    else if (response.error){
       console.log('ImagePicker error: ', response.error);
    }
    else{
       this.setState({ 
          vidFileName: response.fileName,
        });

        console.log(response.uri);

       this.putFileInS3(response.path, repsonse.filename);
    }
   });

  }

  readFile = (somefilePath) => {
      return RNFetchBlob.fs.readFile(somefilePath, 'base64').then(data => new 
      Buffer(data, 'base64'));
  } 

  putFileInS3 = (filePath, fileName) => {  

    this.readFile(filePath).then(buffer => {
    Storage.put(fileName, buffer, { contentType: 'video/mp4' })
     .then(() => {console.log('successfully saved to bucket');})
     .catch(e => { console.log(e);});
   }
  }

Хотя я получаю ответы от средства выбора изображений, при попытке загрузки он говорит: AWSS3Provider: Отсутствует требуемый ключ Bucket в параметрах, даже если пользователь вошел в систему как пользователь IAM, используя withAuthenticator.


person chai86    schedule 10.02.2019    source источник


Ответы (1)


Вам необходимо настроить ведро. https://aws-amplify.github.io/docs/js/storage

Некоторые примеры из приведенной выше ссылки: 1 -

Storage.configure({
    AWSS3: {
        bucket: '',//Your bucket ARN;
        region: ''//Specify the region your bucket was created in;
    }
});

2 -

import Amplify from 'aws-amplify';

Amplify.configure({
    Auth: {
        identityPoolId: 'XX-XXXX-X:XXXXXXXX-XXXX-1234-abcd-1234567890ab', 
        region: 'XX-XXXX-X', // REQUIRED - Amazon Cognito Region
        userPoolId: 'XX-XXXX-X_abcd1234', //OPTIONAL - Amazon Cognito User Pool ID
        userPoolWebClientId: 'XX-XXXX-X_abcd1234', 
    },
    Storage: {
        AWSS3: {
            bucket: '', //REQUIRED -  Amazon S3 bucket
            region: 'XX-XXXX-X', //OPTIONAL -  Amazon service region
        }
    }
});
person Fabio Cirone    schedule 11.02.2019
comment
Привет, Фабио, где они включены (например, App.js или другой файл)? Я просто беспокоюсь о безопасности. - person chai86; 11.02.2019
comment
Я был почти уверен, что настраиваюсь с помощью интерфейса командной строки автоматически, поэтому, возможно, мне не нужна ручная настройка, описанная выше. Как должен выглядеть мой файл "aws-exports.js"? - person chai86; 11.02.2019