如何在没有 .pem 文件或替代 .pem 文件的情况下通过 AWS Lambda 使用 pysftp 连接 EC2
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,
)
我已将 .pem 文件与部署包一起放入 AWS Lambda 中。看这张图片:
有时它工作有时不工作,就像有时它说找不到 .pem 文件。
"[Errno 2] No such file or directory: './clientiot.pem'"
如何处理?有什么方法可以安全地访问.pem 文件或.pem 文件的数据。
我不想在 AWS lambda 中使用 .pem。
PEM 密钥是一种敏感资源,因此在这种情况下,我建议将其放入 AWS Secrets Manager,然后授予 Lambda 检索该秘密的权限。
这里是official tutorial如何创建秘密。
如果您直接使用 Paramiko(pysftp 只是 Paramiko 的薄包装),您可以将密钥硬编码到您的代码中,并且您不会遇到外部资源的问题:
要在您的 Lambda 任务中引用文件,请参阅:
所以这应该有效:
private_key = os.environ['LAMBDA_TASK_ROOT'] + "/clientiot.pem"
我想通过 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 文件。
"[Errno 2] No such file or directory: './clientiot.pem'"
如何处理?有什么方法可以安全地访问.pem 文件或.pem 文件的数据。
我不想在 AWS lambda 中使用 .pem。
PEM 密钥是一种敏感资源,因此在这种情况下,我建议将其放入 AWS Secrets Manager,然后授予 Lambda 检索该秘密的权限。
这里是official tutorial如何创建秘密。
如果您直接使用 Paramiko(pysftp 只是 Paramiko 的薄包装),您可以将密钥硬编码到您的代码中,并且您不会遇到外部资源的问题:
要在您的 Lambda 任务中引用文件,请参阅:
所以这应该有效:
private_key = os.environ['LAMBDA_TASK_ROOT'] + "/clientiot.pem"