# Introduction to Amazon Simple Storage Service (S3) - 任务需求:本实验通过 AWS Management Console 向您介绍 Amazon S3 的基本功能。 ## 目标 在本实验结束时,您将能够: - 1.在 Amazon S3 中创建存储桶 - 2.向存储桶添加对象 - 3.管理对象的访问权限 - 4.创建存储桶策略 - 5.使用存储桶版本控制 ## 相关技术知识背景 ### Amazon S3 Amazon Simple Storage Service (Amazon S3) 是一种对象存储服务,实现了行业领先的可扩展性、数据可用性、安全性和性能。这意味着各种规模和行业的客户都可以针对各种使用案例(如网站、移动应用程序、备份与还原、归档、企业应用程序、物联网 (IoT) 设备和大数据分析),使用该服务来存储和保护任意数量的数据。Amazon S3 提供了易于使用的管理功能,因此您可以组织数据并配置精细的访问控制,从而满足特定的业务、组织和合规性要求。Amazon S3 达到了 99.999999999%(11 个 9)的持久性,可以为全球各地的公司存储数百万个应用程序的数据。 ### EC2 ## 任务 1:创建存储桶 - 在本任务中,您将创建一个存储桶来存储 EC2 报告数据,然后检查不同的存储桶配置选项。 - 在 AWS Management Console 左上角的 Services (服务)菜单上,选择 S3。您还可以在 Services(服务)菜单顶部搜索 S3。 - 选择 Create bucket(创建存储桶) 存储桶名称的长度必须介于 3 到 63 个字符之间,并且只能包含小写字母、数字或连字符。存储桶名称在所有 Amazon S3 中必须是全局唯一的,无论处于哪个账户或区域中均是如此,并且在创建存储桶后不能更改。在您输入存储桶名称时,将会出现一个帮助框,显示任何违反命名规则的情况。 - 在 General configuration(常规配置)部分下,将您的存储桶命名为:reportbucket(NUMBER) 将存储桶名称中的 NUMBER 替换为一个随机数字。这样您便会得到一个唯一名称。 示例存储桶名称 – reportbucket987987 - 在 Object Ownership(对象所有权)部分中,进行以下配置: ACLs enabled(启用 ACL) Object Writer(对象写入器) - 对于 Region(区域),保留默认值。 - 滚动到底部,然后选择 Create bucket(创建存储桶) ## 任务 2:向存储桶上传对象 - 在本任务中,您将测试向 reportbucket 上传对象的过程。您有一张每日报告的屏幕截图,想要将该图像上传到 S3 存储桶。 - 右键单击此链接[new-report.png](https://us-west-2-tcprod.s3.us-west-2.amazonaws.com/courses/SPL-TF-100-STESS3/v2.4.11.prod-3266afb4/images/new-report.png),选择 Save link as(将链接另存为),然后将文件保存在本地。 - 在 S3 Management Console 中,找到并选择以名称 reportbucket 开头的存储桶。 - 选择 Upload(上传) 这将启动上传向导。使用此向导可以上传文件,既可以从文件选择器选择文件,也可以将文件拖至 S3 窗口。 - 选择 Add files(添加文件) - 找到并选择您之前下载的 new-report.png 文件。 - 向下滚动并选择 Upload(上传) 当出现 Upload succeeded(上传成功)绿色提示框时,则表示您的文件成功上传 如果文件未在上传后的几秒内显示在存储桶中,您可能需要选择右上角的刷新按钮。 - 在 Upload: status(上传:状态)部分中,选择 Close(关闭)。 ## 任务 3:将对象公开 - 在本任务中,您将配置存储桶和对象的权限以测试可访问性。 - 首先,您要访问对象,以确认其默认为私密对象。 1.在 reportbucket 的 Overview(概览)页面中,选择 Objects(对象)选项卡,找到 new-report.png 对象,然后选择 new-report.png 文件名。 2.在 Object overview(对象概览)部分中,找到并复制 Object URL(对象 URL)链接。 该链接应类似如下:https://reportbucket987987.s3-us-west-2.amazonaws.com/new-report.png 3.打开一个新的浏览器标签页,将该链接粘贴到地址字段,然后按下 Enter 键。 此时您将收到 Access Denied(访问被拒)错误消息。这是因为 Amazon S3 中的对象默认为私密对象。 - 现在,您已确认 S3 的默认安全设置为私密,接下来要测试如何使对象可公开访问。 - 将显示 Access Denied(访问被拒)错误消息的浏览器保持为打开状态,然后通过 S3 Management Console 返回该 Web 浏览器标签页。 - 您应该仍在 new-report.png 的 Object overview(对象概览)标签页上。 - 选择 Object actions(对象操作)按钮和 Make public via ACL(通过 ACL 公开),这是列表中的最后一个项目。 请注意以下警告:Public access is blocked because Block Public Access settings are turned on for this bucket.(由于为此存储桶打开了 “阻止公开访问” 设置,因此公开访问已被阻止。)之所以显示此错误消息,是因为此存储桶已被配置为不允许公开访问。存储桶设置会覆盖应用到各个对象的任何权限。如果您希望对象对一般公众可见,则需关闭 “阻止公开访问 (BPA)”。 - 选择 Make public(公开),并阅读窗口顶部的警告,该警告再次表示 “未能编辑公开访问设置”,这是由于启用了 BPA。 - 选择 Close(关闭)以返回 Object overview(对象概览)标签页。 - 使用顶部的导航栏返回 reportbucket 的主 Overview(概览)页面。 - 选择 Permissions(权限)选项卡。 - 在 Block public access (bucket settings)(阻止公开访问(存储桶设置))下,选择 Edit(编辑)以更改设置。 - 取消选中 Block all public access(阻止所有公开访问)选项,然后将所有其他选项保留为未选中状态。 请注意,各个选项均保持未选中状态。取消选中所有公开访问选项时,您随后必须根据您的情况和安全目标选择各个选项。ACL 和存储桶策略稍后在本实验中将会用到,因此在本任务中均将保持未选中状态。在生产环境中,建议尽可能设置最低允许权限。 - 选择 Save Changes(保存更改) - 此时将打开一个对话框,要求您确认更改。在字段中键入 confirm,然后选择 Confirm(确认) 此时窗口顶部将出现 Successfully edited bucket settings for Block Public Access(已成功编辑 “阻止公开访问” 存储桶设置)消息。 - 选择 Objects(对象)选项卡。 - 选择 new-report.png 文件名。 - 在 new-report.png 的 Overview(概览)页面上,选择 Object actions(对象操作)按钮,然后选择 Make public via ACL(通过 ACL 公开)。 请注意以下警告:When public read access is enabled and not blocked by Block Public Access settings, anyone in the world can access the specified objects.(当 “公开读取访问” 处于启用状态且未被 “阻止公开访问” 设置阻止时,所有人都能访问指定的对象。)这是为了提醒您,如果您将对象公开,则所有人都能读取该对象。 - 选择 Make public(公开),您应该会在窗口顶部看到绿色横幅 Successfully edited public access(已成功编辑公开访问设置)。 - 选择 Close(关闭)以返回 Object overview(对象概览)标签页。 - 返回针对 new-report.png 显示 Access Denied(访问被拒)的其他浏览器标签页,然后刷新该页面。 ![alt text](figures/new-report.png) new-report.png 现已正常显示,因为可以公开访问。 - 关闭显示 new-report.png 图像的 Web 浏览器标签页,然后通过 Amazon S3 Management Console 返回该标签页。 ## 任务 4:测试来自 EC2 实例的连接 - 在本任务中,您将连接到 Amazon Elastic Compute Cloud (Amazon EC2) 实例以测试 S3 reportbucket 的连接性和安全性。 - 在 Services (服务)菜单上,选择 EC2。 - 在 EC2 控制面板上的 Resources(资源)部分下,选择 Instances (running)(实例(正在运行))。 - 选择Bastion Host,然后选择 Connect(连接) - 在 Connect to instance(连接到实例)窗口中: 对于连接方法,请选择 Session Manager。 通过 Session Manager,您可以连接到Bastion Host实例,而无需在防火墙或 Amazon Virtual Private Cloud (Amazon VPC) 安全组上打开特定端口。 - 选择 Connect(连接) - 在Bastion Host会话中,输入以下命令以更改为主目录 (/home/ssm-user/):`cd ~` - 输入以下命令以验证您是否位于主目录中:`pwd` - 输出应如下:`/home/ssm-user` - 输入以下命令以列出所有 S3 存储桶。`aws s3 ls` - 输出应类似如下: ``` 2020-11-11 22:27:28 ql-cf-templates-1603924046-5d95cf473a39fe4e-us-west-2 2020-11-11 22:27:49 qltrail-lab-59350-1603924067 2020-11-11 22:34:46 reportbucket987987 ``` 您将看到您创建的 reportbucket 以及实验自动生成的存储桶。 注意:在创建实验环境的过程中,实例配置文件(定义您进行身份验证的对象)和角色(定义您在身份验证后可以执行的操作)均已自动添加到 EC2 实例中,以允许 EC2 实例列出 S3 存储桶和对象。 - 输入以下命令以列出 reportbucket 中的所有对象。记住要更改 reportbucket 名称末尾的数字,以匹配您创建的存储桶的名称。 ``` aws s3 ls s3://reportbucket(NUMBER) ``` 该命令类似如下:aws s3 ls s3://reportbucket987987 - 输出应类似如下: ``` 2020-11-11 15:46:34 86065 new-report.png ``` 目前您的存储桶中只有一个名为 new-report.png 的对象 - 键入以下命令以将目录更改为报告目录: `cd reports` 输出将向您返回命令提示符。 - 键入以下命令以列出目录的内容:`ls` 输出将显示在报告目录中创建的用于测试应用程序的一些文件。 ``` dolphins.jpg files.zip report-test.txt report-test1.txt report-test2.txt report-test3.txt whale.jpg ``` - 键入以下命令以查看您能否将文件复制到 S3 存储桶。 ``` aws s3 cp report-test1.txt s3://reportbucket(NUMBER) ``` 该命令类似如下:aws s3 cp report-test1.txt s3://reportbucket987987 输出将显示表明上传失败的错误消息。这是因为我们对存储桶拥有只读权限,而没有执行 PutObject 操作的权限。 - 将此窗口保持为打开状态,然后返回 AWS Console 标签页。 ## 任务 5:创建存储桶策略 - 在本任务中,您将使用 AWS 策略生成器创建存储桶策略,以启用从 EC2 实例到存储桶的读取和写入访问权限,从而确保您的报告应用程序可以成功地写入 S3。 - 右键单此链接[`sample-file.txt`](https://us-west-2-tcprod.s3.us-west-2.amazonaws.com/courses/SPL-TF-100-STESS3/v2.4.11.prod-3266afb4/images/v1/sample-file.txt),选择 Save link as(将链接另存为),然后将文件保存在本地。 - 返回 AWS Management Console,转至 Services (服务)菜单,然后选择 S3。 - 在 S3 Management Console 标签页中,选择存储桶的名称。 - 选择 Upload(上传),然后使用与上一个任务相同的上传过程来上传 sample-file.txt。 - 选择 sample-file.txt 文件名。此时将打开 sample-file.txt 的 Overview(概览)页面。 - 在 Object overview(对象概览)部分下,找到并复制 Object URL(对象 URL)链接。 - 在新的浏览器标签页中,将该链接粘贴到地址字段,然后按下 Enter 键。 同样,此时将显示 Access Denied(访问被拒)。您需要配置存储桶策略,以便授予对存储桶中所有对象的访问权限,而不必针对每个对象单独指定权限。 - 将此浏览器标签页保持为打开状态,但要通过 S3 Management Console 返回该标签页。 - 转至 Services > IAM > Roles(服务 > IAM > 角色)。 - 在 Search(搜索)字段中,键入 EC2InstanceProfileRole。这是 EC2 实例用来连接 S3 的角色。 - 选择 EC2InstanceProfileRole。在 Summary(摘要)页面上,将 Role ARN(角色 ARN)复制到文本文件中,以便在后续步骤中使用。 它应类似如下:arn:aws:iam::596123517671:role/EC2InstanceProfileRole - 依次选择 Services (服务)和 S3,然后返回 S3 Management Console。 - 选择 reportbucket。 您应该会看到您上传的两个对象。如果没有看到,请导航回存储桶查看已上传的对象列表。 - 选择 Permissions(权限)选项卡。 - 在 Permissions(权限)选项卡中,滚动到 Bucket Policy(存储桶策略)部分,选择 Edit(编辑) 此时将显示空白的存储桶策略编辑器。您可以手动创建存储桶策略,也可以使用 AWS 策略生成器创建。 Amazon Resource Names (ARN) 用于在整个 AWS 中唯一标识 AWS 资源。ARN 的每个部分都以 “:” 分隔开来,代表路径中指向指定资源的特定部分。这些部分可能稍有不同,具体取决于所引用的服务,但通常遵循以下格式: arn:partition:service:region:account-id:resource Amazon S3 在 ARN 中不需要 region 或 account-id 参数,因此这些部分将留空。但是,仍使用 “:” 将各个部分分隔开来,因此类似如下:arn:aws:s3:::reportbucket987987 - 将存储桶 ARN 复制到文本文件中,以便在后续步骤中使用。 它将显示在 Policy examples(策略示例)和 Policy generator(策略生成器)按钮下方。 它类似如下: ``` Bucket ARN arn:aws:s3:::reportbucket987987 ``` - 选择 Policy generator(策略生成器) 此时将打开一个新的 Web 浏览器标签页,其中包含 AWS 策略生成器。 AWS 策略使用 JSON 格式,用于配置 AWS 服务的精细权限。您可以使用 JSON 手动编写策略,也可以借助 AWS 策略生成器,使用友好的 Web 界面创建策略。 在 AWS Policy Generator(AWS 策略生成器)窗口中: 对于 Select Type of Policy(选择策略类型),选择 S3 Bucket Policy(S3 存储桶策略)。 对于 Effect(效果),选择 Allow(允许)。 对于 Principal(委托人),粘贴您在上一步中复制到文本文件中的 EC2InstanceProfileRole ARN。 对于 AWS Service(AWS 服务),保持 Amazon S3 的默认设置。 对于 Actions(操作),选择 PutObject 和 GetObject 执行 GetObject 操作可以授予从 Amazon S3 检索对象的权限。请参阅本实验末尾的 “其他资源” 部分,获取指向有关可在 Amazon S3 策略中使用的操作的更多信息的链接。 Amazon Resource Name (ARN):粘贴您之前复制的存储桶 ARN。 在该 ARN 的末尾,附加 /* 该 ARN 应类似如下:arn:aws:s3:::reportbucket987987/* Amazon Resource Name (ARN) 是在 AWS 中引用资源的一种标准方法。在本示例中,ARN 指的是您的 S3 存储桶。在存储桶名称的末尾添加 “/” 即表示允许策略应用于存储桶中*的所有对象。 - 选择 Add Statement(添加语句)。您配置的语句的详细信息将添加到按钮下方的表格中。您可以向策略中添加多个语句。 - 选择 Generate Policy(生成策略)。 此时将显示一个新窗口,以 JSON 格式显示生成的策略。它应类似如下: ``` { "Version": "2012-10-17", "Id": "Policy1604361694227", "Statement": [ { "Sid": "Stmt1604361692117", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::416159072693:role/EC2InstanceProfileRole" }, "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::reportbucket987987/*" } ] } ``` 确认 /* 显示在存储桶名称之后,如上述示例中的 Resource(资源)行所示。 - 将您创建的策略复制到剪贴板。 - 关闭 Web 浏览器标签页,然后使用存储桶策略编辑器返回该标签页。 - 将创建的存储桶策略粘贴到存储桶策略编辑器。 - 选择 Save Changes(保存更改) - 返回 AWS Systems Manager (SSM) 窗口。如果您的会话已超时,请使用本实验前面的步骤重新连接到 SSM。 - 键入以下命令以验证您是否位于 /home/ssm-user/reports 目录中。 - `pwd` 输出应如下:`/home/ssm-user/reports` - 输入以下命令以列出 reportbucket 中的所有对象。将 NUMBER 替换为您用来创建存储桶的数字。 - `aws s3 ls s3://reportbucket(NUMBER)` 该命令应类似如下:aws s3 ls s3://reportbucket987987 输出应类似如下: ``` sh-4.2$ aws s3 ls s3://reportbucket987987 2020-11-02 23:20:27 86065 new-report.png 2020-11-02 23:57:03 90 sample-file.txt ``` - 键入以下命令以列出报告目录的内容。`ls` 输出将返回一个文件列表。 - 键入以下命令以尝试将 report-test1.txt 文件复制到 S3 存储桶。 ``` aws s3 cp report-test1.txt s3://reportbucket(NUMBER) ``` 该命令应类似如下:aws s3 cp report-test1.txt s3://reportbucket987987 输出将返回以下内容: ``` upload: ./report-test1.txt to s3://reportbucket987987/report-test1.txt ``` - 键入以下命令以查看文件是否已成功上传到 S3。 ``` aws s3 ls s3://reportbucket(NUMBER) ``` 输出应类似如下: ``` 2020-11-11 18:20:23 86065 new-report.png 2020-11-11 18:32:18 31 report-test1.txt 2020-11-11 18:20:22 90 sample-file.txt ``` 您已将文件从 EC2 实例成功上传 (PutObject) 到您的 S3 存储桶。 - 现在,键入以下命令以将文件从 S3 检索 (GetObject) 到 EC2 实例。 ``` aws s3 cp s3://reportbucket(NUMBER)/sample-file.txt sample-file.txt ``` 输出应类似如下: ``` download: s3://reportbucket987987/sample-file.txt to ./sample-file.txt ``` - 键入以下命令以查看文件现在是否位于 /reports 目录中。`ls` 输出应类似如下: ``` dolphins.jpg files.zip report-test1.txt report-test2.txt report-test3.txt sample-file.txt ``` 您现在将在文件列表中看到 sample-file.txt。恭喜!您已成功将文件从 EC2 上传并检索到 S3 存储桶。 - 返回针对 sample-file.txt 显示 Access Denied(访问被拒)的浏览器标签页,然后刷新该页面。 该页面仍将出现错误消息,因为存储桶策略仅向 EC2InstanceProfileRole 委托人授予了权限。 - 接下来,自行返回策略生成器,然后向存储桶策略中添加另一个允许所有人 (*)、读取访问权限 (GetObject) 的语句。花点时间生成此策略,以允许 EC2InstanceProfileRole 访问存储桶,同时授予所有人通过浏览器读取对象的访问权限。 - 要测试您的策略是否有效,请访问显示 Access Denied(访问被拒)错误消息的浏览器并刷新该浏览器。如果您可以读取文本,那么恭喜您!这说明您的策略成功了。 如果不能,请查看下面的策略以获得帮助。修改后的策略应类似下面列出的策略。请注意,有两个语句,一个包含 EC2InstanceProfileRole,而在另一个语句中,对于所有人,委托人都是 “*”。 如果您难以自行生成策略,您可以复制下面的策略并将其粘贴到存储桶策略编辑器。记住要将下面的策略中的现有 EC2InstanceProfileRole ARN 替换为您在之前的步骤中复制的 EC2InstanceProfileRole ARN。确保 “/*” 显示在存储桶 ARN 的末尾。以文件的最后一行为例。 ``` { "Version": "2012-10-17", "Id": "Policy1604428844058", "Statement": [ { "Sid": "Stmt1604428821481", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::285058481724:role/EC2InstanceProfileRole" }, "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::reportbucket987987/*" }, { "Sid": "Stmt1604428842806", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::reportbucket987987/*" } ] } ``` - 将显示 sample-file.txt 的标签页保持为打开状态。在下一个任务中,您将返回此标签页。 ## 任务 6:探索版本控制 - 在本任务中,您将启用版本控制,并通过上传上一个任务中的 sample-file.txt 文件修改后的版本来测试该功能。 - 您应该位于上一个任务的 S3 存储桶的 Permissions(权限)选项卡中。如果没有,请选择屏幕左上角的存储桶链接,以返回存储桶的 Overview(概览)页面。 - 在 reportbucket 的 Overview(概览)页面上,选择 Properties(属性)选项卡。 - 在 Bucket Versioning(存储桶版本控制)部分下,选择 Edit(编辑) - 选择 Enable(启用),然后选择 Save changes(保存更改) 您可以为整个存储桶和存储桶内的所有对象启用版本控制,但不能为单个对象启用版本控制。 启用版本控制时还需要考虑成本问题。 - 右键单击此链接并使用与上一个任务中的文本文件相同的名称将文本文件保存到您的计算机中:[`sample-file.txt`](https://us-west-2-tcprod.s3.us-west-2.amazonaws.com/courses/SPL-TF-100-STESS3/v2.4.11.prod-3266afb4/images/v2/sample-file.txt)。 虽然此文件的名称与之前的文件相同,但它包含新文本。 - 在 S3 Management Console 中的 reportbucket 上,选择 Objects(对象)选项卡。 在 Objects(对象)部分下,查找 Show versions(显示版本)。 - 选择 Upload(上传),然后使用与上一个任务相同的上传过程来上传新的 sample-file.txt 文件。 - 转至包含 sample-file.txt 文件内容的浏览器标签页。 - 记下页面上的内容,然后刷新该页面。 请注意,此时将出现新的文本行。 如果没有指定版本,则 Amazon S3 始终返回对象的最新版本。 您还可以在 S3 Management Console 中获取可用版本的列表。 - 关闭包含文本文件内容的 Web 浏览器标签页。 - 在 S3 Management Console 中,选择 sample-file.txt 文件名。此时将打开 sample-file.txt 的 Overview(概览)页面。 - 选择 Versions(版本)选项卡,然后选择名为 null 的底部版本(注意:这不是最新版本)。 - 选择 Open(打开)。 通过使用 S3 Management Console,您现在应该能看到文件的原始版本。 但是,如果您尝试使用对象 URL 链接访问旧版本的 sample-file.txt 文件,将会收到访问被拒消息。这很正常,因为您在上一个任务中创建的存储桶策略只授予了访问最新版本对象的权限。要访问之前版本的对象,您需要更新存储桶策略,以包含 “s3:GetObjectVersion” 权限。下面是添加了允许您使用该链接访问旧版本的其他 “s3:GetObjectVersion” 操作的示例存储桶策略。在本示例中,您不需要更新存储桶策略来完成本实验。您可以在完成任务后尝试自行更新存储桶策略。 ``` { "Id": "Policy1557511288767", "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1557511286634", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Effect": "Allow", "Resource": "arn:aws:s3:::mybucket45647467/*", "Principal": "*" } ] } ``` - 返回 AWS Management Console 标签页并在左上角选择存储桶名称链接,以返回存储桶的 Objects(对象)选项卡。 - 找到Show versions(显示版本)选项,并将按钮切换为开启,以显示版本。 现在,您可以查看每个对象的可用版本并确定哪个版本是最新版本。请注意,new-report.png 对象只有一个版本,且版本 ID 为 null。这是因为该对象是在为此存储桶启用版本控制之前上传的。 另请注意,您现在可以选择版本名称链接,以直接在控制台中导航到该对象版本。 - 在 Show versions(显示版本)旁,将按钮切换为关闭,以返回默认的对象视图。 - 选中 sample-file.txt 左侧的复选框。 - 选中对象后,选择 Delete(删除) - 此时将出现 Delete objects(删除对象)窗口。 - 在底部的 Delete objects?(删除对象?)部分中,您必须键入单词 delete 以确认删除对象。键入 delete 并选择 Delete objects(删除对象)按钮。 - 选择 Close(关闭)以返回存储桶的 Overview(概览)页面。 sample-file.txt 对象不再显示在存储桶中。但是,如果您误删了该对象,则可以使用版本控制进行恢复。 - 找到 Show versions(显示版本)选项,并将按钮切换为开启 ,以显示版本。 请注意,sample-file.txt 对象将再次显示,但最新版本是一个删除标记。同时还列出了之前的两个版本。如果已为存储桶启用版本控制,则对象不会立即删除。相反,Amazon S3 会插入删除标记,该标记将成为当前对象版本。对象的之前版本不会被移除。请参阅本实验末尾的“其他资源”部分,获取指向有关版本控制的更多信息的链接。 - 选中具有删除标记的 sample-file.txt 对象版本左侧的复选框。 - 选中对象后,选择 Delete(删除) - 此时将出现 Delete objects(删除对象)窗口。 - 在底部的 Permanently delete objects?(永久删除对象?)部分中,您必须键入单词 permanently delete 以确认删除对象。键入 permanently delete 并选择 Delete objects(删除对象)按钮。 - 选择 Close(关闭)以返回存储桶的 Overview(概览)页面。 - 在 Show versions(显示版本)旁,将按钮切换为关闭 ,以返回默认的对象视图。 请注意,sample-file.txt 对象已还原到存储桶中。移除 “删除标记” 已有效地将对象还原到以前的状态。请参阅本实验末尾的 “其他资源” 部分,获取指向有关取消删除 S3 对象的更多信息的链接。 - 接下来,删除对象的特定版本。 - 要删除对象的特定版本,请找到 Show versions(显示版本)选项,并将按钮切换为开启 ,以显示版本。 您应该会看到 sample-file.txt 对象的两个版本。 - 选中 sample-file.txt 对象最新版本左侧的复选框。 - 选中对象后,选择 Delete(删除)。 - 此时将出现 Delete objects(删除对象)窗口。 - 在底部的 Permanently delete objects?(永久删除对象?)部分中,键入 permanently delete 并选择 Delete objects(删除对象)按钮。 - 选择 Close(关闭)以返回存储桶的 Overview(概览)页面。 请注意,sample-file.txt 文件现在只有一个版本。删除对象的特定版本时,不会创建删除标记。该对象将永久删除。 - 在 Show versions(显示版本)旁,将按钮切换为关闭 ,以返回默认的对象视图。 - 选择 sample-file.txt 文件名。此时将打开 sample-file.txt 的 Overview(概览)页面。 - 复制窗口底部显示的 Object URL(对象 URL)链接。 - 在新的浏览器标签页中,将该链接粘贴到地址字段,然后按下 Enter 键。 此时将显示 sample-file.txt 对象原始版本的文本。 ## 结束实验 - 遵循以下步骤关闭控制台并结束实验 - 返回至 AWS Management Console。 - 在页面的右上角,选择 AWSLabsUser,然后选择 Sign out(退出)。 - 选择 End lab(结束实验),然后确认您要结束实验。