我有一个lambda,它使用来自另一个AWS账户的Athena的数据。所以我的角色是我的lambda假定具有跨账户访问权限。我在我的lambda中使用过STS客户端。有时lambda运行得很好,有时它会断开并给我这个错误。
" errorMessage":"调用StartQueryExecution操作时发生错误(ExpiredTokenException):请求中包含的安全令牌已过期", " errorType":" ClientError",
我在代码中使用的STS客户端是:
gdb
这是如何工作的?我希望我的lambda能够随时运行。可能是什么问题?
答案 0 :(得分:0)
RoleSessionName(string) - [REQUIRED]
假定角色会话的标识符。
使用角色会话名称唯一标识会话 角色由不同的委托人或不同的原因承担。在 跨帐户方案,角色会话名称可见,并且可以 由拥有该角色的帐户记录。角色会话名称是 也用于假定角色主体的ARN。这意味着 使用临时安全性的后续跨帐户API请求 凭据将角色会话名称公开给外部帐户 在他们的CloudTrail日志中。
因此,请尝试将AthenaLambdaSession
替换为唯一的RoleSessionName 。或者,如果要重用现有会话,请尝试检查会话超时,以确保有足够的时间执行lambda任务(最多5分钟)。如果< 5分钟,重新开始。