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

如何将CommaDelimitedList类型证书ARN传入AWS::ElasticLoadBalancingV2::ListenerCertificate资源

解决方案

问题原因

AWS::ElasticLoadBalancingV2::ListenerCertificate的Certificates属性要求的是包含CertificateArn键的对象数组,而CommaDelimitedList参数类型返回的是纯字符串数组,两者结构不匹配,这是报错的核心原因。安全组等资源可以直接传入CommaDelimitedList是因为对应属性本身就要求字符串数组,无需额外转换,两者场景的属性类型要求存在差异。

可行写法

用CloudFormation原生的!Map(即Fn::Map)函数遍历字符串数组,为每一项自动加上CertificateArn前缀结构,无需提前固定证书数量,适配多环境可变需求:

AWSTemplateFormatVersion: "2010-09-09"
Parameters:
  # 补充监听器ARN参数,ListenerCertificate资源必填
  pAlbListenerArn:
    Type: String
    Description: 要绑定证书的ALB监听器ARN
  pAdditionalAlbListenerCertArns:
    Type: CommaDelimitedList
    Default: "arn:aws:acm:us-east-1:123456789012:certificate/xxxx-xxxx-xxxx-xxxx,arn:aws:acm:us-east-1:123456789012:certificate/yyyy-yyyy-yyyy-yyyy"
    Description: 输入ACM证书的ARN列表,多个用英文逗号分隔

Resources:
  rCertificatesList:
    Type: AWS::ElasticLoadBalancingV2::ListenerCertificate
    Properties:
      ListenerArn: !Ref pAlbListenerArn
      Certificates: !Map
        Input: !Ref pAdditionalAlbListenerCertArns
        Map:
          CertificateArn: !MapValue

补充说明

  • !Map函数会遍历Input字段传入的数组
  • Map字段定义了数组每一项的转换规则,!MapValue指代数组遍历到的当前元素
  • 转换后会自动生成符合要求的[{"CertificateArn": "cert1"}, {"CertificateArn": "cert2"}]格式
  • 如果你使用的区域暂不支持原生!Map函数,可在模板顶部添加Transform: 'AWS::LanguageExtensions'开启语言扩展宏,即可正常使用该语法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 11:45:03