Add support for AWS China endpoints (#3661)

This commit is contained in:
Bert Blommers 2021-10-18 16:13:08 +00:00 committed by GitHub
parent f50d80ede6
commit 24ed6c8d34
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 30 additions and 3 deletions

View File

@ -1,7 +1,7 @@
from __future__ import unicode_literals
from .responses import LambdaResponse
url_bases = [r"https?://lambda\.(.+)\.amazonaws\.com(|.cn)"]
url_bases = [r"https?://lambda\.(.+)\.amazonaws\.com"]
response = LambdaResponse()

View File

@ -661,9 +661,14 @@ class BaseBackend:
urls = {}
for url_base in url_bases:
# The default URL_base will look like: http://service.[..].amazonaws.com/...
# This extension ensures support for the China regions
cn_url_base = re.sub(r"amazonaws\\?.com$", "amazonaws.com.cn", url_base)
for url_path, handler in unformatted_paths.items():
url = url_path.format(url_base)
urls[url] = handler
cn_url = url_path.format(cn_url_base)
urls[cn_url] = handler
return urls

View File

@ -4664,7 +4664,9 @@ class SubnetBackend(object):
def get_all_subnets(self, subnet_ids=None, filters=None):
# Extract a list of all subnets
matches = itertools.chain(*[x.values() for x in self.subnets.values()])
matches = itertools.chain(
*[x.copy().values() for x in self.subnets.copy().values()]
)
if subnet_ids:
matches = [sn for sn in matches if sn.id in subnet_ids]
if len(subnet_ids) > len(matches):

View File

@ -1,6 +1,6 @@
from __future__ import unicode_literals
from .responses import TokenResponse
url_bases = [r"https?://sts\.(.*\.)?amazonaws\.com(|.cn)"]
url_bases = [r"https?://sts\.(.*\.)?amazonaws\.com"]
url_paths = {"{0}/$": TokenResponse.dispatch}

View File

@ -0,0 +1,12 @@
import boto3
import pytest
from moto import mock_batch
@pytest.mark.parametrize("region", ["us-west-2", "cn-northwest-1"])
@mock_batch
def test_batch_regions(region):
client = boto3.client("batch", region_name=region)
resp = client.describe_jobs(jobs=[""])
resp["ResponseMetadata"]["HTTPStatusCode"].should.equal(200)

View File

@ -924,6 +924,14 @@ def test_state_machine_get_execution_history_contains_expected_success_events_wh
execution_history["events"].should.equal(expected_events)
@pytest.mark.parametrize("region", ["us-west-2", "cn-northwest-1"])
@mock_stepfunctions
def test_stepfunction_regions(region):
client = boto3.client("stepfunctions", region_name=region)
resp = client.list_state_machines()
resp["ResponseMetadata"]["HTTPStatusCode"].should.equal(200)
@mock_stepfunctions
@mock_sts
@mock.patch.dict(os.environ, {"SF_EXECUTION_HISTORY_TYPE": "FAILURE"})