From 20494a180b8fd4a6ea5411b914794d59e8212063 Mon Sep 17 00:00:00 2001 From: Onno Vos Date: Mon, 27 Jan 2025 07:24:21 +0100 Subject: [PATCH 1/3] uri_encode_path in aws_bedrock_runtime --- priv/rest.erl.eex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/priv/rest.erl.eex b/priv/rest.erl.eex index 0a9515b..88cae2c 100644 --- a/priv/rest.erl.eex +++ b/priv/rest.erl.eex @@ -231,7 +231,7 @@ do_request(Client, Method, Path, Query, Headers0, Input, Options, SuccessStatusC Headers1 = aws_request:add_headers(AdditionalHeaders, Headers0), MethodBin = aws_request:method_to_binary(Method), - SignedHeaders = aws_request:sign_request(Client1, MethodBin, URL, Headers1, Payload<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, [{uri_encode_path, true}]<% else %><% end %>), + SignedHeaders = aws_request:sign_request(Client1, MethodBin, URL, Headers1, Payload<%= if context.module_name in ["aws_apigatewaymanagementapi", "aws_bedrock_runtime"] do %>, [{uri_encode_path, true}]<% else %><% end %>), Response = hackney:request(Method, URL, SignedHeaders, Payload, Options), DecodeBody = not proplists:get_value(receive_body_as_binary, Options), handle_response(Response, SuccessStatusCode, DecodeBody). From e4e2ce9696ae4be5b4f63775aa8f95185aca34ac Mon Sep 17 00:00:00 2001 From: Onno Vos Date: Mon, 27 Jan 2025 07:29:51 +0100 Subject: [PATCH 2/3] Fix for all aws_bedrock APIs --- priv/rest.erl.eex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/priv/rest.erl.eex b/priv/rest.erl.eex index 88cae2c..251f320 100644 --- a/priv/rest.erl.eex +++ b/priv/rest.erl.eex @@ -231,7 +231,7 @@ do_request(Client, Method, Path, Query, Headers0, Input, Options, SuccessStatusC Headers1 = aws_request:add_headers(AdditionalHeaders, Headers0), MethodBin = aws_request:method_to_binary(Method), - SignedHeaders = aws_request:sign_request(Client1, MethodBin, URL, Headers1, Payload<%= if context.module_name in ["aws_apigatewaymanagementapi", "aws_bedrock_runtime"] do %>, [{uri_encode_path, true}]<% else %><% end %>), + SignedHeaders = aws_request:sign_request(Client1, MethodBin, URL, Headers1, Payload<%= if context.module_name == "aws_apigatewaymanagementapi" or String.contains?(context.module_name, "aws_bedrock") do %>, [{uri_encode_path, true}]<% else %><% end %>), Response = hackney:request(Method, URL, SignedHeaders, Payload, Options), DecodeBody = not proplists:get_value(receive_body_as_binary, Options), handle_response(Response, SuccessStatusCode, DecodeBody). From f830faddf4e3eb602725dfd0d754324a39249a36 Mon Sep 17 00:00:00 2001 From: Onno Vos Date: Mon, 27 Jan 2025 07:32:18 +0100 Subject: [PATCH 3/3] Fix POST APIs as well --- priv/post.erl.eex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/priv/post.erl.eex b/priv/post.erl.eex index 592570d..6a42686 100644 --- a/priv/post.erl.eex +++ b/priv/post.erl.eex @@ -90,7 +90,7 @@ request(Client, Action, Input, Options) -> Input = Input0, <% end %> Payload = <%= context.encode %>, - SignedHeaders = aws_request:sign_request(Client1, <<"POST">>, URL, Headers, Payload), + SignedHeaders = aws_request:sign_request(Client1, <<"POST">>, URL, Headers, Payload<%= if context.module_name == "aws_apigatewaymanagementapi" or String.contains?(context.module_name, "aws_bedrock") do %>, [{uri_encode_path, true}]<% else %><% end %>), Response = hackney:request(post, URL, SignedHeaders, Payload, Options), handle_response(Response).