AWS EFS - скрипт для создания цели монтирования после создания файловой системы - PullRequest
0 голосов
/ 18 сентября 2018

Я пишу скрипт, который создаст файловую систему EFS с именем из ввода.Я использую AWS SDK для PHP версии 3.

Я могу создать файловую систему с помощью команды createFileSystem.Эта новая файловая система не может использоваться, пока не будет создана цель монтирования.Если я запускаю команду CreateMountTarget после команды createFileSystem, то я получаю сообщение об ошибке, что состояние жизненного цикла файловой системы не находится в состоянии «доступно».

Я пытался использовать createFileSystemAsync для создания обещания и вызова ожиданияФункция этого обещания заставляет скрипт работать синхронно.Однако обещание всегда выполняется, пока файловая система все еще находится в состоянии «создания» жизненного цикла.

Существует ли способ заставить сценарий ожидать, пока файловая система будет в доступном состоянии, с помощью AWSSDK

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Похоже, вы хотите официант для FileSystemAvailable, но в файлах эластичной системы не указан один .Я бы подал вопрос на GitHub и попросил его.Вам нужно будет подождать, пока DescribeFileSystems будет иметь LifeCycleState из available.

В то же время, вы, вероятно, можете написать свой что-то вроде следующего и в соответствии с руководством официантов .

{
  "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"
      }
    ]
  },
}

Обещания в AWS SDK для PHP используются для одновременного выполнения HTTP-запроса.Это не помогает в этом случае, потому что поведение вызова API заключается в запуске асинхронной задачи в EFS.

0 голосов
/ 19 сентября 2018

Один из способов - проверить состояние файловой системы, используя DescribeFileSystems API.В ответе посмотрите на LifeCycleState , если оно доступно, запустите API CreateMountTarget.Вы можете продолжать проверять DescribeFileSystems в цикле с задержкой в ​​несколько секунд, пока LifeCycleState не станет равным Available

...