Я хочу выполнить сценарий оболочки на моем локальном жестком диске в экземпляре EC2, используя SSM и API узла - PullRequest
0 голосов
/ 02 мая 2019

С консоли, похоже, мне нужно загрузить скрипт на S3, а затем запустить его оттуда.Загрузка сценария оболочки на S3 проста:

const scriptFile = "./path/to/test.sh";
const scriptFilename = "test.sh";
console.log("Uploading " + scriptFile + " to S3...");
let fileContentsToUpload = fs.readFileSync(scriptFile, "utf8");
let uploadResult = await this.s3.upload({
  Bucket: "myBucket", Key: "/someDir/" + scriptFilename,
  Body: fileContentsToUpload, ContentType: "text/x-shellscript"
}).promise();

Я не понимаю, что я использую для параметров для SSM.Затем я создаю новый документ?

Вот содержимое моего сценария оболочки "test.sh":

#!/bin/bash

echo This a test | tee /tmp/testOutput.txt

1 Ответ

0 голосов
/ 02 мая 2019

Разобрался! Нет необходимости создавать новый документ. Я вижу из консоли EC2, что расположение скрипта является общим параметром. Итак, вот код:

const params = {
  DocumentName: "AWS-RunRemoteScript",
  InstanceIds: ["i-XXXXXXXXXXXXX"],
  Parameters: {
    sourceType: ["S3"],
    sourceInfo: [JSON.stringify({
      path: uploadResult.Location
    })],
    commandLine: [scriptFilename],
    workingDirectory:["/tmp"]
  },
  ServiceRoleArn: "arn:aws:iam::<your-aws-account-id>:role/<someRole>"  // Make sure this role has access to get files from S3
};
console.log("Executing on the server:", CommonUtils.stringify(params));
let sendCommandResult = await this.ssm.sendCommand(params).promise();
console.log("Result of running build script: " + JSON.stringify(sendCommandResult));

Затем, если вы войдете в консоль AWS SSM, перейдите в «Выполнить команду» слева и перейдите на вкладку «История команд», вы сможете прочитать все о результатах выполнения вашей команды.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...