使用 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