我正在编写一个脚本,该脚本将使用输入中的名称创建一个EFS文件系统。我正在使用适用于PHP版本3的AWS开发工具包。
我能够使用createFileSystem命令创建文件系统。在创建挂载目标之前,该新文件系统不可用。如果我在createFileSystem命令之后运行CreateMountTarget命令,则会收到错误消息,表明文件系统的生命周期状态未处于“可用”状态。
我尝试使用createFileSystemAsync创建一个Promise,并在该Promise上调用wait函数以强制脚本同步运行。但是,在文件系统仍处于“正在创建”生命周期状态时,始终会兑现承诺。
是否可以使用AWS开发工具包来强制脚本等待文件系统处于可用状态?
答案 0 :(得分:2)
一种方法是使用DescribeFileSystems API检查文件系统的状态。在响应中查看LifeCycleState,如果可用,请触发CreateMountTarget API。您可以继续在循环中检查DescribeFileSystems,并延迟几秒钟,直到LifeCycleState为Available
答案 1 :(得分:1)
您似乎想要FileSystemAvailable
的{{3}},但是waiter。我会the elasticfilesystem files don't specify one要一个。您需要等待file an issue on GitHub的LifeCycleState
中的available
。
同时,您可能可以编写类似以下和DescribeFileSystems
之类的内容。
{
"version":2,
"FileSystemAvailable": {
"delay": 15,
"operation": "DescribeFileSystems",
"maxAttempts": 40,
"acceptors": [
{
"expected": "available",
"matcher": "pathAll",
"state": "success",
"argument": "FileSystems[].LifeCycleState"
},
{
"expected": "deleted",
"matcher": "pathAny",
"state": "failure",
"argument": "FileSystems[].LifeCycleState"
},
{
"expected": "deleting",
"matcher": "pathAny",
"state": "failure",
"argument": "FileSystems[].LifeCycleState"
}
]
},
}
following the waiters guide用于同时发出HTTP请求。在这种情况下这无济于事,因为API调用的行为是在EFS中启动异步任务。