如何为定时Lambda函数添加权限,以查询DynamoDB表?

0

【以下的问题经过翻译处理】 在我的Amplify应用程序中,我需要一个lambda函数每天执行一次,查询一个数据库表来匹配符合某些条件的记录,如果找到了这些记录,就发一封电子邮件。

我在我的GraphQL架构中添加了一个包含我想使用的字段的二级索引。然后我使用Amplify生成了一个lambda函数,并添加了以下语句到执行策略中:

{
    "Action": [
        "dynamodb:GetItem",
        "dynamodb:Query"
    ],
    "Resource": "arn:aws:dynamodb:us-west-1:#redacted#:table/Request-#redacted#-prod",
    "Effect": "Allow"
},

我可以看到在创建的角色中权限已被授予,但是当我测试这个函数时,我会得到以下错误消息:

"message":"User: arn:aws:sts::#redacted#:assumed-role/crnLambdaRole0600f8a6-prod/sendReminders-prod is not authorized to perform: dynamodb:Query on resource: arn:aws:dynamodb:us-west-1:#redacted#:table/Request/index/requestsByDate because no identity-based policy allows the dynamodb:Query action"

我应该如何为我的lambda函数授予正确的权限,或者是否存在其他原因导致我收到此错误?

profile picture
专家
已提问 8 个月前15 查看次数
1 回答
0

【以下的回答经过翻译处理】 你需要更新策略以允许你访问索引和基本表。修改策略中的“资源”部分来包括索引:

      {
            "Action": [
                "dynamodb:GetItem",
                "dynamodb:Query"
            ],
            "Resource": [
               "arn:aws:dynamodb:us-west-1:#redacted#:table/Request-#redacted#-prod",
               "arn:aws:dynamodb:us-west-1:#redacted#:table/Request-#redacted#-prod/index/*"
             ],
            "Effect": "Allow"
        },

更多信息请查看此处

profile picture
专家
已回答 8 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则

相关内容