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

如何将AWS SSM参数值注入Webpack构建流程

将AWS SSM参数值注入HtmlBundlerPlugin模板的实现方案

因为获取AWS SSM参数是异步操作,你需要把Webpack配置改成异步函数来处理这个流程,具体步骤如下:

  1. 调整Webpack配置为异步函数
    Webpack支持导出异步函数作为配置,这样可以先完成SSM参数的获取,再初始化HtmlBundlerPlugin。

  2. 整合SSM参数获取逻辑
    在配置函数中调用你的get_ssm_parameter函数,拿到参数值后传入插件的data字段。注意要给SSM客户端指定正确的AWS区域,否则会触发权限或连接错误。

  3. 模板中使用参数值
    确保你的HTML模板使用HtmlBundlerPlugin支持的语法引用customer_name变量(比如EJS风格的<%= customer_name %>)。

完整的配置示例:

import { SSMClient, GetParameterCommand } from "@aws-sdk/client-ssm";
import HtmlBundlerPlugin from 'html-bundler-webpack-plugin';

// 封装SSM参数获取函数,添加区域配置并返回实际参数值
async function get_ssm_parameter(ssm_parameter_name) {
  const client = new SSMClient({ region: '你的AWS区域' }); // 替换为实际区域,如us-east-1
  const input = {
    Name: ssm_parameter_name,
    WithDecryption: true,
  };
  const command = new GetParameterCommand(input);
  const response = await client.send(command);
  return response.Parameter.Value;
}

// 导出异步Webpack配置函数
export default async () => {
  // 提前获取SSM参数,添加错误捕获避免构建中断
  let customerName = '默认值';
  try {
    customerName = await get_ssm_parameter("/bar/foo");
  } catch (err) {
    console.error('获取SSM参数失败:', err);
  }

  return {
    // ...其他Webpack基础配置(mode、output、module等)
    plugins: [
      new HtmlBundlerPlugin({
        entry: [
          {
            import: './src/views/index.html',
            filename: 'index.html',
            data: { customer_name: customerName }, // 将SSM参数值传入模板
          }
        ],
        // ...其他HtmlBundlerPlugin配置
      })
    ]
  };
};

额外说明:

  • 构建环境需要配置AWS访问权限(比如设置AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY环境变量),否则无法调用SSM接口。
  • 如果你的Webpack版本较低,可能需要使用module.exports替代export default,并将异步函数包装在Promise中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 06:03:27