启用网站托管
将存储桶配置为静态网站时,您必须启用静态网站托管、配置索引文档和设置权限。
您可以使用 Amazon S3 控制台、REST API、AWS SDK、AWS CLI 或 AWS CloudFormation 启用静态网站托管。
要使用自定义域配置您的网站,请参阅 教程:使用注册到 Route 53 的自定义域配置静态网站。
启用静态网站托管
-
登录到 AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/。
-
在存储桶列表中,请选择要为其启用静态网站托管的存储桶的名称。
-
选择属性。
-
在静态网站托管下,请选择编辑。
-
请选择使用此存储桶托管网站。
-
在静态网站托管下,请选择启用。
-
在 Index document (索引文档) 中,输入索引文档的文件名,通常为 index.html
。
索引文档名称区分大小写,并且必须与您计划上传到 S3 存储桶的 HTML 索引文档的文件名完全匹配。当您为网站托管配置存储桶时,您必须指定索引文档。当对根域或任何子文件夹发出请求时,Amazon S3 将返回此索引文档。有关更多信息,请参阅 配置索引文档。
-
要为 4XX 类错误提供您自己的自定义错误文档,请在错误文档中输入自定义错误文档文件名。
错误文档名称区分大小写,并且必须与您计划上传到 S3 存储桶的 HTML 错误文档的文件名完全匹配。如果未指定自定义错误文档并发生错误,Amazon S3 返回默认 HTML 错误文档。有关更多信息,请参阅 配置自定义错误文档。
-
(可选)如果要指定高级重定向规则,请在 Redirection rules(重定向规则)中,输入 JSON 来描述规则。
例如,您可以根据请求中的特定对象键名或前缀按条件路由请求。有关更多信息,请参阅 配置重新导向规则以使用高级条件重新导向。
-
选择 Save changes(保存更改)。
Amazon S3 为您的存储桶启用静态网站托管。在页面底部的静态网站托管下,您可以看到存储桶的网站端点。
-
在静态网站托管下,记下端点。
端点是存储桶的 Amazon S3 网站端点。将存储桶配置为静态网站后,您可以使用此端点来测试您的网站。
有关直接发送 REST 请求以启用静态网站托管的更多信息,请参阅《Amazon Simple Storage Service API 参考》中的以下部分:
若要在 Amazon S3 上托管静态网站,需要为网站托管配置 Amazon S3 存储桶,然后将您的网站内容上传到该存储桶。您还可以使用 AWS SDK 以编程方式创建、更新和删除网站配置。SDK 围绕 Amazon S3 REST API 提供封装类。如果应用程序需要它,可以直接从应用程序发送 REST API 请求。
- .NET
-
以下示例说明如何使用 AWS SDK for .NET 管理存储桶的网站配置。要将网站配置添加到存储桶,请提供存储桶名称和网站配置。网站配置必须包含索引文档,并且可包含可选的错误文档。这些文档必须存储在存储桶中。有关更多信息,请参阅 PUT Bucket 网站。有关 Amazon S3 网站功能的更多信息,请参阅 使用 Amazon S3 托管静态网站。
以下 C# 代码示例将网站配置添加到指定的存储桶。该配置指定索引文档和错误文档名称。有关设置和运行代码示例的信息,请参阅《适用于 .NET 的 AWS SDK 开发人员指南》中的适用于 .NET 的 AWS SDK 入门。
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 托管静态网站。
有关适用于 Ruby 的 AWS 开发工具包 API 的更多信息,请转到适用于 Ruby 的 AWS 开发工具包 – 版本 2。
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 流量日志记录或重定向。