2

Итак, я пишу множество материалов по автоматизации инфраструктуры, в основном вращающихся вокруг Cloudformation, и у меня есть инструмент оболочки / фреймворка, который я использую для управления развертываниями CF (Scepter). Я столкнулся с задачей, которая не поддерживается CF, но необходима для ее завершения, и мне надоело добавлять шаги ручного вмешательства на полпути к задачам. Так что мне бы хотелось, чтобы был способ запуска команд при выполнении определенной команды. Например:

sceptre create-stack example mystack

И у меня есть команда aws cli для запуска, когда кто-то запускает это.

aws module command --option=lol

Благодарю.

РЕДАКТИРОВАТЬ: Если у кого-то есть родной способ Linux сделать это, пожалуйста, предоставьте его, я хотел бы понять несколько способов, которыми я мог бы выполнить эту задачу.

2 ответа2

1

Так что я нашел способ сделать это на самом деле, но это не слишком хороший ответ, так что, если моды хотят удалить, переместить или что-то еще в этом ответе / вопросе, не стесняйтесь.

Использование лямбда-функции AWS в пользовательском ресурсе

С помощью лямбда-функций и пользовательских ресурсов вы можете запускать пользовательский код в ответ на события стека (создание, обновление и удаление). Следующий пользовательский ресурс вызывает функцию Lambda и отправляет ей свойство StackName в качестве входных данных. Функция использует это свойство для получения выходных данных из соответствующего стека.

JSON

"MyCustomResource" : {
  "Type" : "Custom::TestLambdaCrossStackRef",
  "Properties" : {
    "ServiceToken": { "Fn::Join": [ "", [ "arn:aws:lambda:", { "Ref": "AWS::Region" }, ":", { "Ref": "AWS::AccountId" }, ":function:", {"Ref" : "LambdaFunctionName"} ] ] },
    "StackName": {
      "Ref": "NetworkStackName"
    }
  }
}

YAML

MyCustomResource: 
  Type: "Custom::TestLambdaCrossStackRef"
  Properties: 
    ServiceToken:
      !Sub |
        arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:${LambdaFunctionName}
    StackName: 
      Ref: "NetworkStackName"
0

И мне стыдно сказать, что я нашел другой способ сделать это, почему я не просто RTFM? Так что это на самом деле путь родной для Скипетра.

Хуки позволяют запускать пользовательские команды при выполнении действий Sceptre.

Крюк выполняется в определенной точке при запуске Scepter.

При необходимости пользователи могут создавать свои собственные хуки, как описано в разделе Пользовательские хуки. Крюк очки

before_create или after_create - запускать хук до или после создания стека.

before_update или after_update - запускать хук до или после обновления стека.

before_delete или after_delete - запускать хук до или после удаления стека.

Синтаксис:

Хуки определяются в файле конфигурации стека с использованием следующего синтаксиса:

hooks:
    hook_point:
        - !command_type command 1
        - !command_type command 2

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .