如何通过AWS Lambda使用pysftp连接EC2,而不使用.pem文件或.pem文件的替代文件

2024-10-01 07:38:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我想通过AWS Lambda使用pysftp库连接EC2。我使用下面的代码连接

mysftp = pysftp.Connection(
    host=Constants.MY_HOST_NAME,
    username=Constants.MY_EC2_INSTANCE_USERNAME,
    private_key="./clientiot.pem",
    cnopts=cnopts,
)

我已经将.pem文件和部署包放在AWS Lambda中。请参见此图:

pem file with deployment package

有时它工作有时不工作,就像有时它说的.pem文件找不到

"[Errno 2] No such file or directory: './clientiot.pem'"

如何处理?是否有任何方法可以安全地访问.pem文件或.pem文件的数据

我不想,我在AWS lambda


Tags: 文件lambda代码awshostmyconnectionec2
2条回答

PEM密钥是一种敏感资源,因此在本例中,我建议将其放入AWS Secrets Manager中,然后授予Lambda检索该密钥的权限

下面是关于如何创建秘密的official tutorial

如果您直接使用Paramiko(pysftp只是Paramiko的一个薄薄包装器),您可以将密钥硬编码到代码中,并且不会遇到外部资源的问题:
SSH/SCP through Paramiko with key in string


有关在Lambda任务中引用文件的信息,请参阅:
AWS Lambda read contents of file in zip uploaded as source code

因此,这应该是可行的:

private_key = os.environ['LAMBDA_TASK_ROOT'] + "/clientiot.pem"

相关问题 更多 >