Amazon web services AWS EFS-创建文件系统后创建装载目标的脚本

Amazon web services AWS EFS-创建文件系统后创建装载目标的脚本,amazon-web-services,aws-sdk,amazon-efs,aws-php-sdk,Amazon Web Services,Aws Sdk,Amazon Efs,Aws Php Sdk,我正在编写一个脚本,该脚本将创建一个EFS文件系统,其名称来自输入。我正在使用适用于PHP版本3的AWS SDK 我能够使用createFileSystem命令创建文件系统。在创建装载目标之前,此新文件系统不可用。如果在createFileSystem命令之后运行CreateMountTarget命令,则会收到一个错误,即文件系统的生命周期状态未处于“可用”状态 我尝试使用createFileSystemAsync创建一个承诺,并对该承诺调用wait函数以强制脚本同步运行。但是,当文件系统仍处于

我正在编写一个脚本,该脚本将创建一个EFS文件系统,其名称来自输入。我正在使用适用于PHP版本3的AWS SDK

我能够使用createFileSystem命令创建文件系统。在创建装载目标之前,此新文件系统不可用。如果在createFileSystem命令之后运行CreateMountTarget命令,则会收到一个错误,即文件系统的生命周期状态未处于“可用”状态

我尝试使用createFileSystemAsync创建一个承诺,并对该承诺调用wait函数以强制脚本同步运行。但是,当文件系统仍处于“创建”生命周期状态时,该承诺始终得以实现


有没有办法使用AWS SDK强制脚本等待文件系统处于可用状态?

一种方法是使用API检查文件系统的状态。在响应中查看,如果可用,则触发CreateMountTargetAPI。在LifeCycleState可用之前,您可以在循环中持续检查DescribeFileSystems,延迟几秒钟。看起来您需要一个文件系统可用,但是。我想要一个。你需要等待一段时间才能有一个可用的生命周期

同时,你也可以用下面和下面的东西来写你自己的


用于并发发出HTTP请求。在这种情况下,这没有帮助,因为API调用的行为是在EFS中启动异步任务。

谢谢。这是一个简单的解决方案。我使用了一个循环和php sleep函数来创建挂载目标。
{
  "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"
      }
    ]
  },
}