cdk-secret-manager-wrapper-layer

中文文档
2.1.313发布于 2026/11/03Apache-2.0TypeScriptCommonJS零依赖构建来源已验证

Lambda层使用包装器脚本从Secrets Manager获取信息并创建环境变量。>的想法来自 源

中文使用文档
文档目录3 节
  1. 更新
  2. 例子
  3. 测试

cdk-secret-manager-wrapper-layer

Lambda层使用包装器脚本从Secrets Manager获取信息并创建环境变量。

想法从 源

更新

2025-03-02: v2.1.0

  • 增加了Lambda层的架构参数支持
  • Python运行时从3.9更新到3.13
  • 修正了示例代码中的处理程序名称
  • 改进了层初始化和引用模式
  • 增强了与AWS Lambda ARM64架构的兼容性

例子

import { App, Stack, CfnOutput, Duration } from 'aws-cdk-lib';
import { Effect, PolicyStatement } from 'aws-cdk-lib/aws-iam';
import { Function, Runtime, Code, FunctionUrlAuthType, Architecture } from 'aws-cdk-lib/aws-lambda';
import { CfnSecret } from 'aws-cdk-lib/aws-secretsmanager';
import { SecretManagerWrapperLayer } from 'cdk-secret-manager-wrapper-layer';
const env = {
  region: process.env.CDK_DEFAULT_REGION,
  account: process.env.CDK_DEFAULT_ACCOUNT,
};
const app = new App();
const stack = new Stack(app, 'testing-stack', { env });

/**
 * Example create an Secret for testing.
 */
const secret = new CfnSecret(stack, 'MySecret', {
  secretString: JSON.stringify({
    KEY1: 'VALUE1',
    KEY2: 'VALUE2',
    KEY3: 'VALUE3',
  }),
});

const lambdaArchitecture = Architecture.X86_64;

const layer = new SecretManagerWrapperLayer(stack, 'SecretManagerWrapperLayer', {
  lambdaArchitecture,
});

const lambda = new Function(stack, 'fn', {
  runtime: Runtime.PYTHON_3_13,
  code: Code.fromInline(`
import os
def handler(events, contexts):
    env = {}
    env['KEY1'] = os.environ.get('KEY1', 'Not Found')
    env['KEY2'] = os.environ.get('KEY2', 'Not Found')
    env['KEY3'] = os.environ.get('KEY3', 'Not Found')
    return env
    `),
  handler: 'index.handler',
  layers: [layer.layerVersion],
  timeout: Duration.minutes(1),
  /**
   * you need to define this 4 environment various.
   */
  environment: {
    AWS_LAMBDA_EXEC_WRAPPER: '/opt/get-secrets-layer',
    SECRET_REGION: stack.region,
    SECRET_ARN: secret.ref,
    API_TIMEOUT: '5000',
  },
  architecture: lambdaArchitecture,
});

/**
 * Add Permission for lambda get secret value from secret manager.
 */
lambda.role!.addToPrincipalPolicy(
  new PolicyStatement({
    effect: Effect.ALLOW,
    actions: ['secretsmanager:GetSecretValue'],
    // Also you can use find from context.
    resources: [secret.ref],
  }),
);

/**
 * For Testing.
 */
const FnUrl = lambda.addFunctionUrl({
  authType: FunctionUrlAuthType.NONE,
});

new CfnOutput(stack, 'FnUrl', {
  value: FnUrl.url,
});

测试

# ex: curl https://sdfghjklertyuioxcvbnmghj.lambda-url.us-east-1.on.aws/
curl ${FnUrl}
{"KEY2":"VALUE2","KEY1":"VALUE1","KEY3":"VALUE3"}

版本与发布记录

cdk-secret-manager-wrapper-layer 共发布 1,937 个版本,首次发布于 2022/07/28;过去 12 个月发布了 117 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.1.313latest2026/11/03今天
2.1.3122026/11/021 天前
2.1.3112026/11/012 天前
2.1.3102026/10/313 天前
2.1.3092026/10/304 天前
2.1.3082026/10/295 天前

其他发布通道:cdkv1 → 1.0.809。

关于 cdk-secret-manager-wrapper-layer 的常见问题

cdk-secret-manager-wrapper-layer 是什么?

Lambda层使用包装器脚本从Secrets Manager获取信息并创建环境变量。>的想法来自 源

如何安装 cdk-secret-manager-wrapper-layer?

在项目目录运行 npm install cdk-secret-manager-wrapper-layer,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:constructs(^10.5.1)、aws-cdk-lib(^2.181.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

cdk-secret-manager-wrapper-layer 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

cdk-secret-manager-wrapper-layer 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

cdk-secret-manager-wrapper-layer 可以商用吗?

cdk-secret-manager-wrapper-layer 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

cdk-secret-manager-wrapper-layer 还在维护吗?

最新版本 2.1.313 发布于 2026/11/03(今天);至今共发布 1937 个版本,其中过去 12 个月发布了 117 个;首次发布于 2022/07/28。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。