【问题标题】:How to use .pem file inside Amazon Lambda to access EC2 instance如何使用 Amazon Lambda 中的 .pem 文件访问 EC2 实例
【发布时间】:2020-01-14 11:54:54
【问题描述】:

我目前正在处理一个在 AWS 环境中进行的项目。我已经配置了一个 S3 存储桶来接收邮件(邮件来自 SES,但这不相关)。

我想做的是创建一个能够访问 EC2 实例并启动 python 脚本的 Lambda 函数。到目前为止,我有下面的代码。问题是当我创建我的 ec2 实例时,我没有创建任何用户名或密码来通过 SSH 连接。我只有一个 .pem 文件(证书文件)来对实例进行身份验证。

我做了一些研究,但找不到任何有用的东西。

var SSH = require('simple-ssh');
var ssh = new SSH({
    host: 'localhost',
    user: 'username',
    pass: 'password'
});

ssh.exec('python3.6 path/to/my/python/script.py', {
    out: function(stdout) {
        console.log(stdout);
    }
}).start();

我一直在考虑多种解决方案,但我完全不确定:

  • 在 Javascript 中查找处理 .pem 文件的 SSH 库
  • 将 .pem 转换为字符串(我认为根本不安全)。
  • 也许在 EC2 中创建一个新的 ssh 用户?

感谢您的宝贵时间。

【问题讨论】:

  • 这似乎有点奇怪 - 它是否必须通过 SSH?你可以使用例如http请求吗?
  • 您是否考虑过让实例轮询 Amazon SQS 队列以获取工作,而不是触发 EC2 实例中的某些内容?这是一种更简单可靠的方法。
  • @danimal 我不确定哪个协议可以在 SSH 旁边远程运行命令。
  • 要触发脚本通过对 EC2 实例的 HTTP 请求运行,您需要在 EC2 实例上运行 24x7 的 Web 应用程序,监听请求。你当然可以这样做,但它需要一些应用程序开发人员。
  • @jarmod 既然有人说,这听起来很明显,感谢您的建议

标签: javascript amazon-web-services aws-lambda pem


【解决方案1】:

更好的选择是使用 AWS Systems Manager 在您的 Amazon EC2 实例上远程运行命令。

如果您仍然选择使用simple-ssh,那么您需要在创建 SSH 对象时在config.key 中提供一个 SSH 密钥。您可以将私有密钥存储在 Parameter Store 或 Secrets Manager 中并在 Lambda 中检索它。在这种情况下,您绝对应该使用无密码 SSH(带密钥对)。

【讨论】:

  • 是的,您的第二点正是我想要的,我将检查 AWS Systems Manager,但我需要得到上级的批准。谢谢大佬!
猜你喜欢
  • 1970-01-01
  • 2015-12-30
  • 2013-10-06
  • 1970-01-01
  • 2015-10-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-01
  • 1970-01-01
相关资源
最近更新 更多