系列文章目录第一章AWS账号注册第二章IAM权限操作介绍第三章Amazon EC2介绍与实践第四章Amazon S3介绍与实践本文第五章AWS Lambda介绍与实践第六章AWS Glue介绍与实践第七章AWS数据处理联动Demo实践本系列主要记录个人学习AWS过程中的基础知识、实际操作、遇到的问题以及学习心得。随着后续学习将持续更新系列内容。文章目录系列文章目录前言一、Amazon S3 是什么二、S3 中几个重要的基本概念1.Bucket2.Object3. Object Key4. S3 中的“文件夹”三、创建我的第一个 S3 Bucket1. 进入 S3 Console2. 设置 Bucket Name3. 选择 AWS Region四、Block Public Access 设置五、创建 Bucket六、向 S3 上传第一个文件七、下载 S3 中的文件八、理解 S3 URI九、S3 Storage Class 初步认识十、S3 Versioning十一、S3 权限控制十二、删除测试 Object十三、删除测试 Bucket总结前言在上一篇中我学习并实际操作了 Amazon EC2完成了 EC2 实例创建、安全组配置以及连接测试。这一篇继续学习 AWS 中另一个非常重要、也是实际项目中经常使用的服务Amazon S3Amazon Simple Storage ServiceS3 和 EC2 的用途并不相同・EC2提供计算能力可以理解为云上的服务器・S3提供对象存储能力用于保存文件、图片、日志、数据集、备份等各种数据在我目前接触到的 AWS 数据处理场景中S3 也是非常基础的一环。后续学习Lambda、Glue、Athena 以及数据处理 Demo时都可能继续与 S3 配合使用。因此这一篇先从 S3 的基本概念开始通过实际创建 Bucket、上传文件、创建文件夹、下载和删除对象等操作熟悉 Amazon S3 的基本使用方式。一、Amazon S3 是什么Amazon S3全称Amazon Simple Storage Service它是 AWS 提供的对象存储服务Object Storage。简单来说我们可以把各种数据保存到 S3 中例如・图片・CSV・JSON・日志文件・ZIP 压缩包・文档・备份文件・数据处理过程中产生的输入/输出数据但是需要注意S3 并不能简单地理解成“云上的硬盘”。传统硬盘或 EC2 的 EBS 通常属于块存储Block Storage而 S3 属于对象存储Object Storage。在 S3 中每一个文件都会作为一个Object对象来进行管理。二、S3 中几个重要的基本概念在真正开始操作之前我先整理一下 S3 中几个最基础的概念。1.BucketBucket 可以理解为 S3 中用于保存对象的顶层容器。例如my-aws-study-bucket我们上传到 S3 中的数据都会存放在某个 Bucket 里面。例如my-aws-study-bucket ├── test.txt ├── sample.csv └── images/└── aws.png需要注意Bucket Name 有自己的命名规则而且创建 Bucket 时还需要选择 AWS Region。2.Object实际存储在 S3 中的数据称为Object对象例如上传的【test.txt】这个文件在 S3 中就是一个 Object。一个 S3 Object 不只是文件内容本身还会包含该对象相关的信息例如・Object Key・Metadata・Size・Storage Class 等3. Object KeyObject Key 可以简单理解为对象在 Bucket 中的唯一名称。例如【images/aws.png】就是这个对象的Key。4. S3 中的“文件夹”我们在 S3 Console 中会看到类似data/images/logs/看起来和 Windows、Linux 中的目录非常相似。但是从对象存储的角度来看可以把它理解为使用 Object Key 的前缀形成了类似目录的组织方式。例如data/sample.csv可以理解为Bucket └── data/└── sample.csv这也是为什么学习 S3 时需要逐渐建立 Bucket Object Key 的概念而不只是按照传统文件系统来理解它。三、创建我的第一个 S3 Bucket了解基本概念以后开始实际操作。1. 进入 S3 Console登录 AWS Management Console在搜索框中输入S3选择Amazon S3进入 S3 管理页面。然后点击Create bucket开始创建 Bucket。2. 设置 Bucket Name例如学习环境中可以使用my-aws-study-s3-xxxx我这里会给自己的学习 Bucket 设置一个容易识别的名称。注意S3 的 Bucket Name 有明确的命名规则。如果输入的名称不可用AWS Console 会给出提示。因此实际创建时按照 Console 的提示调整名称即可。3. 选择 AWS Region接下来选择 Bucket 所在的AWS Region这里我建议学习阶段先保持和前面创建 EC2 时使用的 Region 一致这样以后进行EC2 ↓ S3 ↓ Lambda这样的组合实践时也比较容易管理自己的学习资源。四、Block Public Access 设置创建 S3 Bucket 时会看到一个非常重要的设置Block Public Access settings for this bucket也就是阻止公共访问Block Public Access对于当前只是个人 AWS 学习和实验使用的 Bucket我会继续保持Block all public access开启。※如果没有明确的公开访问需求就不应该为了“方便访问”而随意将 S3 Bucket 设置为 Public。五、创建 Bucket其他暂时不需要调整的设置我先保持默认。最后点击Create bucket 完成创建。创建成功之后就可以在 Bucket 列表中看到刚刚创建的 Bucket。至此自己的第一个S3 Bucket就已经创建成功了。六、向 S3 上传第一个文件Bucket 创建完成以后接下来做一个最简单但非常重要的操作上传文件进入刚刚创建的 Bucket。点击Upload然后准备一个本地测试文件把它上传到 S3。当然也可以创建文件夹并上传让存储的文件分类更有层次感。七、下载 S3 中的文件接下来测试一下下载。选择上面上传的test.txt对象文件点击看到下面的详细界面。点击下载安久下载到本地即可。八、理解 S3 URI使用 S3 时经常会看到这种地址s3://my-aws-study-s3-xxxx/data/sample.csv这个就是经常使用的S3 URI可以拆开理解s3://↓ my-aws-study-s3-xxxx ↓ data/sample.csv也就是s3://Bucket名称/Object Key以后使用・AWS CLI・Python boto3・AWS Glue・Amazon Athena・AWS Lambda等服务访问 S3 时经常都会遇到类似的 S3 路径。九、S3 Storage Class 初步认识在 S3 中并不是所有数据都必须采用相同的存储方式。AWS 提供了不同的Storage Class来适应不同的数据访问需求。例如有些数据・经常访问・偶尔访问・长期归档・很长时间才会使用一次这些场景对于存储成本、访问方式等方面的要求是不一样的。对于我现在的入门学习阶段并不需要马上记住每一种 Storage Class 的全部细节。但要意识到S3 不只是“把文件放进去”实际架构设计中还需要考虑数据访问频率、保存周期以及成本。十、S3 VersioningS3 还有一个很有用的功能 Bucket Versioning开启 Versioning 后可以保留同一个 Object 的不同版本。例如sample.csv第一次上传一个版本之后重新上传同名 Object 时可以形成不同版本。这对于・防止误覆盖・数据恢复・数据版本管理等场景非常有价值。不过 Versioning 开启以后也需要注意旧版本对象仍可能带来存储成本。十一、S3 权限控制学习 S3 时还有一个非常重要的话题谁可以访问我的 Bucket 和 Object这就会再次涉及上一篇之前学习过的 IAM。S3 的访问控制可能涉及・IAM User・IAM Role・IAM Policy・Bucket Policy・Block Public Access・Object Ownership 等因此前面学习的 IAM 并不是一个独立章节而是会贯穿后面的 AWS 服务。关系大概是IAM │ └── 控制“谁可以做什么” │ ↓ S3 │ ├── 创建 Bucket ├── 上传 Object ├── 下载 Object └── 删除 Object这让我们对 IAM 的用途也比单独学习的时候更加直观。十二、删除测试 Object测试结束以后我们可以尝试删除刚刚上传的文件。选择测试 Objecttest.txt执行Delete按照 Console 的提示完成删除。※删除测试数据前确认它确实是不再需要的数据。十三、删除测试 Bucket如果这个 Bucket 后面不再继续使用可以在确认测试对象全部处理完成后删除测试 Bucket。不过如果下一篇 Lambda 准备继续用这个 Bucket 做实验也可以先保留它。例如第五篇可以直接使用S3 ↓ 上传文件 ↓ 触发 Lambda ↓ Lambda 处理 Event ↓ 输出日志到 CloudWatch Logs总结通过这次 S3 学习和实际操作我完成了・创建 S3 Bucket・理解 Bucket、Object 和 Object Key・上传测试文件・创建类似目录的对象组织方式・下载 Object・理解 S3 URI・初步认识 Storage Class・初步认识 Versioning・了解 S3 权限控制思路・删除测试 Object学习 S3 之前我们比较容易把它理解为“AWS 上保存文件的地方。”但实际学习以后我觉得更准确的理解应该是S3 是 AWS 中非常基础的对象存储服务同时也是很多数据处理、Serverless 和分析架构中的重要数据存储基础。更重要的是我开始把之前学习的几个 AWS 概念连接起来IAM → 控制访问权限 EC2 → 提供计算能力 S3 → 提供对象存储能力这样学习以后AWS 中不同服务之间的关系也开始逐渐清晰起来。最后附上一张一起学习的小伙伴用AI总结的S3内容供参考。
阅读完成 · 觉得有帮助?