AWS IAM - 从 Lambda 到 DynamoDB 的访问被拒绝
AWS IAM - Access Denied from Lambda to DynamoDB
我正在按照这个 tutorial from 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"
}
]
}
但是,正如我之前所说,我收到了这个错误:
[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
当我检查 IAM 策略模拟器时,我可以看到角色具有上述策略:
但是,正如预期的那样,我在尝试使用以下角色模拟对 DynamoDB 的访问时收到此错误:
有线索吗? :(
您的策略与实际资源不匹配。您在策略中引用了 table/lambda-dynamodb-url-shortener
,但错误消息提到了 table/url-shortener-table
。因此,您要么需要更改策略以允许访问 table/url-shortener-table
,要么修复 lambda 代码以实际与名为 lambda-dynamodb-url-shortener
的 dynamodb table 对话。 (可能第一个解决了这个问题)
我正在按照这个 tutorial from 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"
}
]
}
但是,正如我之前所说,我收到了这个错误:
[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
当我检查 IAM 策略模拟器时,我可以看到角色具有上述策略:
但是,正如预期的那样,我在尝试使用以下角色模拟对 DynamoDB 的访问时收到此错误:
有线索吗? :(
您的策略与实际资源不匹配。您在策略中引用了 table/lambda-dynamodb-url-shortener
,但错误消息提到了 table/url-shortener-table
。因此,您要么需要更改策略以允许访问 table/url-shortener-table
,要么修复 lambda 代码以实际与名为 lambda-dynamodb-url-shortener
的 dynamodb table 对话。 (可能第一个解决了这个问题)