Aws lambda跨账户访问

时间:2017-10-17 17:19:46

标签: amazon-web-services aws-lambda amazon-iam

我有一个lambda,它使用来自另一个AWS账户的Athena的数据。所以我的角色是我的lambda假定具有跨账户访问权限。我在我的lambda中使用过STS客户端。有时lambda运行得很好,有时它会断开并给我这个错误。

  

" errorMessage":"调用StartQueryExecution操作时发生错误(ExpiredTokenException):请求中包含的安全令牌已过期",         " errorType":" ClientError",

我在代码中使用的STS客户端是:

gdb

这是如何工作的?我希望我的lambda能够随时运行。可能是什么问题?

1 个答案:

答案 0 :(得分:0)

查看this document

  

RoleSessionName(string) - [REQUIRED]

     

假定角色会话的标识符

     

使用角色会话名称唯一标识会话   角色由不同的委托人或不同的原因承担。在   跨帐户方案,角色会话名称可见,并且可以   由拥有该角色的帐户记录。角色会话名称是   也用于假定角色主体的ARN。这意味着   使用临时安全性的后续跨帐户API请求   凭据将角色会话名称公开给外部帐户   在他们的CloudTrail日志中。

因此,请尝试将AthenaLambdaSession替换为唯一的RoleSessionName 。或者,如果要重用现有会话,请尝试检查会话超时,以确保有足够的时间执行lambda任务(最多5分钟)。如果< 5分钟,重新开始。