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

适配AWS SDK v3:Vanilla JavaScript Web应用的AWS凭证配置路径及跨环境可移植方案咨询

适配AWS SDK v3:Vanilla JavaScript Web应用的AWS凭证配置路径及跨环境可移植方案咨询

嘿,我太懂你现在的困惑了——AWS SDK从v2升级到v3后,凭证配置的逻辑确实改了不少,再加上跨本地Mac开发和EC2部署的场景,网上的老教程又大多是针对v2的,确实容易越看越乱。我来帮你梳理一套针对SDK v3的可行方案,保证在Mac的Apache环境和EC2的Apache环境都能顺畅跑起来:

一、本地开发环境(Mac + Apache2.4)的凭证配置

Apache的运行用户不是你的个人用户,所以它根本看不到你家目录下的~/.aws/credentials,咱得把凭证放到Apache能访问的安全路径里:

  1. 选个合适的位置建.aws文件夹:
    要么在你的项目根目录下(比如/Users/你的用户名/Sites/bedrock-app/.aws),要么建个系统级的路径(比如/etc/apache2/.aws),选哪个看你是想按项目隔离还是全局共用。
  2. 把你家目录.aws里的credentials和config文件复制到这个新文件夹里。
  3. 关键:设置安全权限,让Apache的运行用户(Mac上通常是_www)能读,但不能让其他用户篡改:
    sudo chown -R _www:_www /你选的/.aws路径
    sudo chmod -R 600 /你选的/.aws路径
    
  4. 给Apache设置环境变量,告诉AWS SDK v3去哪找凭证:
    打开Apache的配置文件(比如/etc/apache2/httpd.conf,或者你的项目虚拟主机配置文件),添加两行:
    SetEnv AWS_SHARED_CREDENTIALS_FILE "/你选的/.aws/credentials"
    SetEnv AWS_CONFIG_FILE "/你选的/.aws/config"
    
  5. 重启Apache生效:sudo apachectl restart
    这样你的Vanilla JS应用在本地Apache上跑的时候,SDK v3会自动通过这两个环境变量找到凭证,完全不用硬编码。

二、EC2部署环境(Apache2.4)的凭证配置

这里其实更推荐用IAM角色而不是凭证文件——毕竟IAM角色是AWS自动管理的,会自动轮换凭证,比手动放文件安全太多:

  1. 给你的EC2实例附加一个IAM角色,这个角色要包含访问Bedrock的权限(比如AmazonBedrockFullAccess或者更精细的自定义权限)。
  2. 这样一来,你的代码完全不用改,AWS SDK v3会自动从EC2的元数据服务获取临时凭证,连凭证文件都省了,省心又安全。

如果因为特殊场景必须用凭证文件,那操作逻辑和本地类似:

  1. 在EC2上建/var/www/.aws目录(因为Apache的网站根目录通常是/var/www/html,这个路径Apache肯定能访问)。
  2. 上传credentials和config文件到这个目录,设置权限:
    sudo chown -R apache:apache /var/www/.aws
    sudo chmod -R 600 /var/www/.aws
    
  3. 在EC2的Apache配置文件(比如/etc/httpd/conf/httpd.conf或者虚拟主机配置)里添加同样的环境变量:
    SetEnv AWS_SHARED_CREDENTIALS_FILE "/var/www/.aws/credentials"
    SetEnv AWS_CONFIG_FILE "/var/www/.aws/config"
    
  4. 重启Apache:sudo systemctl restart httpd

三、跨环境可移植的核心技巧

为了让代码在本地和EC2上完全不用改,你只需要保持Bedrock客户端的初始化代码极其简洁:

const client = new BedrockRuntimeClient({
  region: "eu-west-2"
});

完全不用加credentials参数!AWS SDK v3会自动按优先级找凭证:

  • 如果是EC2带IAM角色,直接从元数据服务拿;
  • 如果是本地Apache,就从你设置的环境变量指定的凭证文件里读;
  • 这样不管是开发还是部署,代码完全一致,移植性拉满。

另外,本地开发还有个小技巧:你可以切换到Apache的运行用户来执行aws configure,这样凭证会自动生成到该用户的家目录下,SDK也能自动识别:

sudo -u _www aws configure

然后跟着提示输入access key、secret key、region就行,不过这种方式不如设置环境变量灵活,毕竟EC2上的Apache用户家目录可能和本地不一样。

备注:内容来源于stack exchange,提问作者Nigel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 12:58:06