属性 服务令牌不能为空

property servicetoken cannot be empty

"certificatefordns":{
  "Type" : "AWS::CertificateManager::Certificate",
  "Properties" : {
      "DomainName" : "*.test-elb.acb.com",
      "ValidationMethod" : "DNS"
},
 "CertificateDNSRecord":{
    "Type": "Custom::CertificateDNSRecord",
   "Properties": {
      "CertificateArn": {
        "Ref": "certificatefordns"
      },
      "DomainName": "*.test-elb.acb.com"
   }},
"DNS": {
            "Type": "AWS::Route53::RecordSetGroup",
            "Properties": {
                "HostedZoneId": "Z01724793QXGY7AZ",
                "RecordSets": [
                    {
                        "Name": {
                            "Ref": "AlternateDomainNames"
                        },
                        "Type": "A",
                        "AliasTarget": {
                            "HostedZoneId": "Z23TAZ6MNIO",
                            "DNSName": {
                                "Fn::GetAtt": [
                                    "WebLoadBalancer",
                                    "DNSName"
                                ]
                            }
                        }
                    },
                    {
                      "Name": {
                        "Fn::Sub": "${CertificateDNSRecord.Name}"
                    },
                    "Type": {
                        "Fn::Sub": "${CertificateDNSRecord.Type}"
                    },
                    "TTL": "60",
                    "Weight": 1,
                    "SetIdentifier": "*.test-elb.acb.com",
                    "ResourceRecords": [
                        {
                            "Fn::Sub": "${CertificateDNSRecord.Value}"
                        }
                    ]
                    }
                ]
            }
        }

您好团队, 我想为负载均衡器创建一个新证书,借助此 json 代码,我能够创建该证书,但一段时间后它将通过一个错误 属性 servicetoken不能为空 所以当我搜索时,我很困惑我需要创建 lambda 函数还是什么? 或者有没有其他方法可以拒绝此错误。 请指导我。

CloudFormation 中的自定义资源 需要 ServiceToken:

  • 服务提供商提供给模板开发人员以访问服务的服务令牌,例如 Amazon SNS 主题 ARNLambda 函数 ARN 。服务令牌必须来自您正在创建堆栈的同一区域。

你的 Custom::CertificateDNSRecord 不见了。所以你必须提供它。

如果自定义资源用于验证 ACM 认证,您可以勾选新选项,该选项不需要自定义 lambda 函数:

是的,我有自己的解决方案。我们只需要使用这个模板就可以了。

"certificatefordns":{
  "Type" : "AWS::CertificateManager::Certificate",
  "Properties" : {
      "DomainName" : "*.test-elb.acb.com",
      "ValidationMethod" : "DNS",
      "DomainValidationOptions": [
                {
                    "DomainName": {
                      "Ref": "AlternateDomainNames"
                    },
                    "HostedZoneId": "Z01724793QXGL8FOZ"
                }]
    }
},

它将创建一个新证书。