コード例 #1
0
    def test_bucket_name(self):
        # array description : 'path', 'header', 'expected_ouput'
        bucket_names = [
            ('/bucket/keyname', {'host': f'https://{HOSTNAME}:4566'}, 'bucket'),
            ('/bucket//keyname', {'host': f'https://{HOSTNAME}:4566'}, 'bucket'),
            ('/keyname', {'host': f'bucket.{S3_VIRTUAL_HOSTNAME}:4566'}, 'bucket'),
            ('//keyname', {'host': f'bucket.{S3_VIRTUAL_HOSTNAME}:4566'}, 'bucket'),
            ('/', {'host': f'{S3_VIRTUAL_HOSTNAME}:4566'}, None),
            ('/', {'host': 'bucket.s3-ap-northeast-1.amazonaws.com:4566'}, 'bucket'),
            ('/', {'host': 'bucket.s3-ap-northeast-2.amazonaws.com:4566'}, 'bucket'),
            ('/', {'host': 'bucket.s3-ap-south-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3-ap-southeast-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3-ap-southeast-2.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3-ca-central-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3-eu-central-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'http://bucket.s3-eu-west-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'http://bucket.s3-eu-west-2.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'http://bucket.s3-eu-west-3.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'http://bucket.s3-external-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'http://bucket.s3-sa-east-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3-us-east-2.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3-us-west-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3-us-west-2.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.ap-northeast-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.ap-northeast-2.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.ap-south-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.ap-southeast-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.ap-southeast-2.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.ca-central-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.cn-north-1.amazonaws.com.cn'}, 'bucket'),
            ('/', {'host': 'bucket.s3.cn-northwest-1.amazonaws.com.cn'}, 'bucket'),
            ('/', {'host': 'bucket.s3.dualstack.ap-northeast-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'https://bucket.s3.dualstack.ap-northeast-2.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'https://bucket.s3.dualstack.ap-south-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'https://bucket.s3.dualstack.ap-southeast-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'https://bucket.s3.dualstack.ap-southeast-2.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'https://bucket.s3.dualstack.ca-central-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'https://bucket.s3.dualstack.eu-central-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.dualstack.eu-west-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.dualstack.eu-west-2.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.dualstack.eu-west-3.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.dualstack.sa-east-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.dualstack.us-east-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.dualstack.us-east-2.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.dualstack.us-west-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.dualstack.us-west-2.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.eu-central-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.eu-west-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.eu-west-2.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.eu-west-3.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.sa-east-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.us-east-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.us-east-2.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.us-west-1.amazonaws.com'}, 'bucket'),
            ('/', {'host': 'bucket.s3.us-west-2.amazonaws.com'}, 'bucket')
        ]

        for path, headers, expected_result in bucket_names:
            self.assertEqual(expected_result, s3_utils.extract_bucket_name(headers, path))
コード例 #2
0
def convert_s3_to_local_url(url):
    url_parsed = urlparse(url)
    path = url_parsed.path

    headers = CaseInsensitiveDict({"Host": url_parsed.netloc})
    bucket_name = s3_utils.extract_bucket_name(headers, path)
    key_name = s3_utils.extract_key_name(headers, path)

    # note: make sure to normalize the bucket name here!
    bucket_name = s3_listener.normalize_bucket_name(bucket_name)
    local_url = f"{config.service_url('s3')}/{bucket_name}/{key_name}"
    return local_url
コード例 #3
0
def convert_s3_to_local_url(url):
    url_parsed = urlparse.urlparse(url)
    path = url_parsed.path

    headers = CaseInsensitiveDict({"Host": url_parsed.netloc})
    bucket_name = s3_utils.extract_bucket_name(headers, path)
    key_name = s3_utils.extract_key_name(headers, path)

    # note: make sure to normalize the bucket name here!
    bucket_name = s3_listener.normalize_bucket_name(bucket_name)
    local_url = "%s/%s/%s" % (config.TEST_S3_URL, bucket_name, key_name)
    return local_url
コード例 #4
0
ファイル: s3_starter.py プロジェクト: strongjz/localstack
 def parse_bucket_name_from_url(self, request, url):
     path = urlparse(url).path
     return s3_utils.extract_bucket_name(request.headers, path)
コード例 #5
0
ファイル: test_s3.py プロジェクト: supaflysnooka/localstack
    def test_bucket_name(self):
        # array description : 'path', 'header', 'expected_ouput'
        bucket_names = [
            ("/bucket/keyname", {"host": f"https://{LOCALHOST}:4566"}, "bucket"),
            ("/bucket//keyname", {"host": f"https://{LOCALHOST}:4566"}, "bucket"),
            ("/keyname", {"host": f"bucket.{S3_VIRTUAL_HOSTNAME}:4566"}, "bucket"),
            ("//keyname", {"host": f"bucket.{S3_VIRTUAL_HOSTNAME}:4566"}, "bucket"),
            ("/", {"host": f"{S3_VIRTUAL_HOSTNAME}:4566"}, None),
            ("/", {"host": "bucket.s3-ap-northeast-1.amazonaws.com:4566"}, "bucket"),
            ("/", {"host": "bucket.s3-ap-northeast-2.amazonaws.com:4566"}, "bucket"),
            ("/", {"host": "bucket.s3-ap-south-1.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3-ap-southeast-1.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3-ap-southeast-2.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3-ca-central-1.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3-eu-central-1.amazonaws.com"}, "bucket"),
            ("/", {"host": "http://bucket.s3-eu-west-1.amazonaws.com"}, "bucket"),
            ("/", {"host": "http://bucket.s3-eu-west-2.amazonaws.com"}, "bucket"),
            ("/", {"host": "http://bucket.s3-eu-west-3.amazonaws.com"}, "bucket"),
            ("/", {"host": "http://bucket.s3-external-1.amazonaws.com"}, "bucket"),
            ("/", {"host": "http://bucket.s3-sa-east-1.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3-us-east-2.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3-us-west-1.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3-us-west-2.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.ap-northeast-1.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.ap-northeast-2.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.ap-south-1.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.ap-southeast-1.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.ap-southeast-2.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.ca-central-1.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.cn-north-1.amazonaws.com.cn"}, "bucket"),
            ("/", {"host": "bucket.s3.cn-northwest-1.amazonaws.com.cn"}, "bucket"),
            (
                "/",
                {"host": "bucket.s3.dualstack.ap-northeast-1.amazonaws.com"},
                "bucket",
            ),
            (
                "/",
                {"host": "https://bucket.s3.dualstack.ap-northeast-2.amazonaws.com"},
                "bucket",
            ),
            (
                "/",
                {"host": "https://bucket.s3.dualstack.ap-south-1.amazonaws.com"},
                "bucket",
            ),
            (
                "/",
                {"host": "https://bucket.s3.dualstack.ap-southeast-1.amazonaws.com"},
                "bucket",
            ),
            (
                "/",
                {"host": "https://bucket.s3.dualstack.ap-southeast-2.amazonaws.com"},
                "bucket",
            ),
            (
                "/",
                {"host": "https://bucket.s3.dualstack.ca-central-1.amazonaws.com"},
                "bucket",
            ),
            (
                "/",
                {"host": "https://bucket.s3.dualstack.eu-central-1.amazonaws.com"},
                "bucket",
            ),
            ("/", {"host": "bucket.s3.dualstack.eu-west-1.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.dualstack.eu-west-2.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.dualstack.eu-west-3.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.dualstack.sa-east-1.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.dualstack.us-east-1.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.dualstack.us-east-2.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.dualstack.us-west-1.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.dualstack.us-west-2.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.eu-central-1.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.eu-west-1.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.eu-west-2.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.eu-west-3.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.sa-east-1.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.us-east-1.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.us-east-2.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.us-west-1.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.us-west-2.amazonaws.com"}, "bucket"),
            ("/", {"host": "bucket.s3.localhost.localstack.cloud"}, "bucket"),
            (
                "/",
                {"host": "bucket-1.s3-website.localhost.localstack.cloud"},
                "bucket-1",
            ),
            (
                "/",
                {"host": "bucket.localhost.localstack.cloud"},
                "bucket",
            ),  # internally agreed upon special case
            ("/", {"host": "localhost.localstack.cloud"}, None),
            ("/", {"host": "test.dynamodb.amazonaws.com"}, None),
            ("/", {"host": "dynamodb.amazonaws.com"}, None),
        ]

        for path, headers, expected_result in bucket_names:
            self.assertEqual(expected_result, s3_utils.extract_bucket_name(headers, path), headers)