amazon-web-services - 如何在 golang 中从 AWS S3 获取资源 URL

标签 amazon-web-services go amazon-s3 aws-sdk

我需要使用 golang 和 official aws go sdk 获取资源的公共(public)永久(未签名)URL .在 Java AWS S3 SDK 中有一个名为 getResourceUrl() 的方法go 中的等价物是什么?

最佳答案

这是使用 go sdk 获取预签名 URL 的方式:

func GetFileLink(key string) (string, error) {
    svc := s3.New(some params)

    params := &s3.GetObjectInput{
        Bucket: aws.String(a bucket name),
        Key:    aws.String(key),
    }

    req, _ := svc.GetObjectRequest(params)

    url, err := req.Presign(15 * time.Minute) // Set link expiration time
    if err != nil {
        global.Log("[AWS GET LINK]:", params, err)
    }

    return url, err
}

如果您想要的只是公共(public)访问对象的 URL,您可以自己构建 URL:

https://<region>.amazonaws.com/<bucket-name>/<key>

us-east-2 之类的东西在哪里。所以使用 go 它将是这样的:

url := "https://%s.amazonaws.com/%s/%s"
url = fmt.Sprintf(url, "us-east-2", "my-bucket-name", "some-file.txt")

Here是 S3 所有可用区域的列表。

关于amazon-web-services - 如何在 golang 中从 AWS S3 获取资源 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46575011/

相关文章:

amazon-web-services - CIDR block 格式错误。这个 CLI 命令有什么问题?

amazon-web-services - AWS S3 在 getSignedUrl 过期后优雅地处理 403

android - 如何从aws s3下载图片到imageview?

debugging - 远程调试 Gogland 停止

php - Laravel 9 getDriver()、getAdapter() 和 getClient() 方法

javascript - IAM 允许访问一种 dynamoDB 方法,但不能访问另一种使用 JavaScript 的 AWS

java - DynamoDB 乐观锁的正确使用方法

amazon-web-services - 使用 AWS Cognito 和子域进行单点登录

xml - 在 Go 中将 XML 代码写入 XML 文件

go - Golang行情自动收录机并发问题