-1
"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 函数还是什么?或者有没有其他方法可以拒绝这个错误。请指导我。

4

2 回答 2

0

CloudFormation 中的自定义资源需要ServiceToken

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

Custom::CertificateDNSRecord错过了它。因此你必须提供它。

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

于 2020-08-04T09:06:13.537 回答
0

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

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

它将创建一个新证书。

于 2020-08-04T12:01:05.803 回答