AWS IAM - 从 Lambda 到 DynamoDB 的访问被拒绝

ElP*_*ter 2 amazon-web-services url-shortener iaas amazon-dynamodb aws-lambda

我正在按照Medium.com 上的教程使用 AWS 创建 URL 缩短器。

我已经设置了整个过程,但在进行第一次测试时,我在尝试从 Lambda 获取 DynamoDB 项目时遇到权限错误。

如教程中所述,Lambda 在某个角色下运行。该角色附加了下一个策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "dynamodb:PutItem",
                "dynamodb:DeleteItem",
                "dynamodb:GetItem",
                "dynamodb:Query",
                "dynamodb:UpdateItem"
            ],
            "Resource": "arn:aws:dynamodb:eu-west-3:922842442607:table/lambda-dynamodb-url-shortener"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

但是,正如我之前所说,我收到此错误:

[ERROR] ClientError: An error occurred (AccessDeniedException) when calling the GetItem operation: User: arn:aws:sts::***:assumed-role/lambda-dynamodb-url-shortener-role/url-shortener-create is not authorized to perform: dynamodb:GetItem on resource: arn:aws:dynamodb:eu-west-3:***:table/url-shortener-table
Run Code Online (Sandbox Code Playgroud)

当我检查 IAM 策略模拟器时,我可以看到该角色具有上述策略:

在此输入图像描述

但是,正如预期的错误一样,我在尝试使用以下角色模拟对 DynamoDB 的访问时收到此错误:

在此输入图像描述

有什么线索吗?:(

luk*_*302 5

您的策略与实际资源不匹配。table/lambda-dynamodb-url-shortener您在政策中引用,但错误消息提到table/url-shortener-table。因此,您需要更改策略以允许访问table/url-shortener-table或修复 lambda 代码以实际与名为 的 dynamodb 表进行对话lambda-dynamodb-url-shortener。(可能第一个解决了这个问题)