如何在golang中从AWS S3获取资源URL

2024-01-04

我需要使用 golang 获取资源的公共永久(未签名)URL官方AWS Go SDK https://github.com/aws/aws-sdk-go。在Java AWS S3 SDK中有一个方法称为getResourceUrl() http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3Client.html#getResourceUrl-java.lang.String-java.lang.String-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
}

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

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

Where <region>是这样的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 http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region是 S3 的所有可用区域的列表。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在golang中从AWS S3获取资源URL 的相关文章

  • 如何在GO中执行HEAD请求?

    我想使用 GO net http 获取页面的内容长度 我可以在终端中使用curl i X HEAD https golang org然后检查内容长度字段 use http Head https golang org pkg net http
  • 在 golang 中将 []uint32 转换为 []byte,反之亦然

    最有效的 性能 转换方式是什么 uint32向和从 byte在戈兰 例如 func main source uint32 1 2 3 dest make byte 4 len source source to dest check len
  • 如何在Google AppEngine上设置环境变量?

    我正在尝试在谷歌应用程序引擎上设置和使用环境变量 我的 app yaml 文件如下所示 但是 当我使用 os Getenv mytoken 时 我得到一个空字符串 而不是我设置的实际值 是GAE的bug吗 api version go1 h
  • 内存高效的大型数据集流式传输到 S3

    我正在尝试使用 SQL alchemy 复制 S3 大型数据集 大于 RAM 我的限制是 我需要使用 sqlalchemy 我需要将内存压力保持在最低水平 我不想使用本地 filsystem 作为中间步骤将数据发送到 s3 我只想通过管道将
  • Golang http 写入响应,无需等待完成

    我正在构建一个应用程序 该应用程序构建 pdf 文件并在收到请求时将其返回给客户端 由于其中一些 pdf 文件可能需要一些时间才能生成 我想在客户端运行时定期将某种状态更新发送回客户端 当完成 pdf 文件的构建后 它也应该返回给客户 类似
  • for_each 值取决于资源属性,这些属性在应用之前无法确定,因此 Terraform 无法预测将创建多少个实例

    我正在尝试使用模块概念创建 53 号路线 但低于错误 for each 值取决于资源属性 这些属性在应用之前无法确定 因此 Terraform 无法预测将创建多少个实例 for each var create route53 local r
  • 在 Go 中解析多个 JSON 对象

    可以使用以下方法轻松解析如下对象encoding json包裹 something foo something else bar 我面临的问题是当服务器返回多个字典时 如下所示 something foo something else ba
  • s3-select 查询字段名数据

    我正在尝试从 s3 select 中的 json 数据查询数据 person Id 1 Name Anshu Address Templestowe Car Jeep Id 2 Name Ben Mostafa Address Las Ve
  • 如何从 S3 中的 zip 存档中提取文件

    我在 S3 的某个位置上传了一个 zip 存档 例如 foo bar zip 我想提取 bar zip 中的值并将其放在 foo 下 而不下载或重新上传提取的文件 我怎样才能做到这一点 以便 S3 被视为非常像文件系统 S3 的设计初衷并不
  • 在 OSX 上交叉编译 Go?

    我正在尝试在 OSX 上交叉编译 go 应用程序以构建适用于 Windows 和 Linux 的二进制文件 我已经阅读了网上能找到的所有内容 我发现的最接近的例子已经发布在 除了疯狂邮件列表上许多未完成的讨论之外 http solovyov
  • 无法在 Golang 中导入本地模块

    我正在尝试导入本地模块 但无法使用以下命令导入它go mod 我最初使用以下方式构建了我的项目go mod init github com AP Ch2 GOMS 注意我的环境是go1 14我使用 VSCode 作为我的编辑器 这是我的文件
  • 如何从 golang fyne 容器中删除对象

    我正在开发 GUI 应用程序 需要动态添加和删除 gui 元素 我想知道是否有办法从 golang fyne 容器中删除元素 在下面的示例代码中 我创建了容器并动态添加元素 现在我希望能够删除这些元素而不是隐藏它们 我尝试的一个 解决方案
  • 可以在 lambda 中订阅 aws IOT 主题吗?

    新手问题 找不到以前的答案 我想用 Alexa 构建一个简单的泵控制器 希望 Alexa 报告泵状态 最简单的方法是 Alexa gt lambda gt publish to Iot 然后 或者可能在发布之前 订阅另一个主题 本地控制器将
  • 命名和未命名类型

    问题 我最近开始阅读Golang规格手册 https golang org ref spec并陷入试图理解的困境有名和无名类型在相关部分 https golang org ref spec Types 我来自动态语言 这让我有点头疼 手册指
  • 词法错误:在字符串中,“\”出现在可能不存在的字符之前[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我正在使用 Amazon SDK 将文档上传到 CloudSearch 该文档被格式化为 JSON 当我尝试上传数据时 出现以下错
  • GO中的优先级队列

    谁能向我解释一下 我想在GO中实现一个优先级队列 接口实现来自link https golang org pkg container heap example priorityQueue 但优先级最低 我的代码 pq make Priori
  • Terraform 不更新 AWS 金丝雀代码

    我正在更改 AWS 金丝雀代码 运行后terraform apply 我在新的 zip 文件中看到了更新 但在 AWS 控制台中代码是旧的 我做错了什么 我的地形代码 resource aws synthetics canary canar
  • AWS S3 生成签名 URL“AccessDenied”

    我正在使用 NodeJs 将文件上传到 AWS S3 我希望客户端能够安全地下载文件 因此 我尝试生成签名 URL 该 URL 在使用一次后就会过期 我的代码如下所示 上传中 const s3bucket new AWS S3 access
  • 当方括号(“[”,“]”)位于路径中时,AWS API 网关返回 400 错误

    我使用 Lambda Integration 设置 API 网关并遇到了这个问题 OK case 请求URI https api gateway host stage hoge hoge 不是配置的路径 因此返回 正常 缺少身份验证令牌 h
  • api网关CORS设置

    我正在尝试在部署脚本中使用 aws cli 从命令行设置 aws CORS 我使用以下 perl to shell 命令创建了 POST 资源 我正在尝试将集成响应设置为 就像启用核心一样 aws apigateway put method

随机推荐