Как вызвать новый экземпляр EC2 с существующей ролью IAM? /JavaScript AWS SDK v3 — RunInstancesCommand

Как запустить инстанс EC2 с прикрепленной (существующей) ролью IAM в JavaScript?

Я знаю, что этот вопрос задавали для других языков, но я не смог найти пример для JavaScript.

Мой код JS Lambda в настоящее время выглядит так:

      const { EC2Client } = require( "@aws-sdk/client-ec2");
const ec2Client = new EC2Client({ region: "eu-central-1" }); 
const {
      CreateTagsCommand,
      RunInstancesCommand,
      TerminateInstancesCommand,
      RunInstancesRequest
  } = require("@aws-sdk/client-ec2");      

const instanceParams = {
      ImageId: "ami-00a844bXXXXXXXXXX",
      InstanceType: "a1.xlarge",
      KeyName: "YourKeyName", 
      MinCount: 1,
      MaxCount: 1,
      SecurityGroupIds: ["sg-XXXXXXXXXXXXX"],
      IamInstanceProfile: "arn:aws:iam::390000000000:instance-profile/NAME" // doesn't work
};

const run = async () => {
  try {
    const data = await ec2Client.send(new RunInstancesCommand(instanceParams));
    console.log(data.Instances[0].InstanceId);
  } catch (err) {
    console.log("Error", err);
  }
}

var ret = await run();

Документация:

https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-ec2/interfaces/runinstancescommandinput.html#iaminstanceprofile


      "@aws-sdk/client-ec2": "^3.44.0",
"@aws-sdk/client-lambda": "^3.45.0",

Приведенный выше код работает, но роль IAM на вкладке EC2 > Экземпляры > Безопасность остается пустой во всех моих попытках .

1 ответ

Для поля IamInstanceProfile необходимо указать ARN или имя. Попробуйте любой из этих вариантов:

      const instanceParams = {
  ImageId: "ami-00a844bXXXXXXXXXX",
  InstanceType: "a1.xlarge",
  KeyName: "YourKeyName", 
  MinCount: 1,
  MaxCount: 1,
  SecurityGroupIds: ["sg-XXXXXXXXXXXXX"],
  IamInstanceProfile: 
  {
      Name: "NAME"
  }
};

или же

          const instanceParams = {
  ImageId: "ami-00a844bXXXXXXXXXX",
  InstanceType: "a1.xlarge",
  KeyName: "YourKeyName", 
  MinCount: 1,
  MaxCount: 1,
  SecurityGroupIds: ["sg-XXXXXXXXXXXXX"],
  IamInstanceProfile: 
  {
      Arn: "arn:aws:iam::390000000000:instance-profile/NAME"
  }
};

Инстансы запуска JavaScript SDK

Другие вопросы по тегам