启用网站托管 - Amazon Simple Storage Service

启用网站托管

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

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

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

启用静态网站托管

  1. 登录到 AWS 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. 请选择保存更改

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

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

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

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

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

.NET

以下示例说明如何使用 AWS 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 托管静态网站

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

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

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

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