Nei*_*ale 2 amazon-s3 go amazon-web-services
这是我当前的代码:
import (
"time"
"reflect"
"io/ioutil"
"fmt"
"os"
"github.com/golang/protobuf/proto"
"github.com/aws/aws-sdk-go/service/s3"
"github.com/aws/aws-sdk-go/service/s3/s3manager"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/aws/credentials"
)
f, err := os.Create(filename)
if err != nil {
panic(fmt.Errorf("failed to create file %q, %v", filename, err))
}
_, err = db.Downloader.Download(f, &s3.GetObjectInput{
Bucket: aws.String("bucketName"),
Key: aws.String("myKeyThatMightExist"),
})
if err != nil { // key doesn't exist
os.Remove(filename)
return nil
} else {
file, err = ioutil.ReadFile(filename)
}
Run Code Online (Sandbox Code Playgroud)
我需要file
成为从 S3 拉下来的字符串。我存储的本地文件是 S3 上内容的缓存。
这意味着当我尝试下拉数据时,我需要为该数据创建一个文件。由于我正在使用的数据库,我实际上不知道我正在访问的密钥是否存在。我想知道这些解决方案中的任何一个是否可行:1)创建某种类型的缓冲区对象,将整个文件加载到 RAM 中,而不实际保存它。2) 检查文件是否存在于 S3 上,不创建本地文件。如果文件存在,这将让我拉下文件,而如果我在 S3 上不存在,则不会创建空文件。
抱歉,我无法创建 Playground 链接,因为 go playground 没有本示例所需的库。
buf := aws.NewWriteAtBuffer([]byte{})
downloader.Download(buf, &requestInput)
Run Code Online (Sandbox Code Playgroud)
现在你可以使用 buf.Bytes()
https://docs.aws.amazon.com/sdk-for-go/api/aws/#NewWriteAtBuffer
归档时间: |
|
查看次数: |
2203 次 |
最近记录: |