【问题标题】:How to pass aws credential and config to aws sdk in nodejs programmatically?如何以编程方式将 aws 凭据和配置传递给 nodejs 中的 aws sdk?
【发布时间】:2019-04-10 01:32:17
【问题描述】:

我正在构建一个允许用户运行他们的 nodejs 代码的环境。这很像 Code Penrunit 所做的。如果用户需要在环境中运行 aws sdk 代码,我不知道如何处理他们的凭据和配置。我知道 aws nodejs sdk 有一个方法 config() 可以传递所有配置。但通常开发人员 aws 凭据和配置保存在 ~/.aws/credential~/.aws/config 文件中。如果我要求用户将这些文件上传到环境中,如何将它们转换为 aws sdk 可以读取的参数?有没有简单的方法或者我必须手动解析这些文件?

【问题讨论】:

  • 能否包含代码本身
  • 从安全角度来看,这对我来说都不是一个好主意。您应该尽量避免要求这样的凭据。
  • 也许这可以帮助你:stackoverflow.com/a/69921864/6491200

标签: node.js amazon-web-services


【解决方案1】:

你可以这样做:

const AWS = require('aws-sdk');

// config.json
{"accessKeyId": <YOUR_ACCESS_KEY_ID>, "secretAccessKey": <YOUR_SECRET_ACCESS_KEY>, "region": "us-east-1" }


AWS.config.loadFromPath('./config.json');

你也可以这样做:

var AWS = require("aws-sdk");

AWS.config.update({
  region: "us-west-2",
  "accessKeyId": <YOUR_ACCESS_KEY_ID>, 
  "secretAccessKey": <YOUR_SECRET_ACCESS_KEY>
});

【讨论】:

【解决方案2】:

您绝对不想将您的 AWS 凭证保存在文件中。更好的方法是将值保存在您的应用程序将要运行的环境中的环境变量中。如果您设置了AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 环境变量,SDK 会自动加载它们,您不必在代码中担心,如下所述:https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/loading-node-credentials-environment.html 取决于您使用的服务,这些值可能已经设置。如果没有,那么创建一个对您使用 SDK 进行的任何操作都具有权限的用户或角色应该很容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    • 2017-08-31
    • 1970-01-01
    • 2019-05-05
    • 2021-08-23
    相关资源
    最近更新 更多