当前位置: 首页 > news >正文

go操作aws s3

v2

官方推荐版本,需要go版本>=1.20

安装

go get github.com/aws/aws-sdk-go-v2
go get github.com/aws/aws-sdk-go-v2/config
go get github.com/aws/aws-sdk-go-v2/service/s3

必要参数

bucket: 存储桶的名称

Region: 存储桶所在区域,例us-east-1

accessKeyID: 访问存储桶所需的KeyID

secretAccessKey: 访问存储桶所需的AccessKey

如何获取accessKeyIDsecretAccessKey:指南

var (s3Client *s3.Clientbucket   = "yourbucketname"
)func InitS3Client() {accessKeyID := "xxxxx"secretAccessKey := "xxxxx"cfg, err := config.LoadDefaultConfig(context.TODO(),config.WithRegion("us-east-1"),config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider(accessKeyID, secretAccessKey, "")),)if err != nil {log.Fatalf("unable to load SDK config, %v", err)}s3Client = s3.NewFromConfig(cfg)
}func UploadToS3(filePath, fileName, mimeType string) (string, error) {file, err := os.Open(filePath)if err != nil {return "", fmt.Errorf("failed to open file %q, %v", filePath, err)}defer file.Close()_, err = s3Client.PutObject(context.TODO(), &s3.PutObjectInput{Bucket:      aws.String(bucket),Key:         aws.String(fileName),Body:        file,ContentType: aws.String(mimeType),})if err != nil {return "", fmt.Errorf("failed to upload file to S3, %v", err)}return fmt.Sprintf("https://%s.s3.amazonaws.com/%s", bucket, fileName), nil
}

若不想升级go1.20,可以使用v1版本

v1

安装

go get github.com/aws/aws-sdk-go
var (s3Client *s3.S3bucket   = "yourbucketname"
)func InitS3Client() {accessKeyID := "xxxxx"secretAccessKey := "xxxxx"sess, err := session.NewSession(&aws.Config{Region:      aws.String("us-east-1"),Credentials: credentials.NewStaticCredentials(accessKeyID, secretAccessKey, ""),})if err != nil {log.Fatalf("unable to create AWS session, %v", err)}s3Client = s3.New(sess)
}func UploadToS3(content []byte, fileName, mimeType string) (string, error) {_, err := s3Client.PutObject(&s3.PutObjectInput{Bucket:      aws.String(bucket),Key:         aws.String(fileName),Body:        bytes.NewReader(content),ContentType: aws.String(mimeType),})if err != nil {return "", fmt.Errorf("failed to upload file to S3, %v", err)}return fmt.Sprintf("https://%s.s3.amazonaws.com/%s", bucket, fileName), nil
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • RemakePython
  • 24年第三届钉钉杯大学生大数据挑战赛
  • PySide(PyQt)使用QPropertyAnimation制作动态界面
  • html实现酷炫美观的可视化大屏(十种风格示例,附源码)
  • 【JS】前端文件读取FileReader操作总结
  • 写代码对人的影响
  • Linux(虚拟机)的介绍
  • vue2 vue3 props 的处理机制
  • 如何利用AI工具获取所有Excel公式?
  • 视频隐写术
  • docker -v 到底和那个一样?type=volume还是type=bind的解释
  • Java环境变量配置详解:从安装到调试
  • 【Vulnhub系列】Vulnhub_Seattle_003靶场渗透(原创)
  • C语言经典习题24
  • Linux进程信号详解【下】
  • FastReport在线报表设计器工作原理
  • gf框架之分页模块(五) - 自定义分页
  • Java IO学习笔记一
  • jquery ajax学习笔记
  • JS笔记四:作用域、变量(函数)提升
  • leetcode46 Permutation 排列组合
  • XForms - 更强大的Form
  • 初探 Vue 生命周期和钩子函数
  • 技术胖1-4季视频复习— (看视频笔记)
  • 使用docker-compose进行多节点部署
  • kubernetes资源对象--ingress
  • ​业务双活的数据切换思路设计(下)
  • ![CDATA[ ]] 是什么东东
  • #{} 和 ${}区别
  • #define用法
  • #进阶:轻量级ORM框架Dapper的使用教程与原理详解
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • (02)Unity使用在线AI大模型(调用Python)
  • (1)Android开发优化---------UI优化
  • (Java数据结构)ArrayList
  • (八)Spring源码解析:Spring MVC
  • (论文阅读11/100)Fast R-CNN
  • (七)glDrawArry绘制
  • (一)Linux+Windows下安装ffmpeg
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)c++ std::pair 与 std::make
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (转载)OpenStack Hacker养成指南
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .env.development、.env.production、.env.staging
  • .NET : 在VS2008中计算代码度量值
  • .NET Core引入性能分析引导优化
  • .NET 中 GetProcess 相关方法的性能
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .net中的Queue和Stack
  • ?php echo ?,?php echo Hello world!;?
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [17]JAVAEE-HTTP协议
  • [20171106]配置客户端连接注意.txt