gpt4 book ai didi

python-2.7 - 使用 ChangeResourceRecordSets Boto3 删除/更新插入时,Change 中缺少字段 'SetIdentifier'

转载 作者:行者123 更新时间:2023-12-02 03:04:18 35 4
gpt4 key购买 nike

我花了一周时间尝试使用 Boto3 v1.10.39 删除/更新插入简单的 Route 53 资源记录。

我的代码:

resp=r53_client.change_resource_record_sets(
HostedZoneId=<ZONE_ID>,
ChangeBatch={
'Comment': 'del_ip',
'Changes': [
{
'Action': 'DELETE',
'ResourceRecordSet': {
'Name': <SUBDOMAIN>,
'Type': 'A',
'Region': 'us-east-1',
'TTL': 300,
'ResourceRecords': [{'Value': <OLD_IP>}]
}
}
]
}
)

错误消息:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/botocore/client.py", line 272, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/usr/lib/python2.7/dist-packages/botocore/client.py", line 576, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.errorfactory.InvalidInput: An error occurred (InvalidInput) when calling the ChangeResourceRecordSets operation: Invalid request: Missing field 'SetIdentifier' in Change with [Action=DELETE, Name=<SUBDOMAIN>., Type=A, SetIdentifier=null]

故障排除步骤:

  1. 我已经阅读了所有可能的文档(Boto3、AWSCLI、AWS 开发人员指南),仅当它不是简单的 RR(加权、多值、故障转移等)时才需要“SetIdentifier”字段:

    • SetIdentifier (字符串)

      具有非简单路由策略的资源记录集:区分具有相同名称和类型组合的多个资源记录集的标识符,例如名为 acme.example 的多个加权资源记录集。 com,类型为 A。在一组具有相同名称和类型的资源记录集中,每个资源记录集的 SetIdentifier 值必须是唯一的。

      有关路由策略的信息,请参阅 Choosing a Routing Policy在 Amazon Route 53 开发人员指南中。

  2. 尝试使用 AWS CLI 进行相同的操作,但出现与使用 Boto3 调用相同的错误。

  3. 调用list_resource_record_sets并验证不存在设置的标识符值。
  4. 尝试添加 'SetIdentifier': None、'SetIdentifier': '' 和 'SetIdentifier': ,但都不起作用,这是有道理的,因为原始 RR 根本没有此属性。

环境:

  • 操作系统:amzn-ami-hvm-2015.09.1.x86_64-gp2

  • Python:v2.7.14

  • BOTO3:v1.10.39

  • botocore:1.13.39

  • aws-cli:v1.16.301

我想知道这是否是 AWS API 的错误。

最佳答案

在 Boto3 github 中创建了一个问题,并从他们那里得到了帮助,说删除“Region”属性将解决我的问题,一旦我这样做,它对我的​​代码来说就像一个魅力。

resp=r53_client.change_resource_record_sets(
HostedZoneId=<ZONE_ID>,
ChangeBatch={
'Comment': 'del_ip',
'Changes': [
{
'Action': 'DELETE',
'ResourceRecordSet': {
'Name': <SUBDOMAIN>,
'Type': 'A',
'TTL': 300,
'ResourceRecords': [{'Value': <OLD_IP>}]
}
}
]
}

)

关于python-2.7 - 使用 ChangeResourceRecordSets Boto3 删除/更新插入时,Change 中缺少字段 'SetIdentifier',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59364186/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com