From 35ee09292e634f35ebfedd202114f41137c6faa0 Mon Sep 17 00:00:00 2001 From: cjyclaire Date: Thu, 7 Nov 2019 12:48:02 -0800 Subject: [PATCH 1/2] support VPC Endpoint SQS Queue URL --- gems/aws-sdk-sqs/CHANGELOG.md | 2 ++ .../lib/aws-sdk-sqs/plugins/queue_urls.rb | 12 +++++++++++- gems/aws-sdk-sqs/spec/client/queue_urls_spec.rb | 9 +++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/gems/aws-sdk-sqs/CHANGELOG.md b/gems/aws-sdk-sqs/CHANGELOG.md index c7838a217af..d0001ffc461 100644 --- a/gems/aws-sdk-sqs/CHANGELOG.md +++ b/gems/aws-sdk-sqs/CHANGELOG.md @@ -1,6 +1,8 @@ Unreleased Changes ------------------ +* Issue - Support VPC Endpoint pattern in Aws::SQS::Plugins::QueueUrl (Github #2114) + 1.23.0 (2019-10-23) ------------------ diff --git a/gems/aws-sdk-sqs/lib/aws-sdk-sqs/plugins/queue_urls.rb b/gems/aws-sdk-sqs/lib/aws-sdk-sqs/plugins/queue_urls.rb index 743790a6a04..04106f69aa1 100644 --- a/gems/aws-sdk-sqs/lib/aws-sdk-sqs/plugins/queue_urls.rb +++ b/gems/aws-sdk-sqs/lib/aws-sdk-sqs/plugins/queue_urls.rb @@ -22,7 +22,7 @@ def update_endpoint(context, url) # region, then we will modify the request to have # a sigv4 signer for the proper region. def update_region(context, queue_url) - if queue_region = queue_url.to_s.split('.')[1] + if queue_region = parse_region(queue_url) if queue_region != context.config.region config = context.config.dup config.region = queue_region @@ -33,6 +33,16 @@ def update_region(context, queue_url) end end + private + + # take the first conponemnt after service delimiter + # https://sqs.us-east-1.amazonaws.com/1234567890/demo + # https://vpce-x-y.sqs.us-east-1.vpce.amazonaws.com/1234567890/demo + def parse_region(url) + parts = url.split('sqs.') + parts[1].split('.').first if parts.size > 1 + end + end handler(Handler) diff --git a/gems/aws-sdk-sqs/spec/client/queue_urls_spec.rb b/gems/aws-sdk-sqs/spec/client/queue_urls_spec.rb index 863c07a2f63..f5a4049d35f 100644 --- a/gems/aws-sdk-sqs/spec/client/queue_urls_spec.rb +++ b/gems/aws-sdk-sqs/spec/client/queue_urls_spec.rb @@ -45,6 +45,15 @@ module SQS expect(resp.context.http_request.headers['authorization']).to include('cn-north-1') end + it 'supports vpc endpoint queue URL' do + url = "https://vpce-xxxx-yyyy.sqs.us-east-1.vpce."\ + "amazonaws.com/1234567890/demo" + client = Client.new(stub_responses:true, region: 'cn-north-1') + resp = client.send(method, params.merge(queue_url: url)) + expect(resp.context.http_request.headers['authorization']) + .to include('us-east-1') + end + it 'raises an error for a badly formatted queue url' do expect { client = Client.new(stub_responses:true) From 6cba169590e4a367d22a7879537bdd3563e3460e Mon Sep 17 00:00:00 2001 From: cjyclaire Date: Thu, 7 Nov 2019 12:50:20 -0800 Subject: [PATCH 2/2] typo fix [ci skip] --- gems/aws-sdk-sqs/lib/aws-sdk-sqs/plugins/queue_urls.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gems/aws-sdk-sqs/lib/aws-sdk-sqs/plugins/queue_urls.rb b/gems/aws-sdk-sqs/lib/aws-sdk-sqs/plugins/queue_urls.rb index 04106f69aa1..f120933bd6a 100644 --- a/gems/aws-sdk-sqs/lib/aws-sdk-sqs/plugins/queue_urls.rb +++ b/gems/aws-sdk-sqs/lib/aws-sdk-sqs/plugins/queue_urls.rb @@ -35,7 +35,7 @@ def update_region(context, queue_url) private - # take the first conponemnt after service delimiter + # take the first component after service delimiter # https://sqs.us-east-1.amazonaws.com/1234567890/demo # https://vpce-x-y.sqs.us-east-1.vpce.amazonaws.com/1234567890/demo def parse_region(url)