This is an automated email from the ASF dual-hosted git repository.

ashishtiwari pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix.git


The following commit(s) were added to refs/heads/master by this push:
     new 55b1dd2ac fix: timeout risk in usages of `lua-resty-aws` (#12070)
55b1dd2ac is described below

commit 55b1dd2ac409ff6bcd2321b319113f5dc59f5de2
Author: Shreemaan Abhishek <[email protected]>
AuthorDate: Thu Mar 20 11:29:57 2025 +0545

    fix: timeout risk in usages of `lua-resty-aws` (#12070)
---
 apisix/plugins/ai-aws-content-moderation.lua | 9 ++++++++-
 apisix/secret/aws.lua                        | 7 ++++++-
 t/plugin/ai-aws-content-moderation-secrets.t | 6 ++++++
 t/plugin/ai-aws-content-moderation.t         | 6 ++++++
 t/plugin/ai-aws-content-moderation2.t        | 6 ++++++
 5 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/apisix/plugins/ai-aws-content-moderation.lua 
b/apisix/plugins/ai-aws-content-moderation.lua
index 85caf5520..d229b47b2 100644
--- a/apisix/plugins/ai-aws-content-moderation.lua
+++ b/apisix/plugins/ai-aws-content-moderation.lua
@@ -14,8 +14,12 @@
 -- See the License for the specific language governing permissions and
 -- limitations under the License.
 --
+require("resty.aws.config") -- to read env vars before initing aws module
+
 local core = require("apisix.core")
-local aws_instance = require("resty.aws")()
+local aws = require("resty.aws")
+local aws_instance
+
 local http = require("resty.http")
 local fetch_secrets = require("apisix.secret").fetch_secrets
 
@@ -96,6 +100,9 @@ function _M.rewrite(conf, ctx)
 
     local comprehend = conf.comprehend
 
+    if not aws_instance then
+        aws_instance = aws()
+    end
     local credentials = aws_instance:Credentials({
         accessKeyId = comprehend.access_key_id,
         secretAccessKey = comprehend.secret_access_key,
diff --git a/apisix/secret/aws.lua b/apisix/secret/aws.lua
index e194fff08..af2e045ca 100644
--- a/apisix/secret/aws.lua
+++ b/apisix/secret/aws.lua
@@ -16,9 +16,12 @@
 --
 
 --- AWS Tools.
+require("resty.aws.config") -- to read env vars before initing aws module
+
 local core = require("apisix.core")
 local http = require("resty.http")
 local aws = require("resty.aws")
+local aws_instance
 
 local sub = core.string.sub
 local find = core.string.find
@@ -51,7 +54,9 @@ local _M = {
 }
 
 local function make_request_to_aws(conf, key)
-    local aws_instance = aws()
+    if not aws_instance then
+        aws_instance = aws()
+    end
 
     local region = conf.region
 
diff --git a/t/plugin/ai-aws-content-moderation-secrets.t 
b/t/plugin/ai-aws-content-moderation-secrets.t
index 6c531b243..a88171ac1 100644
--- a/t/plugin/ai-aws-content-moderation-secrets.t
+++ b/t/plugin/ai-aws-content-moderation-secrets.t
@@ -33,6 +33,12 @@ add_block_preprocessor(sub {
         $block->set_value("request", "GET /t");
     }
 
+    my $main_config = $block->main_config // <<_EOC_;
+        env AWS_REGION=us-east-1;
+_EOC_
+
+    $block->set_value("main_config", $main_config);
+
     my $http_config = $block->http_config // <<_EOC_;
         server {
             listen 2668;
diff --git a/t/plugin/ai-aws-content-moderation.t 
b/t/plugin/ai-aws-content-moderation.t
index 1fb3eed8f..7810dea55 100644
--- a/t/plugin/ai-aws-content-moderation.t
+++ b/t/plugin/ai-aws-content-moderation.t
@@ -30,6 +30,12 @@ add_block_preprocessor(sub {
         $block->set_value("request", "GET /t");
     }
 
+    my $main_config = $block->main_config // <<_EOC_;
+        env AWS_REGION=us-east-1;
+_EOC_
+
+    $block->set_value("main_config", $main_config);
+
     my $http_config = $block->http_config // <<_EOC_;
         server {
             listen 2668;
diff --git a/t/plugin/ai-aws-content-moderation2.t 
b/t/plugin/ai-aws-content-moderation2.t
index 93897017d..869fcf09d 100644
--- a/t/plugin/ai-aws-content-moderation2.t
+++ b/t/plugin/ai-aws-content-moderation2.t
@@ -26,6 +26,12 @@ no_root_location();
 add_block_preprocessor(sub {
     my ($block) = @_;
 
+    my $main_config = $block->main_config // <<_EOC_;
+        env AWS_REGION=us-east-1;
+_EOC_
+
+    $block->set_value("main_config", $main_config);
+
     if (!defined $block->request) {
         $block->set_value("request", "GET /t");
     }

Reply via email to