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

如何让JEST获取AWS临时凭证或执行awsume后运行测试

解决Jest无法获取AWSume加载的凭证问题

下面是几个可行的解决办法:

方法1:修改Jest插件的启动命令

在VS Code的Jest插件设置里,找到jest.jestCommandLine选项,将其值改为:

awsume <你的AWS配置文件名> && jest

这样每次插件运行测试前,会先执行awsume加载凭证,再启动Jest,凭证会直接在同一个进程环境中生效。

方法2:手动传递临时凭证到Jest环境

  1. 先在终端执行awsume,然后导出临时凭证到环境变量:
    awsume <你的AWS配置文件名>
    export AWS_ACCESS_KEY_ID=$(aws configure get aws_access_key_id)
    export AWS_SECRET_ACCESS_KEY=$(aws configure get aws_secret_access_key)
    export AWS_SESSION_TOKEN=$(aws configure get aws_session_token)
    
  2. 或者用awsume的-e参数直接生成环境变量脚本并执行:
    eval $(awsume <你的AWS配置文件名> -e)
    
  3. 之后在VS Code中重启Jest插件,它会继承当前终端的环境变量(注意要确保VS Code是从这个终端启动的,或者在工作区设置里手动添加这些变量)。

也可以直接在VS Code的.vscode/settings.json里临时添加这些环境变量(凭证过期后需要更新):

{
  "jest.env": {
    "AWS_ACCESS_KEY_ID": "你的临时AccessKey",
    "AWS_SECRET_ACCESS_KEY": "你的临时SecretKey",
    "AWS_SESSION_TOKEN": "你的临时SessionToken"
  }
}

方法3:在Jest的前置脚本中加载凭证

创建一个Jest的setup文件(比如jest.setup.js),在里面通过子进程调用awsume并获取凭证,设置到环境变量中:

const { execSync } = require('child_process');

// 执行awsume并获取输出的凭证信息
const credsOutput = execSync('awsume <你的AWS配置文件名> -e', { encoding: 'utf8' });
// 解析输出的环境变量命令,提取凭证
const creds = credsOutput.split('\n').reduce((acc, line) => {
  if (line.startsWith('export AWS_')) {
    const [key, value] = line.replace('export ', '').split('=');
    acc[key] = value.replace(/"/g, '');
  }
  return acc;
}, {});

// 设置到process.env中
process.env.AWS_ACCESS_KEY_ID = creds.AWS_ACCESS_KEY_ID;
process.env.AWS_SECRET_ACCESS_KEY = creds.AWS_SECRET_ACCESS_KEY;
process.env.AWS_SESSION_TOKEN = creds.AWS_SESSION_TOKEN;

然后在jest.config.js中配置这个setup文件:

module.exports = {
  setupFiles: ['./jest.setup.js'],
  // 其他配置...
};

这样每次Jest启动前,都会自动执行这个脚本加载凭证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 04:27:45