【问题标题】:Create and manage AWS instances via node.js [closed]通过 node.js 创建和管理 AWS 实例 [关闭]
【发布时间】:2021-12-05 12:47:36
【问题描述】:

我正在尝试使用 Node.js api 创建 AWS 实例,它将管理其他实例并安装 docker 映像,但我找不到任何文档或教程

【问题讨论】:

  • 也许你应该看看TerraformPulumi
  • @Jens 也许这只是一个意见。例如:我认为在 node.js 中开发自己的管理器比使用 Terraform 有趣得多。 :)
  • @petrch -- terraform 的优势在于您可以运行一个计划来查看它在做什么,并利用数千万美元投资的产出。您的 nodejs 方法可能更“有趣”,但这是一个工程问题,“有趣”通常不是一个好的指标。
  • @SoftwareEngineer - 感谢您的提问。但我做得很好——考虑到我工作的环境——Terraform 既不是唯一的工具,也不是最好的工具。我的观点是,每个人都在使用它并不意味着 OP 必须遵循。我记得当 Windows NT 看起来是个好主意时,人们取笑我使用 Linux,而我们现在在哪里......

标签: node.js amazon-web-services docker


【解决方案1】:

使用 AWS 开发工具包

首先你应该npm install aws-sdk

这有点令人困惑,实例定义实际上称为“保留”。创建其中之一称为“runInstance”。

所以,您当然首先需要初始化您的 EC2 对象。

import { EC2, config } from 'aws-sdk';

config.loadFromPath(__dirname + "/../aws.config.json");
const ec2: EC2 = new EC2(); // to start/stop instances

接下来,我个人尝试在使用 AWS 实例时尽可能使用 Promise。他们大大清理了代码。

import { promisify } from 'util';

如果您已经有预留,则可以使用其实例 ID 启动它。

const params: EC2.StartInstancesRequest = { InstanceIds: [instanceId] };
const result: EC2.StartInstancesResult = await promisify((cb) => ec2.startInstances(params, cb))();

你也可以这样停止:

const params: EC2.StopInstancesRequest = { InstanceIds: [instanceId] };
const result: EC2.StopInstancesResult = await promisify((cb) => ec2.stopInstances(params, cb))();

要创建您的实例,您需要:

const params: EC2.RunInstancesRequest = { InstanceType: "t1.micro", ImageId: "ami-31814f58", MinCount: 1, MaxCount: 1 };
const result: EC2.Reservation = await promisify((cb) => ec2.runInstances(params, cb))();

最后,列出您的实例/预留(带有一些可选过滤器):

const stateFilter = { Name: "instance-state-name", Values: ["running"] };
const idFilter = { Name: "instance-id", Values: [instanceId] };
const params: DescribeInstancesRequest = { Filters: [stateFilter, idFilter] };
const result: EC2.DescribeInstancesResponse = await promisify((cb) => ec2.describeInstances(params, cb))();

响应包含一个预留集合,每个预留包含一个实例集合。

您自己的图片

要使用您自己的映像,您应该提前创建一个“亚马逊机器映像”(AMI)。

您可能想要设置“弹性容器注册表”(ECR)。您可以将 docker 映像推送到此存储库:https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    相关资源
    最近更新 更多