Я использую sam
для определения таблицы dynamodb
как таковой:
#DynamoTables
DevicesTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: devices
AttributeDefinitions:
-
AttributeName: "id"
AttributeType: "S"
-
AttributeName: "customerId"
AttributeType: "S"
KeySchema:
-
AttributeName: "id"
KeyType: "HASH"
-
AttributeName: "customerId"
KeyType: "RANGE"
GlobalSecondaryIndexes:
-
IndexName: "customers"
KeySchema:
-
AttributeName: "customerId"
KeyType: "HASH"
Projection:
ProjectionType: "ALL"
ProvisionedThroughput:
ReadCapacityUnits: "5"
WriteCapacityUnits: "5"
ProvisionedThroughput:
ReadCapacityUnits: "5"
WriteCapacityUnits: "5"
Я могу получить доступ к таблице с помощью лямбда-функции с Properties: Policies: AmazonDynamoDBFullAccess
, определенной в sam, и определением введенных параметров с помощью TableName: 'devices'
в node
. Однако, когда я пытаюсь запросить индекс, определив запрос по индексу как таковой:
params = {
TableName: 'devices',
IndexName: 'customers'
// ...
}
Я получаю сообщение о том, что у лямбда-функции нет прав доступа к этому индексу:
AccessDeniedException: Пользователь: Пользователь: пользователь: arn: aws: sts ::: Предполагаемая роль / CodeStarWorker-Lambda / awscodestar-lambda-DeviceFunction не авторизован для
выполнить: DynamodB: запрос к ресурсу: TABLEURL / устройства / индекс / клиенты
Кто-нибудь знает, как я могу предоставить этот доступ или обойти это для запроса индекса?
UPDATE:
Я не думаю, что политика AmazonDynamoDBFullAccess влияет на вещи, когда я удалил ее из template.yml
, я все еще был в состоянии поместить в таблицу и все еще не мог сделать запрос по индексу. Нужно ли вручную добавлять роли?