教程:在 Amazon S3 上配置静态网站 - Amazon Simple Storage Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

欢迎使用新的 Amazon S3 用户指南! Amazon S3 用户指南结合了以下三个已停用的指南中的信息和说明:Amazon S3 开发人员指南Amazon S3 控制台用户指南Amazon S3 入门指南

教程:在 Amazon S3 上配置静态网站

您可以配置 Amazon S3 存储段,使其功能与网站相似。本示例向您演练了在 Amazon S3 上托管网站的步骤。

步骤 1:创建存储桶

以下说明概述了如何创建存储桶以用于网站托管。有关创建存储桶的详细分步说明,请参阅创建存储桶

创建存储桶

  1. 登录 AWS 管理控制台,并通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 选择 Create bucket (创建存储桶)

  3. 输入 Bucket name(存储桶名称)(例如 example.com)。

  4. 选择要在其中创建存储桶的区域。

    选择一个在地理上靠近您的区域可最大程度地减少延迟和成本,或满足法规要求。您选择的区域决定了您的 Amazon S3 网站终端节点。有关更多信息,请参阅 网站终端节点

  5. 要接受默认设置并创建存储桶,请选择 Create (创建)

步骤 2:启用静态网站托管

创建存储桶后,您可以为存储桶启用静态网站托管。您可以创建新存储桶或使用现有存储桶。

启用静态网站托管

  1. 登录 AWS 管理控制台,并通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. Buckets (存储桶) 列表中,选择要为其启用静态网站托管的存储桶的名称。

  3. 选择属性

  4. Static website hosting (静态网站托管) 下,选择 Edit (编辑)

  5. 选择 Use this bucket to host a website (使用此存储桶托管网站)

  6. Static website hosting (静态网站托管) 下,选择 Enable (启用)

  7. Index document (索引文档) 中,输入索引文档的文件名,通常为 index.html

    索引文档名称区分大小写,并且必须与您计划上传到 S3 存储桶的 HTML 索引文档的文件名完全匹配。当您为网站托管配置存储桶时,您必须指定索引文档。当对根域或任何子文件夹发出请求时,Amazon S3 将返回此索引文档。有关更多信息,请参阅 配置索引文档

  8. 要为 4XX 类错误提供您自己的自定义错误文档,请在错误文档中输入自定义错误文档文件名。

    错误文档名称区分大小写,并且必须与您计划上传到 S3 存储桶的 HTML 错误文档的文件名完全匹配。如果未指定自定义错误文档并发生错误,Amazon S3 返回默认 HTML 错误文档。有关更多信息,请参阅 配置自定义错误文档

  9. (可选)如果要指定高级重定向规则,请在 Redirection rules (重定向规则) 中,输入 XML 来描述规则。

    例如,您可以根据请求中的特定对象键名或前缀按条件路由请求。有关更多信息,请参阅 配置高级条件重定向

  10. 选择 Save changes

    Amazon S3 为您的存储桶启用静态网站托管。在页面底部的 Static website hosting (静态网站托管) 下,您可以看到存储桶的网站终端节点。

  11. Static website hosting (静态网站托管) 下,记下 Endpoint (终端节点)

    Endpoint (终端节点) 是存储桶的 Amazon S3 网站终端节点。将存储桶配置为静态网站后,您可以使用此终端节点来测试您的网站。

步骤 3:编辑阻止公有访问设置

默认情况下,Amazon S3 阻止对您的账户和存储桶的公有访问权限。如果要使用存储桶托管静态网站,您可以使用以下步骤编辑您的阻止公有访问设置。

警告

在完成此步骤之前,请查看阻止对您的 Amazon S3 存储的公有访问,以确保您了解并接受允许进行公有访问所涉及的风险。当您关闭阻止公有访问设置以使您的存储桶变为公有时,Internet 上的任何人都可以访问您的存储桶。我们建议您阻止对存储桶的所有公有访问。

  1. 通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 选择已配置为静态网站的存储桶的名称。

  3. 选择 Permissions

  4. Block public access (bucket settings) (阻止公有访问(存储桶设置)) 下,选择 Edit (编辑)

  5. 清除 Block all public access (阻止所有公有访问),然后选择 Save changes (保存更改)

    警告

    在完成此步骤之前,请查看阻止对您的 Amazon S3 存储的公有访问,以确保您了解并接受允许进行公有访问所涉及的风险。当您关闭阻止公有访问设置以使您的存储桶变为公有时,Internet 上的任何人都可以访问您的存储桶。我们建议您阻止对存储桶的所有公有访问。

    Amazon S3 关闭了您的存储桶的阻止公有访问设置。要创建公有静态网站,您可能还必须编辑账户的阻止公有访问设置,然后再添加存储桶策略。如果当前已打开账户的阻止公有访问设置,您将在 Block public access (bucket settings) (阻止公有访问(存储桶设置)) 下看到一条备注。

步骤 4:添加可使您的存储桶内容公开可用的存储桶策略

在编辑 S3 阻止公有访问设置后,您可以添加存储桶策略以授予对存储桶的公有读取访问权限。当您授予公有读取访问权限时,Internet 上的任何人都可以访问您的存储桶。

重要

