MDAA 命名
此软件包定义了MDA兼容的命名执行的接口,以及默认执行. 命名执行将被通过 MDAA CDK App Context ,以便根据 MDAA 执行环境中指定的任何上下文初始化自己.
资源类型支持
这个 MdaaResourceType 页:1 withResourceType() 方法允许自定义命名执行生成资源型识别名称. 默认执行是无操作的——它忽略了资源类型,返回名称不变,保留了后向相容性.
以下示例产出只能通过自定义执行实现,该执行将超过 withResourceType() (见 计算机化.md) (中文(简体) ). 框外,默认执行将生成同名名称,无论哪个 MdaaResourceType 提供了数值.
// With a custom impl that overrides withResourceType (see CUSTOMIZATION.md):
const naming = customNaming.withResourceType(MdaaResourceType.S3_BUCKET);
const bucketName = naming.resourceName('my-data');
// → "aw-dev-s3-dpl-retail-datalake-my-data"
见 计算机化.md 仅供参考.
包括 env 在 SSM 路径和导出名称中
默认情况下, 默认命名执行生成的 SSM 参数路径和 CloudFormation 导出名称 没有 包括环境env:
| 方法 | 默认格式 |
|---|---|
ssmPath() | /<org>/<domain>/<module_name>/<path> |
exportName() | <org>:<domain>:<module_name>:<path> |
这导致碰撞,当 同单元 用于多种环境(例如:. dev 财务报告和审定财务报表 prod(a) 内 单一 AWS 账户:两种部署都产生相同的SSM参数名称(沉默覆盖/跨环境泄漏)和相同的CloudFormation导出名称(第二次部署彻底失败,因为每个账户/区域的出口名称必须独一无二).
启用嵌入意识路径
设定 @mdaaIncludeEnvInSsmPath CDK 上下文旗为 true (通过a) context 块在您的 MDAA 配置中,或 additional_context 在模块中)。 值必须准确 true 或者说 false ——其他任何值都会被错误地拒绝来防止打字(例如. yes, (中文(简体) ), 1)从被无声地曲解. 当启用时, env 紧接 domain数字 :
| 方法 | 格式为 @mdaaIncludeEnvInSsmPath: true |
|---|---|
ssmPath() | /<org>/<domain>/<env>/<module_name>/<path> |
exportName() | <org>:<domain>:<env>:<module_name>:<path> |
旗帜默认为 false因此,除非明确选择,否则现有部署不会受到影响。 启用时, 发布 SSM 参数和导出的所有内部代码路径( 通过 naming.ssmPath(...) 编号 : naming.exportName(...))自动采用新格式——不需要每个单元的代码修改.
引用嵌入意识参数
国旗只影响 发布 边 当在配置中引用另一个模块的 env-aware 参数时, 框架不能推断您指的是哪个环境, 所以您必须提供 env 明确 — 正如您已经提供了模块名称:
# Preferred for same-domain references — ssm-env: already prepends /<org>/<domain>/<env>/,
# so no manual env segment is needed:
someKmsKeyArn: ssm-env:/my-kms-module/cmk/arn
# With ssm-domain: (prepends only /<org>/<domain>/), include the env segment yourself:
someKmsKeyArn: ssm-domain:/dev/my-kms-module/cmk/arn
# With ssm-org: or a literal resolve:ssm: reference, write the full env-aware path:
someKmsKeyArn: ssm-org:/my-domain/dev/my-kms-module/cmk/arn
调动现有部署
启用此旗会更改 SSM 参数名称和 CloudFormation 导出名称, 所以对于任何用户参考了旧路径的部署来说, 这是一种突破性更改 。 因为参数/导出 名称 更改时, 而基本的 CloudFormation 逻辑ID 不 :
- 每个 SSM 参数是 已替换 已就位 —— Cloud Formation 创建了新的env-aware参数并删除同一部署中的旧参数. 没有遗留的旧参数需要清理,也没有旧名和新名都解决的重叠窗口.
- 当另一个堆栈仍然导入时, 导出名称不能被更改( E)
Fn::ImportValue) (中文(简体) ). 您必须阻止消费者在重新部署生产者之前(或者在与重新部署生产者相同的协调变化中)进口旧出口,否则生产者部署将失败.
安全迁移:
- 更新所有关于受影响参数的配置引用/导出到内存意识路径(见上文) 在此之前 重新部署生产商,所以没有堆栈导入旧的导出名.
- 启用
@mdaaIncludeEnvInSsmPath: true并重新部署。 制作者在env-aware路径上发布(旧参数被替换,而不是被孤),消费者解决了新路径.