У меня есть скрипт Python, который я хочу запустить и отправить мне уведомление, если будет выполнено определенное условие. Я использую Twilio, поэтому у меня есть токен API Twilio, и я хочу сохранить его в секрете. Он успешно работает локально, и сейчас я работаю над его запуском на экземпляре 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 и секретный ключ от моего экземпляра EC2, потому что я думал, что должен сохранять их конфиденциальность и не помещать токены/ключи в свой экземпляр EC2. Я думаю, что могу решить эту проблему, запустив aws configure при подключении по ssh к моему экземпляру, но я хочу понять, что произойдет, если в моем реальном экземпляре EC2 есть файл .aws/credentials, и действительно ли это так. опасный. Я просто не уверен, как все это должно быть структурировано и каков безопасный/правильный способ запуска моего сценария и доступа к секретным переменным.
Любая информация полезна!
Подробнее здесь:
https://stackoverflow.com/questions/662 ... -for-my-py