У меня есть проект реакции, созданный с помощью AWS Amplify и Appsync.
Я использую функциональность GraphQL в Amplify для взаимодействия с AppSync.
Я пытаюсь загрузить изображение на S3 из приложения реакции. Кто-нибудь делал это через Amplify GraphQL? Не могли бы вы помочь?
Кстати, я прочитал документацию о том, как это сделать с помощью Apollo и aws-appsync-react. Я пытаюсь понять, что делать с функциональностью GraphQL, встроенной в Amplify.


Я думаю, что сейчас невозможно загрузить сложный объект через Amplify.API, так как для загрузки с помощью AppSync вам необходимо отправить complexObjectsCredentials клиенту AppSync.
const client = new AWSAppSyncClient({
url: ENDPOINT,
region: REGION,
auth: { .. },
complexObjectsCredentials: () => Auth.currentCredentials(),
});
И похоже, что вы не можете предоставить эти учетные данные при настройке расширения.
В качестве альтернативы вы можете использовать модуль Amplify.Storage для загрузки файлов без AppSync.
import Amplify from 'aws-amplify';
import awsconfig from './aws-exports';
Amplify.configure(awsconfig);
// above goes at root of application
// below is example
import { Storage } from 'aws-amplify'
var imageSrc = this.webcam.getScreenshot()
fetch(imageSrc)
.then(res => res.blob() )
.then( blob => {
const file = new File( [blob], "tmp.png")
key = "uuid_for_image"
Storage.put(key, image)
})
для получения дополнительной информации: https://aws-amplify.github.io/docs/js/storage