我有一个使用另一个AWS账户的雅典娜数据的lambda。所以我有一个我的lambda假定具有跨账户访问权限的角色。我在我的lambda中使用了STS客户端。有时lambda运行得非常好,有时会打破并给我这个错误。Aws lambda跨账户访问
“的errorMessage”: “发生错误(ExpiredTokenException)调用StartQueryExecution操作时:包括在请求安全令牌过期”, “ERRORTYPE”: “ClientError”,
STS客户端我在代码中使用的是:
def assume_role_to_session(role_arn, session_name):
client = boto3.client('sts')
response = client.assume_role(RoleArn=role_arn, RoleSessionName=session_name, DurationSeconds=900)
return boto3.Session(
aws_access_key_id=response['Credentials']['AccessKeyId'],
aws_secret_access_key=response['Credentials']['SecretAccessKey'],
aws_session_token=response['Credentials']['SessionToken'],
region_name='us-east-1')
assume_role_athena_session = assume_role_to_session(role_arn='arn:aws:iam::XXXXXXXXXXX:role/role-name',
session_name='AthenaLambdaSession')
这是如何工作的?我希望我的lambda可以随时运行,而不仅仅是有时。可能是什么问题呢?