You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CloudFormation使用!Sub生成ImageBuilder组件名称触发格式错误求助

解决AWS CloudFormation中ImageBuilder Component名称拼接的校验错误

问题描述

在AWS CloudFormation中,尝试通过!Sub函数将参数MyComponentVersion拼接到AWS::ImageBuilder::Component的Name属性时,收到以下错误:

Resource handler returned message: "The value supplied for parameter 'name' is not valid. name must match pattern ^[-_A-Za-z-0-9][-_A-Za-z0-9 ]{1,126}[-_A-Za-z-0-9]$ (Service: Imagebuilder, Status Code: 400, Request ID: 249299d3-91b5-43f7-b9ed-1bf01e543821)" (RequestToken: ce08ef58-8fb7-8156-fa7c-c607e318e42a, HandlerErrorCode: InvalidRequest)

使用固定文本(如Name: 'SomeText')时可正常创建资源,但拼接${MyComponentVersion}无论是否保留连字符都失败,而Data字段中拼接该参数却无问题。

用户的CloudFormation模板代码如下:

Parameters:
  MyComponentVersion:
    Type: String
    Default: '2.0.0'
    Description: Installs component

Resources:
  MyComponent:
    Type: AWS::ImageBuilder::Component
    Properties:
      Name: !Sub 'MyComponent-v${MyComponentVersion}'
      Data: !Sub |
        name: MyComponent-${MyComponentVersion}

已尝试的操作:

  • 将Name的!Sub表达式替换为仅${MyComponentVersion}
  • 使用固定文本测试,确认可正常运行

原因分析

错误信息中的正则表达式^[-_A-Za-z-0-9][-_A-Za-z0-9 ]{1,126}[-_A-Za-z-0-9]$明确了AWS::ImageBuilder::Component的Name属性允许的字符:大小写字母、数字、连字符(-)、下划线(_)、空格,点(.)不在允许范围内。

用户的MyComponentVersion参数默认值为2.0.0,包含非法的点字符,导致拼接后的名称不符合校验规则。而Data字段中的name是Component定义内部的名称,ImageBuilder对该字段的校验规则与资源级别的Name属性不同,因此可以包含点字符。

解决方案

方案1:替换版本号中的点字符

在!Sub函数中使用字符串替换语法,将版本号里的点替换为允许的连字符或下划线:

Name: !Sub 'MyComponent-v${MyComponentVersion//./-}'

当参数值为2.0.0时,会生成符合规则的名称MyComponent-v2-0-0。

方案2:约束参数输入格式

给MyComponentVersion参数添加AllowedPattern约束,确保输入的版本号仅包含允许的字符:

Parameters:
  MyComponentVersion:
    Type: String
    Default: '2-0-0'
    AllowedPattern: "^[-_A-Za-z0-9]+$"
    Description: Installs component,版本号只能包含大小写字母、数字、连字符、下划线

这样可以从源头避免输入非法字符,直接拼接即可:

Name: !Sub 'MyComponent-v${MyComponentVersion}'

方案3:调整版本号格式

直接将版本号的点替换为允许的字符,比如把默认值改为2_0_0或2-0-0,无需额外处理即可正常拼接。

内容的提问来源于stack exchange,提问作者user8295506

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 21:50:19