【发布时间】:2021-02-21 10:30:57
【问题描述】:
我有一个 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 实例上有一个 .aws/credentials 文件会发生什么,以及这是否危险。我只是不确定这一切应该如何构建,或者运行我的脚本和访问秘密变量的安全/正确方法是什么。
任何见解都是有帮助的!
【问题讨论】:
标签: python amazon-web-services amazon-ec2 boto3 aws-ssm