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 CDK IaC 基础设施即代码 代理环境下安装配置 (Python)