AWS CDK 生成的资源标识符非常糟糕且不可读。有任何解决这个问题的方法吗?

Posted

技术标签:

【中文标题】AWS CDK 生成的资源标识符非常糟糕且不可读。有任何解决这个问题的方法吗?【英文标题】:AWS CDK generated resource identifiers are horrible and not readable. Any way to fix this? 【发布时间】:2020-05-03 09:17:31 【问题描述】:

任何使用过 AWS CDK 的人都会遭受可怕的资源标识符的困扰。

堆栈/嵌套堆栈名称示例:

或资源名称示例:

这些标识符很难读。是否有任何解决方法可以覆盖这些标识符?

我已尝试设置资源的 ID/名称/标识符/别名。但是,似乎 cdk 或 cloudformation 本身正在生成这些字符串。

感谢您的建议!

【问题讨论】:

【参考方案1】:

所有资源(或者至少我知道的大多数资源)都可以手动命名。

对于AWS::EC2::SecurityGroup,将是Properties -> GroupName

AWS::CloudWatch::Alarm - Properties -> AlarmName

AWS::Lambda::Function - Properties -> FunctionName 等等

但是对于其中的一些会导致后果 - 您将无法更新其中的一些,因为它们可能需要娱乐(并且名称已经被占用)。所以总的来说,这不是一个好习惯。 显然,如果不更改生成名称的某些参数,您将无法创建完整的 env 副本,如下所示:

FunctionName: !Sub '$InstanceName-your-resourse-constant-name-$Environment'

如果你不指定命名,它会创建一个这样的名字:

$stackName-$resourceNameInCF-$someHashCode,但在您的情况下,您似乎有嵌套堆栈,并且变得非常难以阅读,尤其是由于名称链接而具有长名称。

【讨论】:

感谢您的回答。但是,它并没有解决我的问题。我完全知道您可以控制资源名称,例如 lambda 函数等。但是,据我所知,AWS CDK 特意为其 id 实施了这种糟糕的命名方案,以避免可能的名称冲突。 您应该对指定名称感到满意。我不关心 CDK,但对于 CloudFromation,如果您更改了需要替换的内容,则无法重新创建资源,这可能会很棘手。

以上是关于AWS CDK 生成的资源标识符非常糟糕且不可读。有任何解决这个问题的方法吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何将现有资源从不同的 AWS 账户导入 AWS CDK

如何在部署期间使用非 AWS 资源扩展 AWS CDK

如何覆盖 AWS CDK 中的资源?

AWS CDK IaC 基础设施即代码 代理环境下安装配置 (Python)

使用来自共享资源的 api-gatewayv2 时未绑定 aws cdk lambda

AWS CDK:如何在同一应用程序中引用跨堆栈资源?