启用网站托管 - Amazon Simple Storage Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

启用网站托管

将存储桶配置为静态网站时,您必须启用静态网站托管、配置索引文档和设置权限。

您可以使用 Amazon S3 控制台、REST API、AWS 软件开发工具包、AWS CLI 或 AWS CloudFormation 来启用静态网站托管。

要使用自定义域配置您的网站,请参阅使用注册到 Route 53 的自定义域配置静态网站

启用静态网站托管

  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 网站终端节点。将存储桶配置为静态网站后,您可以使用此终端节点来测试您的网站。

有关直接发送 REST 请求以启用静态网站托管的更多信息,请参阅《Amazon Simple Storage Service API 参考》中的以下部分:

若要在 Amazon S3 上托管静态网站,需要为网站托管配置 Amazon S3 存储桶,然后将您的网站内容上传到该存储桶。您还可以使用 AWS 开发工具包以编程方式创建、更新和删除网站配置。开发工具包围绕 Amazon S3 REST API 提供封装类。如果应用程序需要它,可以直接从应用程序发送 REST API 请求。

.NET

以下示例说明如何使用适用于 .NET 的 AWS 开发工具包管理存储桶的网站配置。要将网站配置添加到存储桶,请提供存储桶名称和网站配置。网站配置必须包含索引文档,并且可包含可选的错误文档。这些文档必须存储在存储桶中。有关更多信息,请参阅 PUT Bucket 网站。有关 Amazon S3 网站功能的更多信息,请参阅 使用 Amazon S3 托管静态网站

以下 C# 代码示例将网站配置添加到指定的存储桶。该配置指定索引文档和错误文档名称。有关如何创建和测试有效示例的说明,请参阅 运行 Amazon S3 .NET 代码示例

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class WebsiteConfigTest { private const string bucketName = "*** bucket name ***"; private const string indexDocumentSuffix = "*** index object key ***"; // For example, index.html. private const string errorDocument = "*** error object key ***"; // For example, error.html. // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); AddWebsiteConfigurationAsync(bucketName, indexDocumentSuffix, errorDocument).Wait(); } static async Task AddWebsiteConfigurationAsync(string bucketName, string indexDocumentSuffix, string errorDocument) { try { // 1. Put the website configuration. PutBucketWebsiteRequest putRequest = new PutBucketWebsiteRequest() { BucketName = bucketName, WebsiteConfiguration = new WebsiteConfiguration() { IndexDocumentSuffix = indexDocumentSuffix, ErrorDocument = errorDocument } }; PutBucketWebsiteResponse response = await client.PutBucketWebsiteAsync(putRequest); // 2. Get the website configuration. GetBucketWebsiteRequest getRequest = new GetBucketWebsiteRequest() { BucketName = bucketName }; GetBucketWebsiteResponse getResponse = await client.GetBucketWebsiteAsync(getRequest); Console.WriteLine("Index document: {0}", getResponse.WebsiteConfiguration.IndexDocumentSuffix); Console.WriteLine("Error document: {0}", getResponse.WebsiteConfiguration.ErrorDocument); } catch (AmazonS3Exception e) { Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message); } catch (Exception e) { Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message); } } } }
PHP

以下 PHP 示例将网站配置添加到指定的存储桶。create_website_config 方法显式提供索引文档和错误文档名称。该示例还检索网站配置并输出响应。有关 Amazon S3 网站功能的更多信息,请参阅 使用 Amazon S3 托管静态网站

有关创建和测试有效示例的说明,请参阅使用适用于 PHP 的 AWS 开发工具包和运行 PHP 示例

require 'vendor/autoload.php'; use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $s3 = new S3Client([ 'version' => 'latest', 'region' => 'us-east-1' ]); // Add the website configuration. $s3->putBucketWebsite([ 'Bucket' => $bucket, 'WebsiteConfiguration' => [ 'IndexDocument' => ['Suffix' => 'index.html'], 'ErrorDocument' => ['Key' => 'error.html'] ] ]); // Retrieve the website configuration. $result = $s3->getBucketWebsite([ 'Bucket' => $bucket ]); echo $result->getPath('IndexDocument/Suffix'); // Delete the website configuration. $s3->deleteBucketWebsite([ 'Bucket' => $bucket ]);

有关使用 AWS CLI 将 S3 存储桶配置为静态网站的更多信息,请参阅《AWS CLI 命令参考》中的网站

接下来,您必须配置索引文档并设置权限。有关信息,请参阅 配置索引文档设置访问网站的权限

还可以有选择性地配置错误文档Web 流量日志记录重定向