如何使用 golang 检查 s3 对象大小

2023-12-27

我已经实现了一个从 AWS S3 存储桶下载对象的功能。这很好用。但我需要显示下载进度条。为此,我需要根据以下公式事先知道对象的大小here https://github.com/cheggaaa/pb。有谁知道如何获取对象的大小?

这是我的代码。

func DownloadFromS3Bucket(bucket, item, path string) {
    file, err := os.Create(filepath.Join(path, item))
    if err != nil {
        fmt.Printf("Error in downloading from file: %v \n", err)
        os.Exit(1)
    }

    defer file.Close()

    sess, _ := session.NewSession(&aws.Config{
        Region: aws.String(constants.AWS_REGION), Credentials: credentials.AnonymousCredentials},
    )

    // Create a downloader with the session and custom options
    downloader := s3manager.NewDownloader(sess, func(d *s3manager.Downloader) {
        d.PartSize = 64 * 1024 * 1024 // 64MB per part
        d.Concurrency = 6
    })

    numBytes, err := downloader.Download(file,
        &s3.GetObjectInput{
            Bucket: aws.String(bucket),
            Key:    aws.String(item),
        })
    if err != nil {
        fmt.Printf("Error in downloading from file: %v \n", err)
        os.Exit(1)
    }

    fmt.Println("Download completed", file.Name(), numBytes, "bytes")
}

您可以使用头部对象 https://docs.aws.amazon.com/sdk-for-go/api/service/s3/#S3.HeadObject,其中包含header Content-Length https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html#RESTObjectHEAD-responses-examples.

Amazon Simple Storage Service 的 HeadObject API 操作。

HEAD 操作从对象中检索元数据而不返回 物体本身。如果您只感兴趣,此操作很有用 在对象的元数据中。要使用 HEAD,您必须具有 READ 访问权限 目的。

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

