AWS Lambda:即使在STS:AssumeRole成功之后,lambda函数仍然使用旧的IAM角色

问题描述 投票:0回答:1

我创建了一个新的IAM角色,它具有对特定DynamoDb表的访问(扫描/查询)。

我试图从我的lambda函数使用STS Assume Role API调用,以便lambda函数可以访问特定的Dynamo Db表。

假设角色调用成功,我获得了角色ID,AccesskeyId,秘密访问密钥和会话令牌。

当我从我的lambda函数调用时,要访问Dynamo DB,我收到一个错误

AccessDeniedException:User:arn:aws:sts ::>:assume-role / ota-dev-us-east-1-lambdaRole /无权执行:dynamodb:扫描资源:arn:aws:dynamodb:us-east -1:>:表/ <>

我的问题是,即使在Lambda函数中的Role Assume调用成功之后,为什么lambda函数仍然使用旧角色来访问Dynamo DB?

我期待Lambda函数承担新角色,但从日志看起来,它仍然使用较旧的角色。

看起来我错过了介于两者之间的一些步骤。

amazon-web-services aws-lambda amazon-iam
1个回答
1
投票

根据您触发它的方式,STS AssumeRole调用不会自动刷新SDK的AWS.config全局对象中的凭据。

您需要检索AssumeRole返回的访问密钥,会话密钥和会话令牌,并将其传递给您的全局AWS凭证SDK对象。

确切的代码取决于您使用的编程语言,这里是Python的Boto3的文档

https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html

另外,我想知道为什么你不能在Lambda执行角色中永久访问DynamoDB表。这是为了限制功能范围,并根据呼叫者的身份在运行时提供细粒度的访问控制?

© www.soinside.com 2019 - 2024. All rights reserved.