В каком формате вы можете использовать get () из AWS S3? - PullRequest
0 голосов
/ 02 октября 2019

В настоящее время я делаю заявку, используя реактивную систему, expo и AWS. Я использую Cognito для аутентификации, и я настроил его так, чтобы я мог успешно изменять и запрашивать базу данных в DynamoDB.

Я сейчас пытаюсь написать код, чтобы я мог сохранить изображения для пользователей моего приложения в S3 и сохранить путь к этому изображению в DynamoDB. Тем не менее, после запуска следующего:

 const result2 = await Storage.get('test.txt')
 console.log(result2)

Журнал дает мне ссылку, которая приводит меня к тому, что, как представляется, XML-файл, который читает:

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
    <Code>InvalidToken</Code>
    <Message>
        The provided token is malformed or otherwise invalid.
    </Message>
    <Token-0>
        AgoJb3JpZ2luX2VjEA4aCXVzLWVhc3QtMiJIMEYCIQD/DyNL3qxQ3XrXBXsOlH2ojEks6sfdN9Vp7rPT5K9JFQIhAI2lEAmu6ivQIQKNtAo1VqFuZgdld5S/DrfcElNsVDo/Kq8FCOf//////////wEQABoMODM3Njc2NjA0ODkyIgwj9ikFX4w7POTaQlEqgwXkzZRq7kCqo8W0YaAD6fT7sJ4nok4nxzBO58frPZ4a1nSCESuwq/VShJZMQAMDkDPKci4vV v aJMhPOJXvtRjkoIQ5lGaCQAqYMXDeU/RFOJosmekNZ 0vZGu/X9KWfcNFhJaz7WW5FDl3N3u BGQdBzUjNhCrl01HMpKyL5F0HFB1mq4l H9d FyvPD4 LStyNOXYkGKf7X34hEZdccRkbjDyzfG4hBmv64JGiJfgh5 dD6IlNdNsqkw7N1Uw26Q7mf3erhOrwJwLIDyYC77LW3HU9uLqxQBH0MiTxJBcWW47BT4xENuSHZ136zRazgjHYcin Sr1NyCKwI4e2BbJ//Fudi Jnjf/QDPgYmSrpOO/0p5YGejpPYoZ6cqFy7V8xuI82YK/CZTc5hCOBMvo7NyPa2lsGkDXcfh IknmVEH5OXHhM0FPGM/U6L0ikBUYJgqqiVqByxdrUyYt F6FxapyCKgWcBCXwQUq28KoFvhIqXFbc5hlkGxFdUvIK2WWtMpDntcvU6hgivXoRRGKh880vkQV6bQsF3AaniH/El0EcI5jGF5aiciNZo9wNuMKMsA8w7bpT hBDETHeGOd3lenGNvgazdwWKnnhqN3QqwaSPFjd0Q41wNYOH8ySmP0S0/UbYCTIwRDx1o4FX6UI2THnS8nOvbtEG32QHDpqY3gpL00tCLGO4S9BFtkIC2TbhvX7jfF3bAbfvjEVOFhENT0K v OYq02Ig4dlMa4DdnPexEmy666R8Pbf 7fTCP2wzWDXjfxJjxkKx8gfsTmUOgDgUPb2p8azxSXzJr1Rg5 zhhX0DuVepg5z66HQS23RwAhIkOrXEzi95nPbd9NAOMNPw0OwFOrMB4lBUn04vbQAqDiKOe91AZR64351xwrn0jp5zZ YwumK9Tk/3rY/ N2ibYoiHdfOM3Wg4Ucm2 qCDWtJIkbvCAXlhjrpUZLmV6dJATJ417OzlUlJfsK04y7K8uNrGSFwbWYw3/gblaggupxQc7TrpmhKCIXHVIdZZmawMH5vfULkhHQL/FiQKdt13znIZ/hHGs1jc3cC9Z NmhMIXtufNlIGvKmWzNCq8LegxNzoZtlXqVWM=
    </Token-0>
    <RequestId>5186B48D259D1B01</RequestId>
    <HostId>
        RJptwOZEArdnFf7Zmk7Od8oFWh68GeR8ey/O13M39JuVxSScYyKXVVVsXwa+37Wus1M/DHttry8=
    </HostId>
</Error>

Для справки, остальныемоего файла App.js:

/*
  General
*/
import React from 'react';
import { Platform, Component, StyleSheet, Text, View, TextInput, Button, TouchableOpacity } from 'react-native';
/*
  Amplify
*/
import Amplify from '@aws-amplify/core'
import config from './src/aws-exports'
Amplify.configure({
  ...config,
  Analytics: { //Needed to disable possible promise reject error from analytics
      disabled: true
  }
});
/*
  Authentification
*/
import Auth from '@aws-amplify/auth'
import { withAuthenticator } from 'aws-amplify-react-native'
/*
  Database
*/
import API, { graphqlOperation } from '@aws-amplify/api'
import {Storage} from 'aws-amplify'
import * as queries from './src/graphql/queries';
import * as mutations from './src/graphql/mutations';
import * as subscriptions from './src/graphql/subscriptions';
import {v4 as uuid} from 'uuid';

class App extends React.Component {
  state = {
    name: "",
    User: []
  }

  onChangeText = (key, val) => {
        this.setState({ [key]: val })
    }

  addUser = async event => {

    const { name, User } = this.state

    event.preventDefault()

    const information = {
        username: name,

     }

    const result = await API.graphql(graphqlOperation(mutations.createUser, {input: information}))
    const newUser = result.data.createUser
     const updatedUser = [newUser, ...User]
     this.setState({ User: updatedUser, name: "" })

    /*
        Adding Files Test
    */
     const result2 = await Storage.get('test.txt')
     console.log(result2)


  }

  render() {
    return (
      <View style={styles.container}>
                <TextInput
                    style={styles.input}
                    value={this.state.name}
                    onChangeText={val => this.onChangeText("name", val)}
                    placeholder='Add a User'
                />
                <TouchableOpacity onPress={this.addUser} style={styles.buttonContainer}>
                    <Text style={styles.buttonText}>Add +</Text>
                </TouchableOpacity>
            </View>
    );
  }
}

export default withAuthenticator(App, { includeGreetings: true })

const styles = StyleSheet.create({
    container: {
        flex: 1,
        backgroundColor: "#fff",
        paddingHorizontal: 10,
        paddingTop: 50
    },
    input: {
        height: 50,
        borderBottomWidth: 2,
        borderBottomColor: "blue",
        marginVertical: 10
    },
    buttonContainer: {
        backgroundColor: "#34495e",
        marginTop: 10,
        marginBottom: 10,
        padding: 10,
        borderRadius: 5,
        alignItems: "center"
    },
    buttonText: {
        color: "#fff",
        fontSize: 24
    }
})

Что бы означала эта ошибка? Я просто даю get () неправильный тип ввода? У меня есть файл с именем «test.txt» на верхнем уровне моего S3.

...