У меня возникли проблемы с использованием AWS SDK для Javascript в приложении React, созданном с помощью Amplify. Я пытаюсь выполнить запись в таблицу DynamoDB после успешной загрузки изображения в S3. Загрузка изображения в настоящее время работает, но методы SDK для записи в тестовую таблицу DynamoDB - нет.
import React, { Component } from 'react';
import { Auth } from 'aws-amplify'
import { withAuthenticator } from 'aws-amplify-react'
import { Storage } from 'aws-amplify';
const aws = require('aws-sdk'); //"^2.2.41"
handleSubmit = (event) => {
event.preventDefault();
if (this.state.file == null) {
alert("File Not Chosen")
}
else {
const file = this.state.file;
Storage.put(this.state.name, file, {
contentType: 'image',
bucket:'myapp-20181030214040-deployment'
})
.then (result => console.info(result))
.catch(err => console.info(err));
}
Auth.currentCredentials()
.then(credentials => {
const dynamodb = new aws.DynamoDB({
apiVersion: '2012-08-10',
credentials: Auth.essentialCredentials(credentials)
});
let params = {
Item: {
"testKey": {
S: "test1"
}
},
ReturnConsumedCapacity: "TOTAL",
TableName: "test"
};
dynamodb.putItem(params, function(err, data) {
if (err) console.info(err, err.stack); // an error occurred
else console.info(data); // successful response
/*
data = {
ConsumedCapacity: {
CapacityUnits: 1,
TableName: "Music"
}
}
*/
});
})
}
Первая часть отправки дескриптора работает, вплоть до Storage.put, но метод DynamoDB putItem, похоже, ничего не делает, несмотря на компиляцию. Может ли кто-нибудь указать мне правильное направление использования их вместе?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете использовать что-то вроде AppSync или API Gateway перед вашим Dynamo db api.
Вы можете посмотреть: https://github.com/aws-samples/aws-mobile-appsync-events-starter-react
Для примера с использованием AppSync и GraphQL (при поддержке Dynamodb)
или: https://github.com/aws-samples/aws-mobile-react-sample
который использует API Gateway для вызова REST api для запроса Dynamodb. Это можно легко сделать, сначала вызвав amplify add storage, выбрав NoSql Database и настроив свою таблицу с помощью ampify, а затем вызвав amplify add api, он добавит кучу файлов в качестве бэкэнда для вас, который вы может вызвать, чтобы вызвать в ваш динамо-стол.
Но также в существующем коде вы можете попробовать использовать sdk с правильным оператором импорта в реакции, например import AWS from 'aws-sdk';, чтобы увидеть, работает ли он.