diff --git a/util/pkg/vfs/s3context.go b/util/pkg/vfs/s3context.go index ef139e0fbd..d9a0e91fdb 100644 --- a/util/pkg/vfs/s3context.go +++ b/util/pkg/vfs/s3context.go @@ -42,7 +42,7 @@ var ( // https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region // TODO: perhaps make region regex more specific, i.e. (us|eu|ap|cn|ca|sa), to prevent matching bucket names that match region format? // but that will mean updating this list when AWS introduces new regions - s3UrlRegexp = regexp.MustCompile(`s3([-.](?P\w{2}-\w+-\d{1})|[-.](?P[\w.\-\_]+)|)?.amazonaws.com(.cn)?(?P.*)?`) + s3UrlRegexp = regexp.MustCompile(`(s3([-.](?P\w{2}-\w+-\d{1})|[-.](?P[\w.\-\_]+)|)?|(?P[\w.\-\_]+).s3.(?P\w{2}-\w+-\d{1})).amazonaws.com(.cn)?(?P.*)?`) ) type S3BucketDetails struct { @@ -385,7 +385,9 @@ func VFSPath(url string) (string, error) { captured := map[string]string{} for i, value := range result { - captured[groupNames[i]] = value + if value != "" { + captured[groupNames[i]] = value + } } bucket := captured["bucket"] path := captured["path"] diff --git a/util/pkg/vfs/s3context_test.go b/util/pkg/vfs/s3context_test.go index 3b389549e1..8b112e3aaa 100644 --- a/util/pkg/vfs/s3context_test.go +++ b/util/pkg/vfs/s3context_test.go @@ -79,6 +79,11 @@ func Test_VFSPath(t *testing.T) { ExpectedResult: "s3://bucket", ExpectError: false, }, + { + Input: "https://bucket-name.s3.us-east-1.amazonaws.com/path", + ExpectedResult: "s3://bucket-name/path", + ExpectError: false, + }, { Input: "example.com/bucket", ExpectedResult: "",