簡體   English   中英

AWS Lambda跨帳戶訪問

[英]Aws lambda cross account access

我有一個lambda,它使用另一個AWS賬戶的Athena的數據。 因此,我的lambda承擔的角色是具有跨帳戶訪問權限。 我在lambda中使用了STS客戶端。 有時lambda運行得非常好,有時會中斷,並給我這個錯誤。

“ errorMessage”:“調用StartQueryExecution操作時發生錯誤(ExpiredTokenException):請求中包含的安全令牌已過期”,“ 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不僅可以隨時運行。 可能是什么問題呢?

這個文件

RoleSessionName(字符串)-[必需]

假定角色會話的標識符

當不同的負責人或出於不同的原因承擔相同的角色時,請使用角色會話名稱唯一地標識會話 在跨帳戶方案中,角色會話名稱是可見的,並且可由擁有角色的帳戶記錄。 角色會話名稱也用在假定角色主體的ARN中。 這意味着隨后使用臨時安全憑證的跨帳戶API請求將在其CloudTrail日志中向外部帳戶公開角色會話名稱。

因此,嘗試將AthenaLambdaSession替換為唯一的RoleSessionName 或者,如果您想重用現有會話,請嘗試檢查會話超時,以確保有足夠的時間來執行lambda任務(最多5分鍾)。 如果<5分鍾,請重新更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM