在使用 aws-sdk 终止实例后删除子网时发生 DependencyViolation

DependencyViolation occurred when I delete subnet after terminate instance using aws-sdk

我使用 AWS-SDK PHP 控制 AWS 环境。 当我删除所有测试环境时,问题就出现了。

我读了 document,我已经知道如果我在目标子网中有 运行 个实例,就会发生 DependencyViolation

所以我先终止了运行实例,然后我尝试删除子网,但是出现了DependencyViolation错误。

我使用这段代码尝试了这些序列。

<?php
$options = [
    /**
     * information about region, version ..
     */
];
$client = new Ec2Client($options);

$promise = $client->terminateInstancesAsync([
    'InstanceIds' => ['instance-id'],
])->then(function ($result) use ($client) {
    return $client->deleteSubnetAsync([
        'SubnetId' => 'subnet-id',
    ]);
});

我猜错误的原因是"instance is not terminated perfactly but delete subnet action is run"。

但是我不知道在没有 DependencyViolation 的情况下删除子网需要做什么。

我可以在使用 terminateInstnaces 方法后使用 deleteSubnet 方法,使用 Waiters.

没有任何错误

我使用了这些代码。

$promise = $client->terminateInstancesAsync([
    'InstanceIds' => ['instance-id'],
])->then(function ($result) use ($client) {
    $client->waitUntil('InstanceTerminated', [
        'InstanceIds' => ['instance-id'],
    ]);
    return $client->deleteSubnetAsync([
        'SubnetId' => 'subnet-id',
    ]);
});