我的Python应用程序部署在EC2实例的docker容器中。密码存储在机密管理器中。在运行时,应用程序将对机密管理器进行API调用,以获取密码并进行连接。由于我们重新创建了该实例,它开始发出以下错误-
botocore.exceptions.NoCredentialsError:无法定位凭据
我的应用程序代码是-
session = boto3.session.Session()
client = session.client(service_name = 'secretmanager', region_name = 'us-east-1')
get_secret_value_response = client.get_secret_value(secretId = secret_name)
如果我运行-
aws secretmanager get-secret-value --secret-id abc
由于IAM策略已适当地附加到EC2实例,因此它工作时没有任何问题。
在过去的两天里,我一直在尝试解决这个问题,但仍然不清楚为什么会出现故障。任何提示或指导都会有所帮助。
问题出在实例元数据选项中的HTTPToken变量上,该变量默认为新更新所需。将其恢复为可选,boto3现在可以对实例元数据进行API调用并继承其角色。