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

启用网站托管

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

您可以使用 Amazon S3 控制台、REST API、Amazon SDK、Amazon CLI 或 Amazon CloudFormation 启用静态网站托管。

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

启用静态网站托管
  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

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

  3. 选择属性

  4. 静态网站托管下,请选择编辑

  5. 请选择使用此存储桶托管网站

  6. 静态网站托管下,请选择启用

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

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

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

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

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

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

  10. 选择 Save changes(保存更改)

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

  11. 静态网站托管下,记下端点

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

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

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

.NET

以下示例说明如何使用 Amazon SDK for .NET 管理存储桶的网站配置。要将网站配置添加到存储桶,请提供存储桶名称和网站配置。网站配置必须包含索引文档,并且可包含可选的错误文档。这些文档必须存储在存储桶中。有关更多信息,请参阅 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 托管静态网站

有关创建和测试有效示例的说明,请参阅 使用Amazon SDK for PHP和运行 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 ]);

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

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

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