AWS Secrets管理器可从EC2实例访问,但在从部署在同一实例上的docker容器运行时抛出NoCredentia



我的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调用并继承其角色。

最新更新