使用 Certificate、Private Key 和 CA 的 AWS Lambda NodeJS 请求



要连接到特定的 API,我们需要包含部署到 AWS Lambda 的 NodeJS 函数中的证书、私有密钥和 CA。

在测试环境中,我们只能使用 fs.readFileSync 到测试服务器上的本地路径,但这当然不适用于 AWS Lambda。

我们的呼吁如下:

return request({
      method: args.method,
      uri: this.baseUrl,
      headers: {
        "User-Agent": "XXXX-Wrapper"
      },
      form: this.queryParams,
      json: false,
      cert: this.cert,
      key: this.key,
      ca: this.ca
    }, callback);

有没有办法从 AWS KMS 读取证书信息,或者这是将这些证书上传到私有 S3 存储桶并从那里读取它们的唯一方法?

我们还尝试将原始证书作为加密值存储在参数存储中,并从那里读取它们作为 NodeJS 进程变量,但这似乎不起作用。

可能有更好的方法,但我们决定将证书放在具有严格访问和对象锁定控制的安全存储桶中。

在TypeScript/NodeJS lambda中,我们现在只需启动S3客户端并执行这样的请求

const cert = await S3.getFile(Config.get('...'), 'certificate.crt')
const key = await S3.getFile(Config.get('...'), 'private.key')
const ca = await S3.getFile(Config.get('...'), Config.get('ca_path'))
return request({
      method: args.method,
      uri: this.baseUrl,
      headers: {
        ....
      },
      form: formData,
      json: false,
      cert:cert,
      key:key,
      ca:ca
}, callback);

S3 服务只是 aws 节点库的包装器。

最新更新