【问题标题】:How do I provide credentials from CloudFoundry to AWS-sdk如何从 CloudFoundry 向 AWS-sdk 提供凭证
【发布时间】:2021-12-11 00:12:53
【问题描述】:

我正在学习 CloudFoundry,并试图让我的 node.js 应用程序访问我的 AWS S3 服务。我已将我的 AWS S3 服务绑定到应用程序(在manifest.yml,路径applications/services)。在代码中,我可以使用cfenv 获取凭据,但是如何将它们提供给 AWS?

var cfenv = require("cfenv");
var appEnv = cfenv.getAppEnv();
var my_s3_service = appEnv.getService('my-s3-service');
/* my_s3_service.credentials = {
        "api_key": "(redacted)",
        "bucket": "(redacted)",
        "endpoint": "s3-eu-west-1.amazonaws.com",
        "location_constraint": "eu-west-1",
        "secret_key": "(redacted)",
        "uri": "s3://(redacted):(redacted)@s3-eu-west-1.amazonaws.com/(redacted)"
    }

var AWS = require('aws-sdk');
AWS.config.update(Uhhh... something with my_s3_service.credentials... but what?);

const s3 = new AWS.S3();
s3.getObject({
        Bucket: my_s3_service.credentials,
        Key: "my-key.json"
    }, (...));

查看AWS SDK for JavaScript - Setting Credentials in Node.js,我看到了几种提供凭据的方法 - 但没有一个以我拥有的凭据对象开头...

【问题讨论】:

    标签: cloud-foundry aws-sdk-js


    【解决方案1】:

    这对我有用:

    var servicekey = my_s3_service.credentials;
    var creds = new AWS.Credentials(servicekey.api_key, servicekey.secret_key);
    AWS.config.update({credentials: creds});
    

    我是如何发现的:我在本地调试了它的工作方式,发现 AWS.config.credentials 的类型为 SharedIniFileCredentials,从 %USERPROFILE%\.aws\credentials(ref) 本地获取,大概是在我配置 AWS cli 时设置的。所以我猜我需要在里面放一个AWS.Credentials 对象

    【讨论】:

      猜你喜欢
      • 2021-05-25
      • 2018-05-07
      • 2022-08-19
      • 1970-01-01
      • 2016-08-04
      • 1970-01-01
      • 2015-02-25
      • 2023-01-07
      • 2021-01-23
      相关资源
      最近更新 更多