我正在学习CloudFoundry,并试图让我的node.js应用程序访问我的亚马逊S3服务。我已经将我的亚马逊网络服务S3服务绑定到应用程序(在manifest.yml
中,路径applications/services
中)。在代码中,我可以使用cfenv获取凭据,但如何将它们提供给亚马逊网络服务?
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,我看到了几种提供凭据的方法-但没有一种方法是从我拥有的credentials对象开始的……
发布于 2021-10-26 00:01:44
这对我很有效:
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对象
https://stackoverflow.com/questions/69709248
复制相似问题