2017-06-05 103 views
0

我是新的NodeJS並試圖更改此AWS提供的用於信譽列表更新的示例,但它僅限於CloudFront全局區域。NodeJS Lambda Region WAF IPSetID

https://github.com/awslabs/aws-waf-sample/tree/master/waf-reputation-lists

我所做的更改CloudFormation對事實IPSetID不存在但創建區域IPSetID函數退出。我認爲這是由於SDK正在關注全局而不是區域性事實,即eu-west-1,因此我在配置中設置了區域,但仍無法找到IPSet。

var aws = require('aws-sdk'); 

// configure API retries 
aws.config.update({ 
    region:'eu-west-1', 
    maxRetries: 3, 
    retryDelayOptions: { 
     base: 1000 
    } 
}); 
var waf = new aws.WAF(); 

我已經看到了最近的問題(AWS WAF update ip sets and rules specific to a region from lambda品),顯示然而URL區別,我不知道從哪裏開始更新網址是什麼?

Error getting IP sets { [WAFNonexistentItemException: The referenced item does not exist.] 
      message: 'The referenced item does not exist.', 
      code: 'WAFNonexistentItemException', 
      statusCode: 400, 
      retryable: false, 
      retryDelay: 162.11187234148383 } 

    Error getting ranges and/or IP sets { [WAFNonexistentItemException: The referenced item does not exist.] 
      message: 'The referenced item does not exist.', 
      code: 'WAFNonexistentItemException', 
      statusCode: 400, 
      retryable: false, 
      retryDelay: 162.11187234148383 } 


     { 
      "errorMessage": "The referenced item does not exist.", 
      "errorType": "WAFNonexistentItemException", 
      "stackTrace": [ 
      "Request.extractError (/var/task/node_modules/aws-sdk/lib/protocol/json.js:48:27)", 
      "Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:105:20)", 
      "Request.emit (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:77:10)", 
      "Request.emit (/var/task/node_modules/aws-sdk/lib/request.js:682:14)", 
      "Request.transition (/var/task/node_modules/aws-sdk/lib/request.js:22:10)", 
      "AcceptorStateMachine.runTo (/var/task/node_modules/aws-sdk/lib/state_machine.js:14:12)", 
      "/var/task/node_modules/aws-sdk/lib/state_machine.js:26:10", 
      "Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:38:9)", 
      "Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:684:12)", 
      "Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:115:18)" 
      ] 
     } 

回答

1

您應該確保您擁有支持區域WAF的aws-sdk的更新版本。更改行var waf = new aws.WAF();代碼類似於以下內容。

var readline = require('readline'); 
var aws = require('aws-sdk'); 
var https = require('https'); 
var async = require('async'); 

    // configure API retries 
    aws.config.update({ 
     region:'eu-west-1', 
     maxRetries: 3, 
     retryDelayOptions: { 
      base: 1000 
     } 
    }); 
    var waf = new aws.WAFRegional(); 
    var cloudwatch = new aws.CloudWatch(); 
    var cloudformation = new aws.CloudFormation(); 

我使用的版本如下,並得到了這個工作。 (從節點的package.json配置文件)

{ 
    "name": "reputation-lists-parser", 
    "version": "1.0.0", 
    "description": "", 
    "main": "reputation-lists-parser.js", 
    "dependencies": { 
    "aws-sdk": "^2.76.0", 
    "async": "^2.4.1", 
    "xml2js": "^0.4.17" 
    } 
} 

您可能需要加載包含你的代碼到AWS LAMBDA整個壓縮文件。

我使用https://github.com/itopiacloud/aws-waf-regional-security-automations中包含的代碼來幫助我得到這個工作。

+0

我不明白爲什麼他們不會有一個類,但如果你在配置中設置一個區域,那麼它將是區域性的 – Neo