Невозможно запросить таблицу DynamoDB из лямбда-функции - PullRequest
0 голосов
/ 09 июля 2019

Получите ошибку при выполнении лямбда-функции:

"AccessDeniedException: пользователь: ARN: AWS: Служащие :: 342213474092: предполагается, роль / testServerlessStack-ExecRole-YZCIWMHK86D8 / testServerlessStack-GetFailureKeysByOrder-OR3YS1NLQY0M не авторизован для выполнения: Dynamodb: сканирование на ресурс: ARN: AWS: dynamodb: мы-восток-2: 342213474092: стол / бар "

Роль выполнения функции имеет следующие разрешения:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "dynamodb:Query",
                "dynamodb:Scan"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-east-2:342213474092:table/Foo/*",
                "arn:aws:dynamodb:us-east-2:342213474092:table/Bar/*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

Лямбда запрашивает Foo, затем сканирует Bar.

1 Ответ

1 голос
/ 09 июля 2019

Согласно документам, ресурсы должны быть отформатированы как:

Для запроса таблицы: arn: aws: dynamicodb: region: account-id: table / table-name

или: arn: aws: dynamicodb: region: id-идентификатора: таблица / *

То же самое относится и к сканированию:

Для сканирования таблицы: arn: aws: Dynamodb: region: account-id: имя таблицы / таблицы

или: arn: aws: DynamodB: регион: идентификатор учетной записи: таблица / *

Вы пытались изменить ресурсы на:

"Resource": [
            "arn:aws:dynamodb:us-east-2:342213474092:table/Foo",
            "arn:aws:dynamodb:us-east-2:342213474092:table/Bar"
        ],

Документы здесь: Разрешения API DynamoDB

Исходя из вашего последнего комментария, это должно работать для вас:

arn:aws:dynamodb:region:account-id:table/*/index/*
...