Как импортировать файл .pem в функцию AWS Lambda и как указать его в качестве пути для SFTP-подключения

Я пытаюсь переместить файл из расположения SFTP в расположение S3 с помощью библиотеки Paramiko. Подробности, указанные для подключения к SFTP: hostname, port, username и key_filename. Закрытый ключ - это файл .pem, и я не могу понять, как указать путь к файлу .pem в параметре key_filename.

Пожалуйста помоги!


person Afzal Abdul Azeez    schedule 04.03.2021    source источник
comment
Небольшое замечание: доставка ЧАСТНОГО ключа в Lambda звучит как очень и очень плохая идея с точки зрения безопасности. Эти файлы следует рассматривать как сверхчувствительные. Если бы мне пришлось предположить, что вы, вероятно, передаете их в систему управления версиями и т. Д., Когда создаете свою Lambda. Это похоже на кошмар. Я бы предпочел переместить эти файлы прямо с сервера, на котором запущен FTP-сервер, в вашу корзину S3 или найти какой-либо другой метод. И если вам нужно сделать что-то подобное, убедитесь, что вашему FTP-пользователю разрешено копировать только те файлы, которые вам нужны, и ничего более.   -  person Jens    schedule 04.03.2021


Ответы (1)


Для ссылки на файлы в вашей задаче Lambda см.
AWS Lambda читает содержимое файла в zip-архиве, загруженного как исходный код

Итак, это должно работать:

private_key_path = os.environ['LAMBDA_TASK_ROOT'] + "/key.pem"

В качестве альтернативы вам не нужно хранить ключ к файлу. Вы можете жестко запрограммировать его в свой скрипт Python, чтобы избежать любых внешних зависимостей, см.
SSH / SCP через Paramiko с ключом в строка


Связанный вопрос о pysftp:
Как подключить EC2 с помощью pysftp через AWS Lambda без файла .pem или вместо файла .pem < / а>

person Martin Prikryl    schedule 04.03.2021
comment
Я использовал LAMBDA_TASK_ROOT. - person Afzal Abdul Azeez; 05.03.2021