Удалите набор ресурсов размещенной зоны с помощью PHP на Amazon - PullRequest
0 голосов
/ 18 января 2019

Я не могу понять, как удалить набор ресурсов размещенной зоны с помощью Amazon PHP SDK.

Итак, мой код следующий

public function __construct(\ConsoleOutput $stdout = null, \ConsoleOutput $stderr = null, \ConsoleInput $stdin = null) {
    parent::__construct($stdout, $stderr, $stdin);

    /** @var \Aws\Route53\Route53Client route53Client */
    $this->route53Client = Route53Client::factory([
        'version'     => '2013-04-01',
        'region'      => 'eu-west-1',
        'credentials' => [
            'key'    => <my-key>,
            'secret' => <my-secret-key>
        ]
    ]);
}

А это моя функция для удаления набора записей ресурсов

private function deleteResourceRecordSet() {

    $response = $this->route53Client->changeResourceRecordSets([
        'ChangeBatch'  => [
            'Changes' => [
                [
                    'Action'            => 'DELETE',
                    'ResourceRecordSet' => [
                        'Name'            => 'pm-bounces.subdomain.myDomain.com.',
                        'Region'          => 'eu-west-1',
                        'Type'            => 'CNAME',
                    ],
                ]
            ]
        ],
        'HostedZoneId' => '/hostedzone/<myHostedZoneId>'
    ]);
    var_dump($response);
    die();
}

И ошибка, которую я продолжаю получать:

Error executing "ChangeResourceRecordSets" on "https://route53.amazonaws.com/2013-04-01/hostedzone/<myHostedZoneId>/rrset/"; AWS HTTP error: Client error: `POST https://route53.amazonaws.com/2013-04-01/hostedzone/<myHostedZoneId>/rrset/` resulted in a `400 Bad Request` response:
<?xml version="1.0"?>
<ErrorResponse xmlns="https://route53.amazonaws.com/doc/2013-04-01/"><Error><Type>Sender</Type><Co (truncated...)
 InvalidInput (client): Invalid request: Expected exactly one of [AliasTarget, all of [TTL, and ResourceRecords], or TrafficPolicyInstanceId], but found none in Change with [Action=DELETE, Name=pm-bounces.subdomain.myDomain.com., Type=CNAME, SetIdentifier=null] - <?xml version="1.0"?>
<ErrorResponse xmlns="https://route53.amazonaws.com/doc/2013-04-01/"><Error><Type>Sender</Type><Code>InvalidInput</Code><Message>Invalid request: Expected exactly one of [AliasTarget, all of [TTL, and ResourceRecords], or TrafficPolicyInstanceId], but found none in Change with [Action=DELETE, Name=pm-bounces.subdomain.myDomain.com., Type=CNAME, SetIdentifier=null]</Message>

Так, каков минимально необходимый набор параметров, чтобы я мог удалить запись ресурса из размещенной зоны? Если вам нужна дополнительная информация, пожалуйста, дайте мне знать, и я предоставлю. Спасибо

1 Ответ

0 голосов
/ 18 января 2019

Хорошо, я понял это. Если вы не хотите удалять набор записей ресурсов из размещенных зон, то код / ​​функция для удаления набора записей должна выглядеть следующим образом

private function deleteResourceRecordSet($zoneId, $name, $ResourceRecordsValue, $recordType, $ttl) {

    $response = $this->route53Client->changeResourceRecordSets([
        'ChangeBatch'  => [
            'Changes' => [
                [
                    'Action'            => 'DELETE',
                    "ResourceRecordSet" => [
                        'Name'            => $name,
                        'Type'            => $recordType,
                        'TTL'             => $ttl,
                        'ResourceRecords' => [
                            $ResourceRecordsValue // should be reference array of all resource records set
                        ]
                    ]
                ]
            ]
        ],
        'HostedZoneId' => $zoneId
    ]);
}
...