diff --git a/kong/db/dao/plugins.lua b/kong/db/dao/plugins.lua index 9bf8447ef047..f05c31d677a2 100644 --- a/kong/db/dao/plugins.lua +++ b/kong/db/dao/plugins.lua @@ -355,29 +355,5 @@ function Plugins:get_handlers() return list end -function Plugins:execute_plugin_init() - local handlers, err = self:get_handlers() - if not handlers then - return nil, err - end - - local errors - - for _, handler in ipairs(handlers) do - if implements(handler.handler, "init") then - local ok, err = pcall(handler.handler.init, handler.handler) - if not ok then - errors = errors or {} - errors[#errors + 1] = "on plugin '" .. handler.name .. "': " .. tostring(err) - end - end - end - - if errors then - return nil, "error executing plugin init: " .. table.concat(errors, "; ") - end - - return true -end return Plugins diff --git a/kong/init.lua b/kong/init.lua index 5bb4aa68c97a..f158c0b0358f 100644 --- a/kong/init.lua +++ b/kong/init.lua @@ -627,8 +627,6 @@ function Kong.init() -- Load plugins as late as possible so that everything is set up assert(db.plugins:load_plugin_schemas(config.loaded_plugins)) - assert(db.plugins:execute_plugin_init()) - if is_stream_module then stream_api.load_handlers() end diff --git a/kong/plugins/aws-lambda/handler.lua b/kong/plugins/aws-lambda/handler.lua index 3b791b1fbc75..b04efa26d826 100644 --- a/kong/plugins/aws-lambda/handler.lua +++ b/kong/plugins/aws-lambda/handler.lua @@ -16,10 +16,9 @@ local build_request_payload = request_util.build_request_payload local extract_proxy_response = request_util.extract_proxy_response local aws = require("resty.aws") -local AWS_GLOBAL_CONFIG -local AWS_REGION do - AWS_REGION = os.getenv("AWS_REGION") or os.getenv("AWS_DEFAULT_REGION") -end +local aws_config = require("resty.aws.config") +-- Fetch and cache env vars during init phase +local AWS_GLOBAL_CONFIG = aws_config.get_config() local AWS local LAMBDA_SERVICE_CACHE = setmetatable({}, { __mode = "k" }) @@ -35,20 +34,27 @@ local AWSLambdaHandler = { VERSION = meta.version } -function AWSLambdaHandler:init() - AWS_GLOBAL_CONFIG = require("resty.aws.config").global - AWS = aws() -end - function AWSLambdaHandler:access(conf) -- The region in plugin configuraion has higher priority -- than the one in environment variable - local region = conf.aws_region or AWS_REGION + local region = conf.aws_region or AWS_GLOBAL_CONFIG.region if not region then return error("no region specified") end + if not aws_config.global then + -- Fetch region from metadata service, or from + -- environment variable + AWS_GLOBAL_CONFIG = require("resty.aws.config").global + end + + if not AWS then + AWS = aws({ + region = region + }) + end + local host = conf.host or fmt("lambda.%s.amazonaws.com", region) local port = conf.port or 443