下面的策略仅供举例说明,仍允许完全访问您存储桶的内容。在继续执行此步骤之前,请查看如何保护 Amazon S3 存储桶中的文件?,以确保您了解保护 S3 存储桶中文件的最佳实践以及授予公有访问权限所涉及的风险。

  1. Buckets (存储桶) 下,选择存储桶的名称。

  2. 选择 Permissions

  3. Bucket Policy (存储桶策略) 下,选择 Edit (编辑)

  4. 要授予对网站的公有读取访问权限,请复制以下存储桶策略,将其粘贴到 Bucket policy editor (存储桶策略编辑器) 中。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::Bucket-Name/*" ] } ] }
  5. Resource 更新为您的存储桶名称。

    在上述示例存储桶策略中,Bucket-Name 是存储桶名称的占位符。要将此存储桶策略用于您自己的存储桶,您必须更新此名称以匹配您的存储桶名称。

  6. 选择保存更改

    此时将显示一条消息,指示存储桶策略已成功添加。

    如果您看到显示 Policy has invalid resource 的错误,请确认存储桶策略中的存储桶名称与您的存储桶名称匹配。有关添加存储桶策略的信息,请参阅如何添加 S3 存储桶策略?

    如果您收到错误消息且无法保存存储桶策略,请检查您的账户和存储桶的阻止公有访问设置以确认您允许对存储桶进行公有访问。

步骤 5:配置索引文档

当您为存储桶启用静态网站托管时,请输入索引文档的名称(例如,index.html)。为存储桶启用静态网站托管后,您可以将具有此索引文档名称的 HTML 文件上传到存储桶。

配置索引文档

  1. 创建 index.html 文件。

    如果您没有 index.html 文件,则可以使用以下 HTML 创建一个:

    <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>My Website Home Page</title> </head> <body> <h1>Welcome to my website</h1> <p>Now hosted on Amazon S3!</p> </body> </html>
  2. 将索引文件保存在本地。

    索引文档文件名必须与您在 Static website hosting (静态网站托管) 对话框中输入的索引文档名称完全匹配。索引文档名称区分大小写。例如,如果在 Static website hosting (静态网站托管) 对话框中为 Index document (索引文档) 名称输入 index.html,则索引文档文件名也必须是 index.html,而不是 Index.html

  3. 登录 AWS 管理控制台,并通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  4. Buckets (存储桶) 列表中,选择要用于托管静态网站的存储桶的名称。

  5. 为您的存储桶启用静态网站托管,并输入索引文档的确切名称(例如 index.html)。有关更多信息,请参阅 启用网站托管

    启用静态网站托管后,继续执行步骤 6。

  6. 要将索引文档上传到存储桶,请执行以下操作之一:

    • 将索引文件拖放到控制台存储桶列表中。

    • 选择 Upload (上传),然后按照提示选择并上传索引文件。

    如需分步指导,请参阅 上传对象

  7. (可选)将其他网站内容上传到您的存储桶。

步骤 6:配置错误文档

当您为存储桶启用静态网站托管时,请输入错误文档的名称(例如,404.html)。为存储桶启用静态网站托管后,您可以将具有此错误文档名称的 HTML 文件上传到存储桶。

要配置错误文档

  1. 创建错误文档,例如 404.html

  2. 将错误文档文件保存在本地。

    错误文档名称区分大小写,必须与启用静态网站托管时输入的名称完全匹配。例如,如果在静态网站托管对话框中为错误文档名称输入 404.html,则错误文档文件名也必须是 404.html

  3. 登录 AWS 管理控制台,并通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  4. Buckets (存储桶) 列表中,选择要用于托管静态网站的存储桶的名称。

  5. 为您的存储桶启用静态网站托管,并输入错误文档的确切名称(例如 404.html)。有关更多信息,请参阅 启用网站托管

    启用静态网站托管后,继续执行步骤 6。

  6. 要将错误文档上传到存储桶,请执行以下操作之一:

    • 将错误文档文件拖放到控制台存储桶列表中。

    • 选择 Upload (上传),然后按照提示选择并上传索引文件。

    如需分步指导,请参阅 上传对象

步骤 7:测试您的网站终端节点

为存储桶配置静态网站托管后,您可以测试您的网站终端节点。

注意

Amazon S3 不支持对该网站进行 HTTPS 访问。如果要使用 HTTPS,则可以使用 Amazon CloudFront 为 Amazon S3 上托管的静态网站提供服务。

有关更多信息,请参阅如何使用 CloudFront 为 Amazon S3 上托管的静态网站提供服务?以及要求在查看器和 CloudFront 之间使用 HTTPS 进行通信

  1. Buckets (存储桶) 下,选择存储桶的名称。

  2. 选择属性

  3. 在页面底部的 Static website hosting (静态网站托管) 下,选择 Bucket website endpoint (存储桶网站终端节点)

    您的索引文档将在单独的浏览器窗口中打开。

现在,您已拥有在 Amazon S3 上托管的网站。该网站在 Amazon S3 网站终端节点上可用。但是,您可能有要用来从已创建的网站提供内容的域 (如 example.com)。您可能还需要使用 Amazon S3 的根域支持来响应对 http://www.example.comhttp://example.com 的请求。此操作需要其他步骤。有关示例,请参阅使用注册到 Route 53 的自定义域配置静态网站

步骤 8:清除

如果您仅出于练习目的创建静态网站,则删除您所分配的 AWS 资源,使其不再产生费用。删除 AWS 资源后,您的网站将不再可用。有关更多信息,请参阅 删除存储桶