我正在使用亚马逊提供的最新PHP工具包来操纵我的EC2实例
我使用以下代码检查驱动器是否可用
$this->client->waitUntil('__VolumeStatus', array(
'VolumeIds' => array($volumeId),
'waiter.success.value' => VolumeState::AVAILABLE
));
问题是没有将状态定义为 DELETED 。下面仅提供可用选项
class VolumeState extends Enum
{
const CREATING = 'creating';
const AVAILABLE = 'available';
const IN_USE = 'in-use';
const DELETING = 'deleting';
const ERROR = 'error';
}
在删除驱动器之前,是否有一种干净的方法可以停止PHP进程?
答案 0 :(得分:2)
EBS的工作方式是,一旦删除卷,您将不再看到它。从逻辑上讲,没有理由拥有“已删除”状态。没有“软删除”或“取消删除”的概念,这需要“已删除”状态。
DescribeVolumes响应中没有卷将是如何在EBS API层工作的: http://docs.aws.amazon.com/AWSSDKforPHP/latest/#m=AmazonEC2/describe_volumes
在Web Service SDK级别,如果您尝试描述不存在的卷,则EBS将返回错误。由于我缺乏熟悉的PHP,我不确定如何在PHP中进行翻译。
猜测(来自那些从未编写过PHP代码行的人!)就像是:do {
$response = $ec2->describe_volumes($volumeId);
} while (! $response.isOk)
这应该使用SDK中的“waiter”基础结构而不是while循环来完成,因为您已经在做可用性。