add S3ForcePathStyle support for s3 binding (#1360)
* add S3ForcePathStyle support for s3 binding Signed-off-by: rainfd <rainfd@live.cn> * add S3ForcePathStyle unit test Signed-off-by: rainfd <rainfd@live.cn>
This commit is contained in:
parent
190a47cd87
commit
0f97b52b90
|
@ -42,14 +42,15 @@ type AWSS3 struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type s3Metadata struct {
|
type s3Metadata struct {
|
||||||
Region string `json:"region"`
|
Region string `json:"region"`
|
||||||
Endpoint string `json:"endpoint"`
|
Endpoint string `json:"endpoint"`
|
||||||
AccessKey string `json:"accessKey"`
|
AccessKey string `json:"accessKey"`
|
||||||
SecretKey string `json:"secretKey"`
|
SecretKey string `json:"secretKey"`
|
||||||
SessionToken string `json:"sessionToken"`
|
SessionToken string `json:"sessionToken"`
|
||||||
Bucket string `json:"bucket"`
|
Bucket string `json:"bucket"`
|
||||||
DecodeBase64 bool `json:"decodeBase64,string"`
|
DecodeBase64 bool `json:"decodeBase64,string"`
|
||||||
EncodeBase64 bool `json:"encodeBase64,string"`
|
EncodeBase64 bool `json:"encodeBase64,string"`
|
||||||
|
ForcePathStyle bool `json:"forcePathStyle,string"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type createResponse struct {
|
type createResponse struct {
|
||||||
|
@ -79,10 +80,13 @@ func (s *AWSS3) Init(metadata bindings.Metadata) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cfg := aws.NewConfig().WithS3ForcePathStyle(m.ForcePathStyle)
|
||||||
|
|
||||||
s.metadata = m
|
s.metadata = m
|
||||||
s.s3Client = s3.New(session)
|
s.s3Client = s3.New(session, cfg)
|
||||||
s.downloader = s3manager.NewDownloader(session)
|
s.downloader = s3manager.NewDownloaderWithClient(s.s3Client)
|
||||||
s.uploader = s3manager.NewUploader(session)
|
s.uploader = s3manager.NewUploaderWithClient(s.s3Client)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ func TestParseMetadata(t *testing.T) {
|
||||||
t.Run("Has correct metadata", func(t *testing.T) {
|
t.Run("Has correct metadata", func(t *testing.T) {
|
||||||
m := bindings.Metadata{}
|
m := bindings.Metadata{}
|
||||||
m.Properties = map[string]string{
|
m.Properties = map[string]string{
|
||||||
"AccessKey": "key", "Region": "region", "SecretKey": "secret", "Bucket": "test", "Endpoint": "endpoint", "SessionToken": "token",
|
"AccessKey": "key", "Region": "region", "SecretKey": "secret", "Bucket": "test", "Endpoint": "endpoint", "SessionToken": "token", "ForcePathStyle": "true",
|
||||||
}
|
}
|
||||||
s3 := AWSS3{}
|
s3 := AWSS3{}
|
||||||
meta, err := s3.parseMetadata(m)
|
meta, err := s3.parseMetadata(m)
|
||||||
|
@ -29,6 +29,7 @@ func TestParseMetadata(t *testing.T) {
|
||||||
assert.Equal(t, "test", meta.Bucket)
|
assert.Equal(t, "test", meta.Bucket)
|
||||||
assert.Equal(t, "endpoint", meta.Endpoint)
|
assert.Equal(t, "endpoint", meta.Endpoint)
|
||||||
assert.Equal(t, "token", meta.SessionToken)
|
assert.Equal(t, "token", meta.SessionToken)
|
||||||
|
assert.Equal(t, true, meta.ForcePathStyle)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,7 +37,7 @@ func TestMergeWithRequestMetadata(t *testing.T) {
|
||||||
t.Run("Has merged metadata", func(t *testing.T) {
|
t.Run("Has merged metadata", func(t *testing.T) {
|
||||||
m := bindings.Metadata{}
|
m := bindings.Metadata{}
|
||||||
m.Properties = map[string]string{
|
m.Properties = map[string]string{
|
||||||
"AccessKey": "key", "Region": "region", "SecretKey": "secret", "Bucket": "test", "Endpoint": "endpoint", "SessionToken": "token",
|
"AccessKey": "key", "Region": "region", "SecretKey": "secret", "Bucket": "test", "Endpoint": "endpoint", "SessionToken": "token", "ForcePathStyle": "true",
|
||||||
}
|
}
|
||||||
s3 := AWSS3{}
|
s3 := AWSS3{}
|
||||||
meta, err := s3.parseMetadata(m)
|
meta, err := s3.parseMetadata(m)
|
||||||
|
@ -47,6 +48,7 @@ func TestMergeWithRequestMetadata(t *testing.T) {
|
||||||
assert.Equal(t, "test", meta.Bucket)
|
assert.Equal(t, "test", meta.Bucket)
|
||||||
assert.Equal(t, "endpoint", meta.Endpoint)
|
assert.Equal(t, "endpoint", meta.Endpoint)
|
||||||
assert.Equal(t, "token", meta.SessionToken)
|
assert.Equal(t, "token", meta.SessionToken)
|
||||||
|
assert.Equal(t, true, meta.ForcePathStyle)
|
||||||
|
|
||||||
request := bindings.InvokeRequest{}
|
request := bindings.InvokeRequest{}
|
||||||
request.Metadata = map[string]string{
|
request.Metadata = map[string]string{
|
||||||
|
@ -65,6 +67,7 @@ func TestMergeWithRequestMetadata(t *testing.T) {
|
||||||
assert.Equal(t, "test", mergedMeta.Bucket)
|
assert.Equal(t, "test", mergedMeta.Bucket)
|
||||||
assert.Equal(t, "endpoint", mergedMeta.Endpoint)
|
assert.Equal(t, "endpoint", mergedMeta.Endpoint)
|
||||||
assert.Equal(t, "token", mergedMeta.SessionToken)
|
assert.Equal(t, "token", mergedMeta.SessionToken)
|
||||||
|
assert.Equal(t, true, meta.ForcePathStyle)
|
||||||
assert.Equal(t, true, mergedMeta.DecodeBase64)
|
assert.Equal(t, true, mergedMeta.DecodeBase64)
|
||||||
assert.Equal(t, false, mergedMeta.EncodeBase64)
|
assert.Equal(t, false, mergedMeta.EncodeBase64)
|
||||||
})
|
})
|
||||||
|
@ -72,7 +75,7 @@ func TestMergeWithRequestMetadata(t *testing.T) {
|
||||||
t.Run("Has invalid merged metadata decodeBase64", func(t *testing.T) {
|
t.Run("Has invalid merged metadata decodeBase64", func(t *testing.T) {
|
||||||
m := bindings.Metadata{}
|
m := bindings.Metadata{}
|
||||||
m.Properties = map[string]string{
|
m.Properties = map[string]string{
|
||||||
"AccessKey": "key", "Region": "region", "SecretKey": "secret", "Bucket": "test", "Endpoint": "endpoint", "SessionToken": "token",
|
"AccessKey": "key", "Region": "region", "SecretKey": "secret", "Bucket": "test", "Endpoint": "endpoint", "SessionToken": "token", "ForcePathStyle": "true",
|
||||||
}
|
}
|
||||||
s3 := AWSS3{}
|
s3 := AWSS3{}
|
||||||
meta, err := s3.parseMetadata(m)
|
meta, err := s3.parseMetadata(m)
|
||||||
|
@ -83,6 +86,7 @@ func TestMergeWithRequestMetadata(t *testing.T) {
|
||||||
assert.Equal(t, "test", meta.Bucket)
|
assert.Equal(t, "test", meta.Bucket)
|
||||||
assert.Equal(t, "endpoint", meta.Endpoint)
|
assert.Equal(t, "endpoint", meta.Endpoint)
|
||||||
assert.Equal(t, "token", meta.SessionToken)
|
assert.Equal(t, "token", meta.SessionToken)
|
||||||
|
assert.Equal(t, true, meta.ForcePathStyle)
|
||||||
|
|
||||||
request := bindings.InvokeRequest{}
|
request := bindings.InvokeRequest{}
|
||||||
request.Metadata = map[string]string{
|
request.Metadata = map[string]string{
|
||||||
|
@ -98,7 +102,7 @@ func TestMergeWithRequestMetadata(t *testing.T) {
|
||||||
t.Run("Has invalid merged metadata encodeBase64", func(t *testing.T) {
|
t.Run("Has invalid merged metadata encodeBase64", func(t *testing.T) {
|
||||||
m := bindings.Metadata{}
|
m := bindings.Metadata{}
|
||||||
m.Properties = map[string]string{
|
m.Properties = map[string]string{
|
||||||
"AccessKey": "key", "Region": "region", "SecretKey": "secret", "Bucket": "test", "Endpoint": "endpoint", "SessionToken": "token",
|
"AccessKey": "key", "Region": "region", "SecretKey": "secret", "Bucket": "test", "Endpoint": "endpoint", "SessionToken": "token", "ForcePathStyle": "true",
|
||||||
}
|
}
|
||||||
s3 := AWSS3{}
|
s3 := AWSS3{}
|
||||||
meta, err := s3.parseMetadata(m)
|
meta, err := s3.parseMetadata(m)
|
||||||
|
@ -109,6 +113,7 @@ func TestMergeWithRequestMetadata(t *testing.T) {
|
||||||
assert.Equal(t, "test", meta.Bucket)
|
assert.Equal(t, "test", meta.Bucket)
|
||||||
assert.Equal(t, "endpoint", meta.Endpoint)
|
assert.Equal(t, "endpoint", meta.Endpoint)
|
||||||
assert.Equal(t, "token", meta.SessionToken)
|
assert.Equal(t, "token", meta.SessionToken)
|
||||||
|
assert.Equal(t, true, meta.ForcePathStyle)
|
||||||
|
|
||||||
request := bindings.InvokeRequest{}
|
request := bindings.InvokeRequest{}
|
||||||
request.Metadata = map[string]string{
|
request.Metadata = map[string]string{
|
||||||
|
|
Loading…
Reference in New Issue