AWS - JavaScript - операции CRUD на DynamoDB с аутентифицированным пользователем Cognito - PullRequest
0 голосов
/ 23 мая 2019

Попытка выполнить операции CRUD (создание, чтение, обновление, удаление) для таблиц DynamoDB, имеющих определенные разрешения пользователя.

Итак, я создал политику IAM для своей таблицы и роли пользователей, связанные сполитика.Я также создал своих пользователей и пулы удостоверений.Осталось, я полагаю, что мне нужно выполнить фактическое кодирование.

Так что я нашел этот CRUD SDK, предлагаемый amazon: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.Js.03.html

SDK предлагает функции для выполнения операций CRUD на желаемомстолы.Это замечательно.Хотя я не совсем уверен, как интегрировать конкретного пользователя, основываясь на разрешениях, которые я настроил для таблицы.

<html>
<head>
<script src="https://sdk.amazonaws.com/js/aws-sdk-2.7.16.min.js">.
</script>

<script>
AWS.config.update({
  region: "us-west-2",
  endpoint: 'http://localhost:8000',
  // accessKeyId default can be used while using the downloadable version of DynamoDB. 
  // For security reasons, do not store AWS Credentials in your files. Use Amazon Cognito instead.
  accessKeyId: "fakeMyKeyId",
  // secretAccessKey default can be used while using the downloadable version of DynamoDB. 
  // For security reasons, do not store AWS Credentials in your files. Use Amazon Cognito instead.
  secretAccessKey: "fakeSecretAccessKey"
});

var docClient = new AWS.DynamoDB.DocumentClient();

function conditionalDelete() {
    var table = "Movies";
    var year = 2015;
    var title = "The Big New Movie";

    var params = {
        TableName:table,
        Key:{
            "year":year,
            "title":title
        },
        ConditionExpression:"info.rating <= :val",
        ExpressionAttributeValues: {
            ":val": 5.0
        }
    };

    docClient.delete(params, function(err, data) {
        if (err) {
            document.getElementById('textarea').innerHTML = "The conditional delete failed: " + "\n" + JSON.stringify(err, undefined, 2);
        } else {
            document.getElementById('textarea').innerHTML = "The conditional delete succeeded: " + "\n" + JSON.stringify(data, undefined, 2);
        }
    });
}

</script>
</head>

<body>
<input id="conditionalDelete" type="button" value="Conditional Delete" onclick="conditionalDelete();" />
<br><br>
<textarea readonly id= "textarea" style="width:400px; height:800px">
</textarea>

</body>
</html>

Это действительно полезный код.Хотя в config.update им требуются accessKeyId: "fakeMyKeyId" и secretAccessKey: "fakeSecretAccessKey" Как бы я заменил их аутентифицированным пользователем Cognito?

У кого-нибудь есть идеи или ресурсы для этого?Я смотрел везде.Заранее спасибо!

1 Ответ

0 голосов
/ 24 мая 2019

После аутентификации пользователя вы можете использовать метод GetCredentialsForIdentity для получения временного ключа доступа, секретного ключа и токена сеанса. Эти три учетных данных используются для доступа к ресурсам AWS. Так что вам придется обновить ваш конфиг с этими. Имейте в виду, что срок действия этих ключей истечет через час.

...