gpt4 book ai didi

amazon-web-services - 从云形成中创建给定 EC2 的 AMI

转载 作者:行者123 更新时间:2023-12-03 07:26:27 25 4
gpt4 key购买 nike

我必须从 cloudformation 创建给定 EC2 实例的 AMI,然后从该 AMI 创建 ec2。这个怎么做?我的主要问题是第一部分

最佳答案

以下代码是一个函数,可以作为 CustomResource 调用以创建 AMI。

我已经很长时间没有使用它了,但它应该仍然可以工作。

您的 CustomResource 将需要传入 RegionInstance(以及 Tags,如果您需要的话)。

为了从中创建新的 EC2 实例,您需要使用 ImageId 的返回值并将其作为 AMI 输入到 AWS::EC2::Instance。

var Aws = require("aws-sdk");
var Response = require('cfn-response');

exports.handler = function (e, c) {

console.log("REQUEST RECEIVED:\n" + JSON.stringify(e));

// For Delete requests, immediately send a SUCCESS response.
if (e.RequestType === "Delete") {
Response.send(e, c, Response.SUCCESS);
return;
}

console.log("Region=" + e.ResourceProperties.Region);
console.log("Instance=" + e.ResourceProperties.Instance);

var ec2 = new Aws.EC2({ region: e.ResourceProperties.Region });
console.log("ec2=" + ec2);
console.log("Tags=" + e.ResourceProperties.Tags);

var params = {
InstanceId: e.ResourceProperties.Instance,
Name: e.ResourceProperties.AmiName
};

console.log("params=" + params);
console.log("params.InstanceIds=" + params.InstanceIds);

var responseStatus = "FAILED";

ec2.createImage(params, function (err, data) {
if (err) {
console.log("createImage.err:" + err.toString(), err.stack.toString());
Response.send(e, c, Response.FAILED);
} // an error occurred
else {
console.log("createImage" + data);
responseStatus = "SUCCESS";

var responseData = {};
responseData["ImageId"] = data.ImageId;

var tagParams = {
Resources: [data.ImageId],
Tags: e.ResourceProperties.Tags
}

ec2.createTags(tagParams, function (err, data) {
if (err) {
data = { Error: "DescribeImages call failed" };
console.log(data.Error + ":\n", err);
Response.send(e, c, Response.FAILED);
} else {
console.log(data);
Response.send(e, c, Response.SUCCESS, responseData);
}
});
}
});
};

关于amazon-web-services - 从云形成中创建给定 EC2 的 AMI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71406744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com