【问题标题】:Error On Using Route53 ChangeResourceRecordSets使用 Route53 ChangeResourceRecordSets 时出错
【发布时间】:2019-05-27 12:04:30
【问题描述】:

我目前正在使用 Grails 2.4.5,并为 grails 2.4.5 使用了 AmazonWebService 插件

我正在尝试使用此插件在 route53 上创建一个新记录集。

在我的 BuildConfig.groovy 上,我使用这个插件来访问 aws Web 服务。

compile ":aws-sdk:1.10.44"

关于 route53 更改资源记录集,我需要你们的帮助。

当我尝试更改 route53 资源记录集时,出现以下错误。

Invalid request: Expected exactly one of [AliasTarget, all of [TTL, and ResourceRecords], or TrafficPolicyInstanceId], but found more than one in Change with [Action=CREATE, Name=app.sample.com., Type=A, SetIdentifier=null] (Service: AmazonRoute53; Status Code: 400; Error Code: InvalidInput; Request ID: 2ca80154-78a7-11e9-b5e7-f7bc7c79e5e6). Stacktrace follows:
Message: Invalid request: Expected exactly one of [AliasTarget, all of [TTL, and ResourceRecords], or TrafficPolicyInstanceId], but found more than one in Change with [Action=CREATE, Name=app.sample.com., Type=A, SetIdentifier=null] (Service: AmazonRoute53; Status Code: 400; Error Code: InvalidInput; Request ID: 2ca80154-78a7-11e9-b5e7-f7bc7c79e5e6)

这是我的代码。

import com.amazonaws.services.route53.AmazonRoute53Client
import com.amazonaws.services.route53.model.AliasTarget
import com.amazonaws.services.route53.model.Change
import com.amazonaws.services.route53.model.ChangeAction
import com.amazonaws.services.route53.model.ChangeBatch
import com.amazonaws.services.route53.model.ChangeResourceRecordSetsRequest
import com.amazonaws.services.route53.model.ChangeResourceRecordSetsResult
import com.amazonaws.services.route53.model.RRType
import com.amazonaws.services.route53.model.ResourceRecord
import com.amazonaws.services.route53.model.ResourceRecordSet
import grails.plugin.awssdk.AmazonWebService
import grails.transaction.Transactional

@Transactional
class AwsRoute53Service {

    AmazonWebService amazonWebService

    ChangeResourceRecordSetsResult changeRecordSet() {
        AmazonRoute53Client route53Client = amazonWebService.route53

        AliasTarget target = new AliasTarget('hostedZoneIDHere', 'app.sample.com.')

        target.setEvaluateTargetHealth(true)

        List<ResourceRecord> resourceRecords = new ArrayList<>()

        resourceRecords.add(new ResourceRecord('dNSNameHere'))

        ResourceRecordSet recordSet = new ResourceRecordSet('app.sample.com.', RRType.A)

        recordSet.setAliasTarget(target)
        recordSet.setResourceRecords(resourceRecords)
        recordSet.setTrafficPolicyInstanceId('simple')

        List<Change> changes = new ArrayList<>()

        changes.add(new Change(ChangeAction.CREATE, recordSet))

        ChangeBatch changeBatch = new ChangeBatch(changes)

        ChangeResourceRecordSetsRequest request = new ChangeResourceRecordSetsRequest('hostedZoneIDHere', changeBatch)

        return route53Client.changeResourceRecordSets(request)
    }
}

你能告诉我设置有什么问题吗?

如果你现在能帮我解决我的问题,我会很高兴。 谢谢各位。

【问题讨论】:

    标签: service amazon-web-services


    【解决方案1】:

    我已经解决了这个问题。下面是工作代码。

    import com.amazonaws.services.route53.AmazonRoute53Client
    import com.amazonaws.services.route53.model.AliasTarget
    import com.amazonaws.services.route53.model.Change
    import com.amazonaws.services.route53.model.ChangeAction
    import com.amazonaws.services.route53.model.ChangeBatch
    import com.amazonaws.services.route53.model.ChangeResourceRecordSetsRequest
    import com.amazonaws.services.route53.model.ChangeResourceRecordSetsResult
    import com.amazonaws.services.route53.model.RRType
    import com.amazonaws.services.route53.model.ResourceRecord
    import com.amazonaws.services.route53.model.ResourceRecordSet
    import grails.plugin.awssdk.AmazonWebService
    import grails.transaction.Transactional
    
    @Transactional
    class AwsRoute53Service {
    
        private static final String DOMAIN_NAME_SERVER = "${System.env.DOMAIN_NAME_SERVER}"
        private static final String HOSTED_ZONE_ID = "${System.env.HOSTED_ZONE_ID}"
    
        AmazonWebService amazonWebService
    
        ChangeResourceRecordSetsResult changeRecordSet() {
            AmazonRoute53Client route53Client = amazonWebService.route53
    
            GetHostedZoneResult hostedZoneResult = route53Client.getHostedZone(new GetHostedZoneRequest(HOSTED_ZONE_ID))
            HostedZone hostedZone = hostedZoneResult.getHostedZone()
    
            ResourceRecordSet resourceRecordSet = new ResourceRecordSet()
                .withName('dNSName')
                .withType(RRType.CNAME)
                .withTTL(60)
                .withResourceRecords([
                    new ResourceRecord().withValue(DOMAIN_NAME_SERVER)
                ])
    
            ChangeResourceRecordSetsRequest request = new ChangeResourceRecordSetsRequest()
                .withHostedZoneId(hostedZone.id)
                .withChangeBatch(
                    new ChangeBatch()
                        .withChanges([
                            new Change()
                                .withAction(ChangeAction.CREATE)
                                .withResourceRecordSet(resourceRecordSet)
                        ])
                )
    
            return route53Client.changeResourceRecordSets(request)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-08
      • 2020-04-09
      • 2016-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多