ウェブサイトのホスティングの有効化
バケットを静的ウェブサイトとして設定する場合は、静的ウェブサイトホスティングの有効化、インデックスドキュメントの設定、およびアクセス許可の設定を行う必要があります。
Amazon S3 コンソール、REST API、AWS SDK、AWS CLI、または AWS CloudFormation を使用して、静的ウェブサイトホスティングを有効にすることができます。
カスタムドメインを使用してウェブサイトを設定するには、「チュートリアル: Route 53 に登録されたカスタムドメインを使用した静的ウェブサイトの設定」を参照してください。
静的ウェブサイトホスティングを有効にするには
-
AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。
-
[バケット] リストで、静的ウェブサイトホスティングを有効にするバケットの名前を選択します。
-
[プロパティ] を選択します。
-
[静的ウェブサイトホスティング] で [編集] を選択します。
-
[このバケットを使用してウェブサイトをホストする] を選択します。
-
[静的ウェブサイトホスティング] で [有効化] を選択します。
-
[インデックスドキュメント] に、インデックスドキュメントのファイル名 (通常は index.html
) を入力します。
インデックスドキュメント名の大文字と小文字は区別されます。この名前は、S3 バケットにアップロードする HTML インデックスドキュメントのファイル名と正確に一致する必要があります。バケットをウェブサイトホスティング用に設定するときは、インデックスドキュメントを指定する必要があります。Amazon S3 からこのインデックスドキュメントが返されるのは、ルートドメインまたはサブフォルダに対するリクエストが行われたときです。詳細については、「インデックスドキュメントの設定」を参照してください。
-
4XX クラスエラーに関する独自のカスタムエラードキュメントを指定する場合は、[エラードキュメント] にカスタムエラードキュメントのファイル名を入力します。
エラードキュメント名の大文字と小文字は区別されます。この名前は、S3 バケットにアップロードする HTML エラードキュメントのファイル名と正確に一致する必要があります。カスタムエラードキュメントを指定しない場合、エラーが発生すると、Amazon S3 からデフォルトの HTML エラードキュメントが返されます。詳細については、「カスタムエラードキュメントの設定」を参照してください。
-
(オプション) 高度なリダイレクトツールを指定する場合は、[Rredirection rules] (リダイレクトルール) に、JSON を入力してルールを記述します。
例えば、条件に応じてリクエストのルーティング先を変えることができます。この条件として使用できるのは、リクエストの中の特定のオブジェクトキー名またはプレフィックスです。詳細については、「高度な条件付きリダイレクトを使用するようにリダイレクトルールを設定する」を参照してください。
-
[Save changes] (変更の保存) をクリックします。
Amazon S3 では、バケットの静的ウェブサイトホスティングを有効にします。ページの下部の [静的ウェブサイトホスティング] の下に、バケットのウェブサイトエンドポイントが表示されます。
-
[静的 ウェブサイトホスティング] の下のエンドポイントを書き留めます。
[Endpoint (エンドポイント)] は、バケットの 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# コード例は、指定したバケットにウェブサイト設定を追加しています。この設定で、インデックスドキュメント名とエラードキュメント名の両方を指定します。コード例を設定および実行する方法の詳細については、「AWS SDK for .NET デベロッパーガイド」の「AWS SDK for .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 Ruby API の詳細については、AWS SDK for Ruby - バージョン 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 コマンドリファレンスのウェブサイトを参照してください。
次に、インデックスドキュメントの設定とアクセス許可の設定を行う必要があります。詳細については、「インデックスドキュメントの設定」および「ウェブサイトアクセスのアクセス許可の設定」を参照してください。
オプションとして、エラードキュメント、ウェブトラフィックのログ記録、またはリダイレクトを設定することもできます。