繁体   English   中英

如何通过 AWS Lambda 使用 pysftp 连接 EC2,无需 .pem 文件或替代 to.pem 文件

[英]How to connect EC2 using pysftp via AWS Lambda without .pem file or alternate to .pem file

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

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

我有 put.pem 文件以及 AWS Lambda 中的部署 package。 看这张图片:

带有部署包的 pem 文件

有时它有时不起作用,就像有时它说.pem 文件未找到。

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

如何处理? 有什么方法可以安全地访问.pem 文件或.pem 文件的数据。

我不想在 AWS lambda 中使用.pem。

PEM 密钥是一种敏感资源,因此在这种情况下,我建议将其放入 AWS Secrets Manager,然后授予 Lambda 权限以检索该密钥。

这是有关如何创建秘密的官方教程

如果您直接使用 Paramiko(pysftp 只是 Paramiko 的一个薄包装器),您可以将密钥硬编码到您的代码中,并且您不会遇到外部资源问题:
通过 Paramiko 使用字符串中的密钥进行 SSH/SCP


有关 Lambda 任务中的文件的引用,请参阅:
AWS Lambda 读取作为源代码上传的 zip 中的文件内容

所以这应该工作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM