繁体   English   中英

如何正确/安全地从 AWS SSM 参数存储中访问 EC2 实例上我的 Python 脚本的参数?

[英]How to correctly/safely access parameters from AWS SSM Parameter store for my Python script on EC2 instance?

我有一个 Python 脚本,如果满足某个条件,我想运行它并向我发送一条通知。 我正在使用 Twilio,所以我有一个 Twilio API 令牌,我想保密。 我让它在本地成功运行,现在我正在努力让它在 EC2 实例上运行。

关于 AWS 步骤,我创建了一个具有权限的 IAM 用户,启动了 EC2 实例(并保存了 ssh 密钥),并在 AWS SSM 参数存储中创建了一些参数。 然后我 ssh 进入实例并安装了 boto3。 当我尝试使用 boto3 获取参数时,我无法找到凭据:

# test.py
import boto3

ssm = boto3.client('ssm', region_name='us-west-1')

secret = ssm.get_parameter(Name='/test/cli-parameter')
print(secret)

# running the file in the console
>> python test.py
...
    raise NoCredentialsError
botocore.exceptions.NoCredentialsError: Unable to locate credentials

我很确定这意味着它找不到在我运行aws configure时创建的凭据,它创建了 .aws/credentials 文件。 我相信这是因为我在本地机器上运行了aws configure ,而不是在 ssh 进入实例时运行它。 我这样做是为了让我的 AWS ID 和密钥远离我的 EC2 实例,因为我认为我应该保持它的私密性,而不是在我的 EC2 实例上放置令牌/密钥。 我想我可以通过在 ssh 进入我的实例时运行aws configure来解决这个问题,但我想了解如果我的实际 EC2 实例上有 a.aws/credentials 文件会发生什么,以及这是否危险。 我只是不确定这一切应该如何构建,或者运行我的脚本和访问秘密变量的安全/正确方法是什么。

任何见解都是有帮助的!

我怀疑您正在寻找的答案类似于:

  1. 创建一个允许访问 SSM 参数的 IAM 策略(为什么不使用 SecretStore?)
  2. 将该 IAM 策略附加到角色。
  3. 将角色附加到您的 EC2 实例(实例配置文件)
  4. 当 boto3 需要与参数存储通信时,它现在将自动从元数据服务收集 AWS 密钥等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM