@beesolve/aws-env-resolver (英语)
从 CloudFormation 和 secrets Management 中解析本地开发环境,缓存,并注入产入指令.
[尖叫声] 前1.0 - 不稳定的API. 这个软件包是
0.x活动 发展。 打破的改变可以降落在任何0.x释放无主 版本凸起。 选中一个精确的版本并在升级前审查更改日志 . 一旦API稳定,包裹到达1.0.0,它跟随语义 版本和此通知被删除 .
macOS 仅安全缓存 . 在macOS登录密钥链中缓存了密钥. 在其它平台上,每次运行时都会获取秘密,从不写入磁盘. CLI要求Bun来.
安装
bun add -d @beesolve/aws-env-resolver
npm install --save-dev @beesolve/aws-env-resolver
国 际
aws-env-resolver [--stage <stage>] [options] -- <command...>
先挂上旗帜 --。包会掉入线索 --,所以如果没有旗帜,第一个非旗词开始命令.
| 旗帜 | 说明 |
|---|---|
--stage <stage> | 可选的 选择 aws-env.config.<stage>.* 首先,传到工厂,钥匙缓存. |
--target <name> | 当配置定义了数个时要解决的目标 。 选择目标完全只有一个. |
--config <path> | 配置模块或 JSON( 默认 ): aws-env.config.{ts,js,mjs,json} 在阴道. |
--profile <name> | AWS profile; 覆盖配置 . |
--refresh | 旁通缓存和从AWS调取. |
--purge | 删除此阶段的缓存值( 运行) <command> 只有在给出时才能给出). |
--trusted | 存储按键链项按此读取 。 见下文. |
--help | 显示帮助. |
密钥链项的信托列表在写入时设定 。 与 --trusted 解析器在每次运行时都会写项目, 因此首先存储的没有旗帜的项目会被升级: 运行的提示一次又一次运行是沉默的 。 在不运行的情况下切换到信任模式, 通过 --trusted 没有命令 :
aws-env-resolver --stage stg --trusted
退出代码 : 0 成功吗, 1 运行时间出错, 2 无效的参数。 当一个命令运行时,其退出代码被返回.
图书馆@beesolve/aws-env-resolver(中文(简体) )
| 导出 | 说明 |
|---|---|
resolveEnv | (options: ResolveEnvOptions) => Promise<Record<string, string>>不变异 process.env。 。 。 . |
purgeCache | ({ projectKey, stage?, target?, config }) => Promise<void>。删除缓存文件和密钥链项. |
ResolveEnvOptions | config, (中文(简体) ), resources, (中文(简体) ), secrets?, (中文(简体) ), projectKey, (中文(简体) ), stage?, (中文(简体) ), target?, (中文(简体) ), refresh?, (中文(简体) ), cacheTtlMs?, (中文(简体) ), trusted?。 。 。 . |
ResolverConfig | profile?, (中文(简体) ), region, (中文(简体) ), stackName (一个名字或一个清单), secretId?, (中文(简体) ), accountId?, (中文(简体) ), staticEnv。 。 。 . |
ResourceMapping | envVar, (中文(简体) ), logicalIdPrefix, (中文(简体) ), resourceType?, (中文(简体) ), stackName?, (中文(简体) ), transform?。 。 。 . |
TemplateMapping | envVar, (中文(简体) ), parts: 文字字符串和资源引用(logicalIdPrefix,.),相声. |
SecretMapping | envVar, (中文(简体) ), jsonKey? (违约) envVar) (中文(简体) ). |
ResourceTransform | 一个函数 (physicalId, { region, accountId }) => string 或一个 TransformTag。 。 。 . |
TransformTag | { kind: "lambdaArn" }为了JSON的配置. |
TransformContext | { region, accountId }。 。 。 . |
EmittedConfig | 由 CDK 发射器生成的 JSON 配置形状 : projectKey 财务报告和审定财务报表 targets (名称为 EmittedTarget) (中文(简体) ). |
EmittedTarget | 一个目标 config, (中文(简体) ), resources, (中文(简体) ), secrets?。 。 。 . |
emittedConfigSchema | 瓦利博特计划 EmittedConfig。 。 。 . |
emittedTargetSchema | 瓦利博特计划 EmittedTarget。 。 。 . |
defaultTarget | "default",未命名时使用的目标. |
CDK (英语:@beesolve/aws-env-resolver/cdk(中文(简体) )
需要可选的同位素 aws-cdk-lib 财务报告和审定财务报表 constructs。 。 。 .
| 导出 | 说明 |
|---|---|
envOf | (construct) => Record<string, DevEnvValue>. Lambda (s) 的地洞,在一个构造下. |
secret | ({ secretId, jsonKey? }) => EnvSecret。保密管理器值; jsonKey 默认名称. |
generateDevEnv | (props: DevEnvProps) => EmittedConfig。将嵌入式嵌入转换成映射;没有 I/O. |
persistDevEnv | (config, { path }) => void。写 JSON,创建父目录. |
devEnv | generateDevEnv 接下来 persistDevEnv; 可选 stage 财务报告和审定财务报表 path (默认) aws-env.config[.<stage>].json) (中文(简体) ). |
defaultConfigPath | (stage?) => string。文件名称 devEnv 无 path。 。 。 . |
DevEnvProps | projectName, (中文(简体) ), env, (中文(简体) ), profile?。 。 。 . |
DevEnvValue | string | EnvResource | EnvSecret。 。 。 . |
Dev env 是您所作的平面对象: 扩展 envOf(...) 用于每个构造,其内嵌当地进程需要,然后添加文字和 secret(...)。后一键胜出,所以传播顺序是优先的,两个嵌入式的构造为不同的资源设置同名,从不冲突;您选择一个. envOf 当Lambdas在一个构造下对一个名字有分歧时,就抛出. 所有价值观必须共享一个区域. Ref 财务报告和审定财务报表 Fn::GetAtt Arn 被支持; 其他内在显示。 Env vars 设定自 secret.secretValueFromJson(key) 联合国 {{resolve:secretsmanager:...}} 动态参考)作为秘密映射自动发布. 发件人写出一个食谱(env var to logical-id前缀),从未解析出物理名称.
配置
CLI 装入第一个 aws-env.config.<stage>.ts, (中文(简体) ), .js, (中文(简体) ), .mjs, (中文(简体) ), .json (与 --stage,则 aws-env.config.ts, (中文(简体) ), .js, (中文(简体) ), .mjs, (中文(简体) ), .json在阴道。 模块导出选项对象或选项对象 (stage) => options 工厂(同步或同步)。 JSON 文件是 CDK 发送格式 : { projectKey, targets }。有一个目标 --target 是可选的;需要几个。 一个模块工厂收到 (stage, target)。没有 targets (预目标形状) default 目标。 生成配置到 .json中,手写配置将 .ts。 。 。 .
当一个阴道var出现在几个来源中时,后一个获胜: config.staticEnv,然后是CloudFormation资源,然后是秘密.
缓存
- 非秘密值 :
os.tmpdir()/aws-env-resolver/<projectKey>-<stage>-<fingerprint>.json,默认24小时TTL(cacheTtlMs) (中文(简体) ). 文件记录了资源映射的散列,因此为不同的映射而缓存的值(例如重生了配置后)是错失并被重置. - 秘诀: macOS 密钥链, 服务
aws-env-resolver:<projectKey>:<stage>:<fingerprint>一个东西 拥有所有的秘密作为JSON。 指纹散列region, (中文(简体) ),stackName,以及secretId,因此缓存和密钥链共享一个独立于工作目录的身份. 一个非默认目标也输入了缓存文件的指纹(不是键链的指纹),因此共享一个堆的目标保存了单独的资源缓存. - 默认模式存储带有空信任列表的项目, 因此 macOS 可以在读取时提示一次 .
--trusted以-T /usr/bin/security为默念. - 稳定状态让0AWS呼叫.
- 在非 MacOS 平台上没有安全的缓存,每次运行都会获取秘密.
IAM 权限
cloudformation:ListStackResourcessecretsmanager:GetSecretValuests:GetCallerIdentity,只有当 ARN 变换运行时config.accountId
见 DOCS. md (英语) 以引导人.