如何使用 golang 检查 s3 对象大小 的相关文章

  • 将 Protobuf 消息持久保存到数据库

    保存使用 protobuf3 定义的数据的正确方法是什么 我使用 golang 和 Java 两者都支持 ORM 在 java 中使用 Hibernate 在 golang 中使用 gorm 这两个地方我都需要将生成的代码转换为相应的实体模
  • golang中的Reader接口和Read方法

    我正在关注 golang 之旅 我被要求 实现一个 rot13Reader 它实现 io Reader 并从 io Reader 读取 通过将 ROT13 替换密码应用于所有字母字符来修改流 我首先将方法实现到 rot13Reader ty
  • 从 aws elastic beanstalk 中的 .ebextensions 文件夹运行脚本

    我正在尝试从上传战争时运行脚本 所以这里是配置的内容 container commands 01 setup apache command cp ebextensions enable mod deflate conf etc httpd
  • Airflow 不会将日志写入 s3

    我尝试了不同的方法来配置 Airflow 1 9 以将日志写入 s3 但它只是忽略它 我发现很多人在这样做后阅读日志时遇到问题 但我的问题是日志仍然是本地的 我可以毫无问题地读取它们 但它们不在指定的 s3 存储桶中 我尝试的是首先写入ai
  • AWS Lambda 无法连接到 Parameter Store

    我有一个AWSLambda java 我尝试进行测试以检索存储在 Parameter Store 中的密码 这是我的一段代码 GetParameterRequest parameterRequest new GetParameterRequ
  • AWS SAM:调用 CreateChangeSet 操作时发生错误 (ValidationError):参数:[IdentityNameParameter] 必须具有值

    我想开始使用 AWS SAM 但在尝试部署到 AWS 时遇到了这个问题 我正在尝试部署一个可以找到的 Hello World 应用程序here https github com aws samples serverless app exam
  • 使用 Laravel 从 Amazon S3 下载文件

    我有点确定如何使用 Laravel 4 从 Amazon S3 启动文件下载 我正在使用 AWS result s3 gt getObject array Bucket gt bucket Key gt data txt temp file
  • golang 将 big.Float 转换为 big.Int

    将big Float转换为big Int 我在下面编写代码 但它溢出了uint64 那么将big Float转换为big Int的正确方法是什么 package main import fmt import math big func Fl
  • 使用 Amazon KCL 对记录进行检查点会抛出 ProvisionedThroughputExceededException

    我们正在经历一个ProvisionedThroughputExceededException在对许多事件进行检查点时 异常堆栈跟踪如下 com amazonaws services kinesis model ProvisionedThro
  • AWS SNS 参数电话号码无效

    我正在尝试学习 aws sns 服务从我的网络应用程序发送短信 我正在本地主机上工作 params array credentials gt array key gt iam key secret gt iam secret region
  • Vue 和 Axios + AWS API 网关和 Lambda - CORS + POST 不起作用

    我正在尝试通过 AWS API Gateway 创建一个 API 测试函数 以及一个通过 Axios 的 Vue 应用程序调用的 Lambda 函数 它应该从输入元素发送姓名和电子邮件 每次我收到此错误时 Access to XMLHttp
  • Go中通过反射给struct成员赋值

    我有一个结构 v 其中包含成员 A B C 字符串 使用反射 我可以获得字段的名称及其值 typ v Type for i 0 i lt v NumField i gets us a StructField fi typ Field i f
  • 通过ELB访问AWS EC2实例

    我试图在弹性负载均衡器下设置两个实例 但无法弄清楚应该如何通过负载均衡器访问这些实例 我已经使用安全组设置了实例 以允许从任何地方访问某些端口 我可以使用 公共 DNS publicdns 主机名和端口 PORT 直接访问实例 http p
  • 请求中包含的安全令牌已过期

    我有一个脚本 可以从 Cloudwatch 中提取大量指标以用于我们自己的内部报告 该脚本会迭代特定区域中的所有 EC2 实例 并请求过去 2 周的 5 个 cloudwatch 指标 所有可用的统计数据 每次以 5 分钟为间隔返回 5 天
  • Instagram 如何使用 Amazon S3?

    在将文件上传到 Amazon S3 时 我需要深入了解 Instagram 的工程 我刚刚开始使用 S3 我认为 Instagram 是一个值得效仿的好模式 因为他们每天上传数千张图片 我的应用程序有点相似 用户上传图片 可以删除自己的图片
  • 如何使用 django (python) 和 s3 上传文件?

    我正在寻找一种将文件上传到 s3 的方法 我正在使用 django 我目前正在使用亚马逊的 python 库进行上传以及以下代码 View def submitpicture request fuser request session lo
  • 如何使用 glide golang 安装私有仓库

    我在用glide作为我的 golang 项目的包管理 我无法使用私有存储库glide get bezos gitlab com gomock 即使我提供了正确的凭据 它也会询问用户名和密码 但最终会抛出错误 请提出任何想法 这与glide或
  • aws Lambda 在 S3 上传时使 CloudFront 失效

    我同时上传 10 50 个文件 Lambda 会为每个更新的文件触发一个事件 如果文件大小发生变化 因此 我不想一一失效 50x 而是想运行通配符 上传结束时出现一次字符 任何人都可以阐明如何实现这一目标 谢谢 如果我正确理解你的问题 你的
  • 是否有“S3范围读取功能”允许从AWS-S3文件读取分配的字节范围?

    尝试在 AWS Lamba 中处理大文件并跳过整个文件似乎有点浪费 是否有 范围读取 功能 允许仅从 S3 文件读取预定义的字节范围 是的 这是可能的 根据 S3 文档获取对象 http docs aws amazon com Amazon
  • 有人可以提供一个使用 Amazon Web Services 的 itemsearch 的 C# 示例吗

    我正在尝试使用 Amazon Web Services 查询艺术家和标题信息并接收回专辑封面 使用 C 我找不到任何与此接近的示例 所有在线示例都已过时 并且不适用于 AWS 的较新版本 有一个开源项目CodePlex http www c

