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