У меня есть сценарий 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 ID и секретный ключ в моем экземпляре EC2, потому что я думал, что должен сохранить этот секретный код и не помещать токены / ключи в свой экземпляр EC2. Я думаю, что могу решить эту проблему, запустив aws configure
в то время как ssh'd в моем экземпляре, но я хочу понять, что произойдет, если на моем фактическом экземпляре EC2 есть файл .aws / credentials, и опасно ли это. Я просто не уверен, как все это должно быть структурировано, или каков безопасный / правильный способ запуска моего скрипта и доступа к секретным переменным.
Любое понимание вообще полезно!