【发布时间】:2016-04-27 15:57:03
【问题描述】:
我正在使用tkinter 创建返回安全组的 gui 应用程序。目前,如果您想更改您的凭据(例如,如果您不小心输入了错误的凭据),您必须重新启动应用程序,否则 boto3 将继续使用旧凭据。
我不确定它为什么继续使用旧凭据,因为我正在使用当前输入的凭据再次运行所有内容。
这是设置环境变量并启动boto3 的代码的sn-p。如果您第一次输入正确的凭据,它就可以正常工作。
os.environ['AWS_ACCESS_KEY_ID'] = self.accessKey
os.environ['AWS_SECRET_ACCESS_KEY'] = self.secretKey
self.sts_client = boto3.client('sts')
self.assumedRoleObject = self.sts_client.assume_role(
RoleArn=self.role,
RoleSessionName="AssumeRoleSession1"
)
self.credentials = self.assumedRoleObject['Credentials']
self.ec2 = boto3.resource(
'ec2',
region_name=self.region,
aws_access_key_id=credentials['AccessKeyId'],
aws_secret_access_key=credentials['SecretAccessKey'],
aws_session_token=credentials['SessionToken'],
)
凭证变量设置使用:
self.accessKey = str(self.AWS_ACCESS_KEY_ID_Form.get())
self.secretKey = str(self.AWS_SECRET_ACCESS_KEY_Form.get())
self.role = str(self.AWS_ROLE_ARN_Form.get())
self.region = str(self.AWS_REGION_Form.get())
self.instanceID = str(self.AWS_INSTANCE_ID_Form.get())
有没有办法在boto3 中使用不同的凭据而无需重新启动程序?
【问题讨论】:
-
这是为 boto3 模块分配可变访问权限的错误方法。因为 boto API 将假定并使用缓存的访问密钥 @Vor 答案是告诉 boto 的显式方式。
-
@mootmoot 如果我使用
importlib.reload重新加载模块,它应该“清除”缓存对吗?
标签: python python-3.x amazon-web-services tkinter boto3