Как запустить скрипт на только что созданном экземпляре EC2 через AWS SDK?

1

В настоящее время я использую AWS Javascript SDK для запуска пользовательских экземпляров EC2 и до сих пор так хорош.

Но теперь мне нужны эти экземпляры, чтобы иметь возможность запускать некоторые задачи при их создании, например, клонировать репо из Github, устанавливать стек программного обеспечения и настраивать некоторые службы.

Это предназначено для эмуляции аналогичного поведения для локального развертывания виртуальной машины. В этом случае я запускаю некоторые сценарии инициализации с помощью Ansible, которые выполняют свою работу.

Для моего варианта использования, который был бы лучшим вариантом среди различных сервисов AWS для достижения этого с помощью AWS Javascript SDK?

Есть ли в любом случае, возможно, у меня есть шаблонный скрипт, к которому я передал некоторые исполняемые переменные во время выполнения, чтобы выполнить некоторые задачи в только что созданном экземпляре? Я читал о user-data но я не могу понять, как это обертывается с помощью AWS SDK. Кроме того, он не кажется настраиваемым.

В конце концов, я думаю, мне нужно использовать SDK для этого:

"В только что созданном экземпляре запустите этот скрипт, который хранится в таком месте, заменив эти значения заполнителя в скрипте этими я теперь даю вам",

Любые намеки?

Теги:
amazon-web-services
amazon-ec2

2 ответа

1
Лучший ответ

Когда вы запускаете новые экземпляры, вы можете предоставить user-data в то время, в том же вызове AWS SDK/API. Это лучшее место для размещения любого кода инициализации сервера.

Единственный способ запустить скрипт в экземпляре через SDK - это запустить функцию командной строки службы SSM. Но для этого требуется, чтобы экземпляр уже установил агент AWS SSM. Это отлично подходит для удаленного администрирования сервера, но user-data более подходят для инициализации экземпляра при первой загрузке.

  • 0
    Спасибо за ваш ответ. Вы имеете в виду использование поля UserData в объекте params используется, например, в методе EC2.runInstances ? docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/...
  • 0
    Да, именно так вы передаете сценарий user-data экземплярам, запускаемым с помощью JavaScript SDK.
1

Как отметил Марк Б., UserData - это способ запуска команд при запуске экземпляра. Поскольку вы отметили вопрос на javascript здесь, например, при передаче этого в команде ec2.runInstances:

let AWS = require('aws-sdk')
let ec2 = new AWS.EC2({region: 'YOUR_REGION'})
// Example commands to create a folder, a file and delete it
let commands = [
    '#!/usr/bin/env bash',
    'mkdir /home/ubuntu/test',
    'touch /home/ubuntu/test/examplefile',
    'rm -rf /home/ubuntu/test'
];
let params = {
    ...YOUR PARAMS HERE...
    UserData: new Buffer(commands.join("\n")).toString('base64')
}
// You need to encode it with Base64 for it to be executed by the userdata interpreter
ec2.runInstances(params).promise().then(res => { console.log(res); })

Ещё вопросы

Сообщество Overcoder
Наверх
Меню