在使用 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',
]);
});
我使用 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',
]);
});