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

Amplify托管客户端如何安全访问AWS密钥?是否仅能使用dotenv?

解决方案

首先需要明确你的客户端类型(纯前端/后端服务),不同场景有不同的最优方案,并非只能用dotenv:

1. 纯前端客户端(比如React/Vue单页应用)

绝对不要在前端代码中直接访问SSM或Secrets Manager——前端代码会被打包暴露给用户,任何凭证或敏感密钥都会泄露。正确的做法是:

  • 用Amplify Functions(Lambda)作为中间层:
    • 创建一个Lambda函数,给它的执行角色添加访问SSM/Secrets Manager的权限(比如ssm:GetParameter或secretsmanager:GetSecretValue)
    • 在Lambda中编写逻辑获取密钥,再返回给前端(如果必须让前端使用该密钥,需评估风险;更安全的方式是让Lambda直接用密钥调用第三方服务,前端只调用Lambda的结果)
    • 前端通过Amplify API或直接调用Lambda的HTTP端点获取数据,全程不需要处理任何凭证

2. 后端客户端(比如SSR应用、Node.js服务托管在Amplify)

不需要手动管理凭证,利用AWS SDK的默认凭证链即可:

  • 给Amplify的执行角色(部署或运行时角色)添加访问SSM/Secrets Manager的权限
  • 在代码中直接初始化SecretsManagerClient或SSMClient,不需要传入凭证参数:
    import { SecretsManagerClient, GetSecretValueCommand } from "@aws-sdk/client-secrets-manager";
    
    // 无需手动传入credentials,SDK会自动从Amplify环境的IAM角色获取
    const client = new SecretsManagerClient({ region: "你的区域" });
    
    const getSecret = async () => {
      const command = new GetSecretValueCommand({ SecretId: "你的密钥ID" });
      const response = await client.send(command);
      return response.SecretString;
    };
    
  • 这种方式完全不需要dotenv或.env文件,凭证由AWS IAM自动管理,安全且无需手动维护

3. 本地开发场景

如果是本地开发需要测试访问SSM/Secrets Manager,可以用以下方式:

  • 配置本地AWS凭证(通过aws configure命令设置,或使用~/.aws/credentials文件),AWS SDK会自动读取这些凭证
  • 若必须用环境变量,可使用dotenv,但部署到Amplify时无需携带.env文件,依赖Amplify的IAM角色即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 23:50:00