如何从 CloudFoundry 向 AWS-sdk 提供凭证
Posted
技术标签:
【中文标题】如何从 CloudFoundry 向 AWS-sdk 提供凭证【英文标题】:How do I provide credentials from CloudFoundry to 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,我看到了几种提供凭据的方法 - 但没有一个以我拥有的凭据对象开头...
【问题讨论】:
【参考方案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 对象
【讨论】:
以上是关于如何从 CloudFoundry 向 AWS-sdk 提供凭证的主要内容,如果未能解决你的问题,请参考以下文章
如何在cloudfoundry上使用kafka和storm?
Bluemix/CloudFoundry + Meteor - 如何重置项目?
使用 Spring Cloud 连接器访问 CloudFoundry 用户提供的服务
部署在SAP Cloud Platform CloudFoundry环境的应用如何消费SAP Leonardo机器学习API