存储_AWS的S3实践之路(aws 文件存储)
liuian 2025-06-08 22:36 3 浏览
前言
当今的开发基本已经基于云开发了,遥想当年自己也曾扛过交换机、抬过服务器和防火墙。读书人一声长叹,时代变化弹指一挥间。好吧,过去心不可得。
说到云上存储,当属阿里云的OSS和亚马逊的S3。
今天就入个S3的门,揭开它的面纱。
资料:
1、使用 AWS SDK for Java 的 Amazon S3示例
https://docs.aws.amazon.com/zh_cn/sdk-for-java/v1/developer-guide/examples-s3.html
2、适用于 Java 的 AWS 开发工具包
https://aws.amazon.com/cn/sdk-for-java/
3、AWS SDK for Java Documentation Examples
https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/java
实操:
- 下载:https://github.com/awsdocs/aws-doc-sdk-examples.git
- 以java为例,通过api上传图片到S3测试,路径:aws-doc-sdk-examples\java\example_code\s3
- 类:PutObject的执行mian方法,buckent_name和file_path按实际情况填写。
4、main方法报错:Access Denied
解决:
https://aws.amazon.com/cn/premiumsupport/knowledge-center/s3-access-denied-error-kms/
4.1 打开IAM控制台,创建用户
备注:“访问秘钥ID和私有访问秘钥“要记录下来,在SDK访问S3的时候使用。
4.2 main方法依旧报错:Access Denied,何解?
看了一些资料,加bucket的策略,如下:
4.3 增加策略仍然不可以,当一个问题一直没有解决,一定忽视了某些关键问题点,
在sdk的源码中,只有资源上传的功能,但是鉴权的机制在哪?
如何控制用户访问不同的s3资源?
于是乎,查看源代码中哪些类与鉴权有关系,尝试一下App.java,报错:
Exception in thread "main" java.lang.IllegalArgumentException: profile file cannot be null
顺藤摸瓜,stack overflow帮了忙,如下:
https://stackoverflow.com/questions/41796355/aws-error-downloading-object-from-s3-profile-file-cannot-be-null
4.4 Credentials的格式如何定义
官网:
https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html
[default]
aws_access_key_id={YOUR_ACCESS_KEY_ID}
aws_secret_access_key={YOUR_SECRET_ACCESS_KEY}
[profile2]
aws_access_key_id={YOUR_ACCESS_KEY_ID}
aws_secret_access_key={YOUR_SECRET_ACCESS_KEY}
如上格式,创建credentials文件,内容为创建用户的私钥,放在~/.aws/下即可。
5、S3上传的图片通过浏览器访问,报错如下:
5.1 增加桶策略
{
"Version": "2012-10-17",
"Id": "Policy1647532048639",
"Statement": [
{
"Sid": "Stmt1647532038507",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111111111:user/s3-proxy"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::xx-22"
},
{
"Sid": "PublicRead",
"Effect": "Allow",
"Principal": "*",
"Action": ["s3:GetObject"],
"Resource": "arn:aws:s3:::xxxx-22/*"
}
]
}
5.2 编辑“阻止公有访问(存储桶设置)”
重复5.1 步骤,保存成功,重新访问URL即可。
反思:
在鉴权的时候,走了一些弯路,如果先大体把官网的关于sdk-for-java相关的文档看一下,会更顺一些。
参考资料:
官方S3文档:
https://aws.amazon.com/cn/premiumsupport/knowledge-center/s3-access-denied-error-kms/
相关推荐
- 如何使用postman做接口测试(菜鸟级攻略)
-
首先,什么是接口呢?接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好...
- postman教程-15-Runner说明及创建业务流
-
经常我们要把编写好的用例进行回归测试,这时我们就可以通过Runner来选择我们要运行的测试集进行回归。Runner介绍进入Runner有两个入口,第一个就是选择一个集合,点击右三角进入,点击RUN;第...
- Postman 接口测试实战教程:从入门到精通,全网最全项目详解
-
什么是接口?为什么需要接口?因为接口能使我们的实体或者软件内部数据能够被外部进行修改、查询。从而使得内部和外部实现数据交互,所以,需要用到接口。软件接口:右称:API(applicationprog...
- HTTP Cookies知识-查看、发送、获取、返回
-
1简介HTTPCookies是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求里被携带并发送到服务器上。Cookie主要用于以下三个方面:会话状态管理(如用...
- Jmeter和Postman测试工具的区别(postman和jmeter的优缺点)
-
区别一:用例组织方式不同的目录结构与组织方式代表不同工具的测试思想,学习一个测试工具应该首先了解其组织方式。Jmeter的组织方式相对比较扁平,它首先没有WorkSpace(工作空间)的概念,直接是T...
- Postman接口测试之:添加Cookie伪造请求
-
1、获取cookie值登录某网站,通过开发者工具(或者fiddler抓包工具),获取登录成功后的请求头中的cookie值。大家肯定奇怪,明明访问首页的时候就已经生成了cookie值,为什么还登录呢?虽...
- PostMan循环发送请求(postman重复请求)
-
我们在开发中,测试一个或者多个接口时,经常需要循环的去访问这个接口,用来测试接口的性能,使用postman可以做到这一点。不仅能循环测试一个接口,还能同时循环测试多个接口。一PostMan循环发送请求...
- 手把手教你搭建一个文件存储服务器minio,实现文件存储
-
Minio是一个开源的、自托管的对象存储服务器,它提供了类似于云存储服务的功能。你可以使用Minio搭建自己的私有云存储解决方案,或者作为公共存储服务的替代方案。安装官网:https://min.io...
- 存储_AWS的S3实践之路(aws 文件存储)
-
前言当今的开发基本已经基于云开发了,遥想当年自己也曾扛过交换机、抬过服务器和防火墙。读书人一声长叹,时代变化弹指一挥间。好吧,过去心不可得。说到云上存储,当属阿里云的OSS和亚马逊的S3。今天就入个S...
- Java 编程技巧之单元测试用例编写流程
-
温馨提示:本文较长,同学们可收藏后再看:)前言清代杰出思想家章学诚有一句名言:“学必求其心得,业必贵其专精。”意思是:学习上一定要追求心得体会,事业上一定要贵以专注精深。做技术就是这样,一件事如果做...
- 快来试试这款一行代码实现多平台文件存储的工具!
-
大家好,我是Java陈序员。文件上传下载,是我们在开发中经常会遇到的需求!无论是本地存储、还是云存储,我们可以自己封装API来实现功能。今天,给大家介绍一款一行代码实现多平台文件存储的工具,开箱...
- “全”事件触发:阿里云函数计算与事件总线产品完成全面深度集成
-
随着云原生技术的普及和落地,企业在构建业务系统时,往往需要依赖多个云产品和服务,产品互联、系统协同的需求越来越强。事件驱动架构将事件应用于解耦服务之间的触发和交互,能够帮助用户很好实现产品、系统之间...
- 2.2k star,一款业界领先的私有云+在线文档管理系统
-
简介kodbox可道云(原KodExplorer)是业内领先的企业私有云和在线文档管理系统,为个人网站、企业私有云部署、网络存储、在线文档管理、在线办公等提供安全可控,简便易用、可高度定制的私有云产品...
- 再次升级!阿里云Kubernetes日志解决方案
-
背景针对K8S日志采集存在的采集目标多、弹性伸缩难、运维成本大、侵入性高、采集性能低等问题,在18年2月份日志服务和容器服务团队一起发布了阿里云Kubernetes日志解决方案。1分钟内即可完成整个集...
- 基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构(附源码)
-
前言zheng项目不仅仅是一个开发架构,而是努力打造一套从前端模板-基础框架-分布式架构-开源项目-持续集成-自动化部署-系统监测-无缝升级的全方位J2EE企业级开发解...
- 一周热门
-
-
Python实现人事自动打卡,再也不会被批评
-
Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控
-
【验证码逆向专栏】vaptcha 手势验证码逆向分析
-
一个解决支持HTML/CSS/JS网页转PDF(高质量)的终极解决方案
-
再见Swagger UI 国人开源了一款超好用的 API 文档生成框架,真香
-
网页转成pdf文件的经验分享 网页转成pdf文件的经验分享怎么弄
-
C++ std::vector 简介
-
python使用fitz模块提取pdf中的图片
-
《人人译客》如何规划你的移动电商网站(2)
-
Jupyterhub安装教程 jupyter怎么安装包
-
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- table.render (33)
- uniapp textarea (33)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)