【发布时间】:2022-07-20 18:48:41
【问题描述】:
我是 Python 和编程的新手,所以我很感激任何帮助。
我正在与另一个 AWS 账户建立连接,因此我需要从承担角色建立一个 sts 连接,然后连接到另一个账户的 S3。 我需要执行一个需要数小时的复制对象操作,我收到了这个错误:
botocore.exceptions.ClientError:调用 CopyObject 操作时发生错误(ExpiredToken):提供的令牌已过期。
我的代码在运行时是这样的,建立连接 sts 和 s3:
def credential_assume_role(client):
sts_connection = client
assumed_role_object = sts_connection.assume_role(
RoleArn="arn:roleexample",
RoleSessionName="cross_acct_ecs"
)
return assumed_role_object['Credentials']
def main():
credentials = credential_assume_role(boto3.client('sts'))
s3_client = boto3.client(
's3',
aws_access_key_id=credentials['AccessKeyId'],
aws_secret_access_key=credentials['SecretAccessKey'],
aws_session_token=credentials['SessionToken'],
)
我正在阅读 boto3 中的 RefreshableCredentials 库,但我仍然不太了解这个概念。
有什么建议可以让我在 1 小时后重新创建令牌?
【问题讨论】:
标签: python-3.x amazon-web-services boto3 sts assume-role