You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将CloudFoundry获取的AWS S3服务凭证提供给AWS SDK使用

适配方案

你只需要手动映射CloudFoundry返回的凭证字段到AWS SDK要求的字段即可,修正后的完整代码如下:

var cfenv = require("cfenv");
var appEnv = cfenv.getAppEnv();
var my_s3_service = appEnv.getService('my-s3-service');
const s3Creds = my_s3_service.credentials

var AWS = require('aws-sdk');
AWS.config.update({
  accessKeyId: s3Creds.api_key,
  secretAccessKey: s3Creds.secret_key,
  region: s3Creds.location_constraint
});

const s3 = new AWS.S3();
s3.getObject({
  Bucket: s3Creds.bucket,
  Key: "my-key.json"
}, (err, data) => {
  // 后续业务逻辑
});

关键调整说明

  • 字段映射:CloudFoundry返回的S3凭证字段名和AWS SDK默认要求的字段名存在差异,手动做对应即可:
    • api_key 对应AWS SDK要求的 accessKeyId
    • secret_key 对应AWS SDK要求的 secretAccessKey
    • location_constraint 对应AWS SDK要求的 region
  • 修复了原代码中getObject方法的Bucket参数错误:原代码传入了整个凭证对象,实际需要传入凭证中的bucket字段值
  • 如果你使用的是第三方S3兼容存储服务而非AWS官方S3,可在AWS.config.update中额外添加endpoint: s3Creds.endpoint和s3ForcePathStyle: true配置项保证兼容性

内容的提问来源于stack exchange,提问作者Jonathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 14:24:04