Как я могу получить доступ к AWS DynamoDB в качестве гостя?
Я использую aws-ampify и aws-sdk в Angular JS/Typescript. Я могу успешно получить доступ к своей AWS DynamoDB в качестве аутентифицированного пользователя.
Я также пытаюсь добавить гостевой пользовательский доступ к определенной таблице в Dynamo, но я пытаюсь понять, как получить ссылку на DynamoDB без каких-либо учетных данных.
Мой код выглядит так на данный момент
getDocumentClient() {
return Auth.currentCredentials()
.then(credentials => new AWS.DynamoDB.DocumentClient({ credentials: credentials }))
.catch(err => logger.debug('error getting document client', err));
Как бы я сделал нечто подобное, чтобы получить доступ к DynamoDB в качестве гостя, не прошедшего проверку подлинности?
ура
подветренный
1 ответ
Попробуй makeUnauthenticatedRequest.
Вот пример с S3 - я показал это, потому что я знаю, что вы можете делать запросы к S3 из AWS SDK как не прошедший проверку подлинности пользователь. Я предполагаю, что это также будет работать для DynamoDB, но не проверял это.
var s3 = new AWS.S3();
var params = {
Bucket: 'mybucket'
};
s3.makeUnauthenticatedRequest('listObjects', params, callback);
Более стратегическим подходом будут Amazon Cognito Identity Pools, которые поддерживают неаутентифицированные / гостевые идентификаторы. Cognito продает удостоверение и учетные данные AWS, и вы можете настроить роль IAM, разрешающую доступ для чтения DynamoDB для неаутентифицированных типов удостоверений.
Я думаю, что вы можете сослаться на то, что упоминается в блоге ниже.
https://aws.amazon.com/blogs/compute/using-amazon-api-gateway-as-a-proxy-for-dynamodb/
Основная идея заключается в использовании API Gateway в качестве прокси для DynamoDB API. Разрешение на доступ к DynamoDB предоставляется API-шлюзу через роль выполнения, а API-шлюз настроен для открытого доступа. При этом поток будет следующим:
Web Browser <----- HTTPS -----> API Gateway <----- AWS Service Proxy integration -----> DynamoDB