随机推荐

  • Ag-grid:在特定的预定义时间内保持打开的工具提示

    我使用的是Ag grid v23 1 1 我需要显示 1 分钟的工具提示 Ag grid不支持这种情况 但在版本 22 的早期我使用过 next lifehack params api context beanWrappers toolti
  • 建议:c++ 中的异步、可移植文件 io

    我正在寻找一个 C 异步 io 库 它应该与 unix 和 windows 系统兼容 有哪些好的图书馆 对于一个同时支持这两个系统的库来说 这要求是否太高了 人们对此事有何经验 Use 增强 asio http www boost org
  • Eclipse Java 错误:无法启动此选择并且最近没有启动

    我在互联网上到处查看并尝试了论坛所说的所有操作 但没有任何效果 这个错误不断出现 我尝试运行我的java项目 不适用于android 即使下拉运行按钮也不起作用 因为它说 不适用 Eclipse 需要查看项目源文件之一中的 main 方法
  • PHP - 保护代码[重复]

    这个问题在这里已经有答案了 可能的重复 如何保护您的软件代码 https stackoverflow com questions 2368064 how to protect your software code 保护我的 PHP 应用程序
  • 正则表达式替换第二次出现的字符

    我有一些以下格式的数据 MM SS 嗯 where MM is minutes ss is seconds and mmm is 3 digit milliseconds like 05 23 236 我试图用点替换第二次出现的冒号 05
  • $this是什么意思

    我见过一些脚本包含 this在具有 OOP 的 PHP 脚本中 我从来不知道它的含义 就像 this gt refresh 也许向我解释一下什么 this指的是 但我确实知道你不能将它用作动态变量 例如 this is a variable
  • 如何像 ps -e 一样显示进程

    Hello 我想制作一个简单的 C 程序 就像 ps i 一样工作 唯一应显示的列是 PID 和 CMD 那是我的代码 include
  • 常见的 SIMD 技术

    在哪里可以找到有关常见 SIMD 技巧的信息 我有一个指令集 并且知道如何编写不复杂的 SIMD 代码 但我知道 SIMD 现在更加强大 它可以容纳复杂的条件无分支代码 例如 ARMv6 以下指令序列将 Rd 的每个字节设置为 Ra 和 R
  • Docker 退出,状态码 139

    我有一个 Net Core 应用程序 它可以在 Docker 映像上运行 我在命令行中输入 docker run d net bridge it name testapp v var test var test microsoft aspn
  • Selenium Webdriver + python - 鼠标悬停后无法隐藏工具提示

    我正在使用 Selenium WebDriver 和 Firefox 在我的网页上测试工具提示 我试图将鼠标悬停在附加工具提示的元素上 测试工具提示是否显示 然后将鼠标悬停在另一个元素上并测试其各自的工具提示 element to clic
  • Angularjs $http 在 GET 上期望 JSON 结果时出现“XML 解析错误:找不到元素位置”错误

    当我提交一个角js httpGET 调用我收到 XML 解析错误 http调用代码片段是 http method GET url myapp api items itemId 错误是 XML Parsing Error no element
  • PySpark:如何根据多个条件附加其他 pyspark 数据帧中的新列?

    我有 pyspark df1 id name email age college 12 Sta email protected cdn cgi l email protection 25 clg1 21 Danny email protec
  • MVC 6 中多个网站的通用 wwwroot 文件夹

    我有多个网站使用 wwwroot assets文件夹 html 主题 css 和 javascript 文件 来加载静态内容 目前我正在复制assets每个站点中的文件夹 我的所有项目都位于一个公共父目录下 我不想复制 wwwroot as
  • 基于 Codeigniter 数据库的配置设置

    我正在使用最新版本的 Codeigniter 2 0 构建一个应用程序 我想你可能会说 我的应用程序是动态的 有点像自定义 CMS 我有一个名为 设置 的数据库表 其中包含以下字段 id name value 基本上我当前正在做的是使用辅助
  • 将 C char[][] 数组封送至 C#

    我已经看了又看并尝试了我能想到的或找到的建议 我仍然没有运气获得我需要的数据 我正在使用第三方 DLL 我相信它是用 C 编写的 我需要用 C 访问此 DLL 中的函数 在大多数情况下 除了一项功能外 我都可以使用此功能 我遇到问题的函数具
  • 防止用户停止进程

    长话短说 我需要创建一个应用程序来监视计算机上的音量 无论如何 计算机用户都不能停止该应用程序 我需要让我的应用程序在计算机启动时启动 这样用户就不能在应用程序不运行的情况下重新启动它来进入会话 到目前为止 我还不知道该怎么做 但通过一些研
  • Netbeans 中 SQLite 的 JDBC:找不到合适的驱动程序

    我需要将 SQLite 文件中的数据加载到我在 Netbeans 中开发的 java 程序中 该文件将通过摆动菜单项加载 我在用着SQLitejdbc https bitbucket org xerial sqlite jdbc downl
  • 如何查看应用程序发布版本的 Flutter 调试控制台输出?

    使用 print 记录消息在调试模式下工作 我可以在 VSCode 的调试控制台或终端中看到输出 我怎样才能获得那些发布版本 我已经看到发布版本生成了此类日志 但不知道如何获取这些日志 Run flutter logs 在 flutter
  • 删除 SQL Server Management Studio 中记住的登录名和密码列表

    我最近在修理我的笔记本电脑时使用了我们公司的备用笔记本电脑 已设置普通用户 登录数据库时 我在 SQL Server Management Studio 中选中了 记住密码 选项 我需要清除我所使用的登录名和密码信息 以防止下一个使用笔记本
  • 如何使用 golang 检查 s3 对象大小

    我已经实现了一个从 AWS S3 存储桶下载对象的功能 这很好用 但我需要显示下载进度条 为此 我需要根据以下公式事先知道对象的大小here https github com cheggaaa pb 有谁知道如何获取对象的大小 这是我的代码