amazon-web-services - 通过 lambda 访问所有 ec2 跨区域
问题描述
我有用于自动 Ami 备份的 lambda 功能,可以跨区域执行 lambda,以自动备份我所有在帐户中工作的 EC2。
跨区域的所有 ec2 执行一个 lambda 函数
var aws = require('aws-sdk');
aws.config.region = 'us-east-1','ap-south-1','eu-central-1';
var ec2 = new aws.EC2();
var now = new Date();
date = now.toISOString().substring(0, 10)
hours = now.getHours()
minutes = now.getMinutes()
exports.handler = function(event, context) {
var instanceparams = {
Filters: [{
Name: 'tag:Backup',
Values: [
'yes'
]
}]
}
ec2.describeInstances(instanceparams, function(err, data) {
if (err) console.log(err, err.stack);
else {
for (var i in data.Reservations) {
for (var j in data.Reservations[i].Instances) {
instanceid = data.Reservations[i].Instances[j].InstanceId;
nametag = data.Reservations[i].Instances[j].Tags
for (var k in data.Reservations[i].Instances[j].Tags) {
if (data.Reservations[i].Instances[j].Tags[k].Key == 'Name') {
name = data.Reservations[i].Instances[j].Tags[k].Value;
}
}
console.log("Creating AMIs of the Instance: ", name);
var imageparams = {
InstanceId: instanceid,
Name: name + "_" + date + "_" + hours + "-" + minutes,
NoReboot: true
}
ec2.createImage(imageparams, function(err, data) {
if (err) console.log(err, err.stack);
else {
image = data.ImageId;
console.log(image);
var tagparams = {
Resources: [image],
Tags: [{
Key: 'DeleteOn',
Value: 'yes'
}]
};
ec2.createTags(tagparams, function(err, data) {
if (err) console.log(err, err.stack);
else console.log("Tags added to the created AMIs");
});
}
});
}
}
}
});
}
其中 aws.config.region 用于区域配置。它适用于当前(部署 lambda)区域
解决方案
这一行:
var ec2 = new aws.EC2();
连接到运行 Lambda 函数的区域中的 Amazon EC2 服务。
您可以修改它以连接到另一个区域:
var ec2 = new AWS.EC2({apiVersion: '2006-03-01', region: 'us-west-2'});
因此,您的程序可以遍历区域列表(来自ec2.describeRegions
),为给定区域创建一个新的 EC2 客户端,然后运行您已有的代码。
推荐阅读
- c# - EF Core - 可能导致循环或多个级联路径
- python - 有没有一种有效的方法在两个字符串之间分割一个字符串?
- c++ - 使用openmp优化for循环的不同方法
- apache-camel - 骆驼解压缩文件,处理内容并再次压缩
- android - 如何删除卡片视图和按钮之间的空间
- c# - MS Bot 框架不记得身份验证
- python - 有没有办法在 Visual Studio Code 中更改编辑器的只读设置?
- microservices - 如何从微服务中获取分组数据?
- algorithm - 是否有任何有效的算法可以从其输出中搜索给予图灵机的原始命令?
- python - 在python中,当我取款然后存款时如何更新余额?