Javascript AWS Lambda函数用于创建/删除WAF中的条目
我正在尝试编写一个基本逻辑来创建WAF条目(这将阻止输入一个ip地址或一组ip地址),然后删除它们 我现在正在做这个Javascript AWS Lambda函数用于创建/删除WAF中的条目,javascript,node.js,amazon-web-services,aws-lambda,aws-sdk-js,Javascript,Node.js,Amazon Web Services,Aws Lambda,Aws Sdk Js,我正在尝试编写一个基本逻辑来创建WAF条目(这将阻止输入一个ip地址或一组ip地址),然后删除它们 我现在正在做这个 const aws = require('aws-sdk'); const s3 = new aws.S3({ apiVersion: '2006-03-01' }); const waf = new aws.WAF({ apiVersion: '2015-08-24' }); class Police { constructor(maxHit=100, timeGap=
const aws = require('aws-sdk');
const s3 = new aws.S3({ apiVersion: '2006-03-01' });
const waf = new aws.WAF({ apiVersion: '2015-08-24' });
class Police {
constructor(maxHit=100, timeGap=(6*60*60*1000)) {
this.maxHit = maxHit;
this.timeGap = timeGap;
this.lastBailCheck = Date.now();
this.hitMap = {};
}
static bail(ip){
// TODO bail this ip by removing entry into waf
}
static jail(ip){
// TODO jail this ip by adding entry from waf
}
checkBail(){
var nowDate = Date.now();
if((nowDate - this.lastBailCheck) > this.timeGap){
this.lastBailCheck = nowDate;
this.prevMap = this.hitMap;
this.hitMap = {};
this.scanAndBail();
}
}
scanAndBail(){
Object.keys(this.prevMap).forEach(Police.bail);
delete this.prevMap;
}
watch(ip){
this.hitMap[ip] = (this.hitMap[ip] || 0) + 1;
if(this.maxHit < this.hitMap[ip]){
Police.jail(ip);
}
this.checkBail();
}
}
const police = new Police();
function forOneLogLine(line){
if(typeof line === 'string') {
police.watch(line.split(' ')[3]);
}
}
const aws=require('aws-sdk');
consts3=新的aws.s3({apiVersion:'2006-03-01'});
const waf=新的aws.waf({apiVersion:'2015-08-24'});
班警{
构造函数(maxHit=100,时间间隔=(6*60*60*1000)){
this.maxHit=maxHit;
this.timeGap=timeGap;
this.lastBailCheck=Date.now();
this.hitMap={};
}
静态提环(ip){
//TODO通过移除waf入口来保护该ip
}
静态监狱(ip){
//TODO通过添加来自waf的条目来囚禁此ip
}
支票保证金{
var nowDate=Date.now();
如果((nowDate-this.lastBailCheck)>this.timeGap){
this.lastBailCheck=nowDate;
this.prevMap=this.hitMap;
this.hitMap={};
这个。scanAndBail();
}
}
scanAndBail(){
Object.keys(this.prevMap).forEach(Police.bail);
删除此.prevMap;
}
手表(ip){
this.hitMap[ip]=(this.hitMap[ip]| | 0)+1;
if(this.maxHit
所以这里我想为监狱
和保释
填充代码(阻止/释放一个ip地址或一组地址)
我经历了这一切。但如何实现它却令人困惑。更具体地说,如何最佳地实施它。
我只是在寻找两个API,一个我可以传递ip地址并阻止它,另一个可以释放它
我有几个基本问题,从上述文件
aws.WAF
是否自动将一组ip地址分组到IPSET中aws.WAF
是否也保存了命中计数,这与我在《警察》课上做的类似IPaddress
获取ChangeToken
?或者我能拥有它一次并永远使用它吗如果我的
监狱
和保释
代码被填满,我会很高兴。AWS有一个教程,其中包括编写要调用的等效JavaScript代码(用于插入和删除IP集)。好的。。那很好。。但我不想创建云形成堆栈。。没有stack难道不可能吗?我的意思是,我只是更新WAF条目。。stack介于两者之间?我已经读完了教程。。并试图在不使用堆栈(模板)的情况下自行完成所有工作。甚至教程中也提到,lamda函数会进入WAF。。我也在做同样的事。。用简单的逻辑…对,这里不需要云信息。我希望您能够通过JavaScript SDK实现这一点。示例Python Lambda代码没有帮助吗?它确实很有帮助。。了解正在发生的事情。。但仅仅是挣扎在ip集的来源和python的一点点。。对python来说非常陌生