add file upload to s3 (#1785)

Signed-off-by: yaron2 <schneider.yaron@live.com>
This commit is contained in:
Yaron Schneider 2022-06-13 11:48:50 -07:00 committed by GitHub
parent d7eb3b7b27
commit 8728f8a4c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 1 deletions

View File

@ -21,6 +21,7 @@ import (
"encoding/json"
"fmt"
"net/http"
"os"
"strconv"
"github.com/aws/aws-sdk-go/aws"
@ -37,6 +38,7 @@ import (
const (
metadataDecodeBase64 = "decodeBase64"
metadataEncodeBase64 = "encodeBase64"
metadataFilePath = "filePath"
metadataKey = "key"
@ -64,6 +66,7 @@ type s3Metadata struct {
ForcePathStyle bool `json:"forcePathStyle,string"`
DisableSSL bool `json:"disableSSL,string"`
InsecureSSL bool `json:"insecureSSL,string"`
FilePath string
}
type createResponse struct {
@ -156,7 +159,17 @@ func (s *AWSS3) create(req *bindings.InvokeRequest) (*bindings.InvokeResponse, e
req.Data = decoded
}
r := bytes.NewReader(req.Data)
var data []byte
if metadata.FilePath != "" {
data, err = os.ReadFile(metadata.FilePath)
if err != nil {
return nil, fmt.Errorf("s3 file read error: %s", err)
}
} else {
data = req.Data
}
r := bytes.NewReader(data)
resultUpload, err := s.uploader.Upload(&s3manager.UploadInput{
Bucket: aws.String(metadata.Bucket),
@ -328,5 +341,9 @@ func (metadata s3Metadata) mergeWithRequestMetadata(req *bindings.InvokeRequest)
merged.EncodeBase64 = valBool
}
if val, ok := req.Metadata[metadataFilePath]; ok && val != "" {
merged.FilePath = val
}
return merged, nil
}

View File

@ -64,6 +64,7 @@ func TestMergeWithRequestMetadata(t *testing.T) {
request.Metadata = map[string]string{
"decodeBase64": "true",
"encodeBase64": "false",
"filePath": "/usr/vader.darth",
}
mergedMeta, err := meta.mergeWithRequestMetadata(&request)
@ -80,6 +81,7 @@ func TestMergeWithRequestMetadata(t *testing.T) {
assert.Equal(t, true, meta.ForcePathStyle)
assert.Equal(t, true, mergedMeta.DecodeBase64)
assert.Equal(t, false, mergedMeta.EncodeBase64)
assert.Equal(t, "/usr/vader.darth", mergedMeta.FilePath)
})
t.Run("Has invalid merged metadata decodeBase64", func(t *testing.T) {