二维码
微世推网

扫一扫关注

当前位置: 首页 » 企业商讯 » 汽车行业 » 正文

存储_AWS的S3实践之路你了解多少?

放大字体  缩小字体 发布日期:2022-03-22 19:11:36    作者:李硕    浏览次数:321
导读

前言当今得开发基本已经基于云开发了,遥想当年自己也曾扛过交换机、抬过服务器和防火墙。读书人一声长叹,时代变化弹指一挥间。好吧,过去心不可得。说到云上存储,当属阿里云得OSS和亚马逊得S3。今天就入个S3得门,揭开它得面纱。资料:1、使用 AWS SDK for Java 得 Amazon S3示例docs.aws.amazon/

前言

当今得开发基本已经基于云开发了,遥想当年自己也曾扛过交换机、抬过服务器和防火墙。读书人一声长叹,时代变化弹指一挥间。好吧,过去心不可得。

说到云上存储,当属阿里云得OSS和亚马逊得S3。

今天就入个S3得门,揭开它得面纱。

资料:

1、使用 AWS SDK for Java 得 Amazon S3示例

docs.aws.amazon/zh_cn/sdk-for-java/v1/developer-guide/examples-s3.html

2、适用于 Java 得 AWS 开发工具包

aws.amazon/cn/sdk-for-java/

3、AWS SDK for Java documentation Examples

github/awsdocs/aws-doc-sdk-examples/tree/main/java

实操:

  1. 下载:github/awsdocs/aws-doc-sdk-examples.git
  2. 以java为例,通过api上传支持到S3测试,路径:aws-doc-sdk-examples\java\example_code\s3
  3. 类:PutObject得执行mian方法,buckent_name和file_path按实际情况填写。

4、main方法报错:Access Denied

解决:aws.amazon/cn/premiumsupport/knowledge-center/s3-access-denied-error-kms/

4.1 打开IAM控制台,创建用户

备注:“访问秘钥和私有访问秘钥“要记录下来,在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帮了忙,如下:

stackoverflow/questions/41796355/aws-error-downloading-object-from-s3-profile-file-cannot-be-null

4.4 Credentials得格式如何定义

自己:docs.aws.amazon/sdk-for-java/v1/developer-guide/credentials.html

[default]aws_access_key_id={YOUR_ACCESS_KEY_}aws_secret_access_key={YOUR_SECRET_ACCESS_KEY}[profile2]aws_access_key_id={YOUR_ACCESS_KEY_}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文档:aws.amazon/cn/premiumsupport/knowledge-center/s3-access-denied-error-kms/

 
(文/李硕)
免责声明
• 
本文仅代表发布者:李硕个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,需自行承担相应责任。涉及到版权或其他问题,请及时联系我们删除处理邮件:weilaitui@qq.com。
 

Copyright©2015-2025 粤公网安备 44030702000869号

粤ICP备16078936号

微信

关注
微信

微信二维码

WAP二维码

客服

联系
客服

联系客服:

24在线QQ: 770665880

客服电话: 020-82301567

E_mail邮箱: weilaitui@qq.com

微信公众号: weishitui

韩瑞 小英 张泽

工作时间:

周一至周五: 08:00 - 24:00

反馈

用户
反馈