IPv6 経由で Amazon S3 へのリクエストを行う - Amazon Simple Storage Service

IPv6 経由で Amazon S3 へのリクエストを行う

Amazon Simple Storage Service (Amazon S3) では、IPv4 プロトコルに加えて、Internet Protocol version 6 (IPv6) を使用して S3 バケットにアクセスする機能をサポートしています。Amazon S3 デュアルスタックエンドポイントは、IPv6 および IPv4 を使用した S3 バケットへのリクエストをサポートしています。IPv6 を使用して Amazon S3 にアクセスする場合、追加料金はかかりません。料金に関する詳細については、「Amazon S3 の料金」を参照してください。

IPv6 を使用したリクエストの実行の開始方法

IPv6 を使用して S3 バケットにリクエストを実行するには、デュアルスタックのエンドポイントを使用する必要があります。次のセクションでは、デュアルスタックのエンドポイントを使用した IPv6 でのリクエストの実行方法について説明します。

以下は、IPv6 でバケットにアクセスを試行する前に知っておく必要がある点です。

  • バケットにアクセスするクライアントやネットワークは、IPv6 の使用を有効にする必要があります。

  • 仮想ホスト形式およびパス形式のリクエストは、IPv6 アクセスをサポートしています。詳細については、「Amazon S3 デュアルスタックのエンドポイントを使用する」を参照してください。

  • AWS Identity and Access Management (IAM) ユーザーまたはバケットポリシーで、ソース IP アドレスによるフィルタリングを使用する場合、IPv6 アドレス範囲を含めるようポリシーを更新する必要があります。詳細については、「IAM ポリシーでの IPv6 アドレスの使用」を参照してください。

  • IPv6 を使用する場合、サーバーのアクセスログファイルは IPv6 形式の IP アドレスを出力します。IPv6 形式の Remote IP アドレスを解析できるように、Amazon S3 ログファイルの解析に使用する既存のツール、スクリプト、ソフトウェアを更新する必要があります。詳細については、「Amazon S3 サーバーアクセスログの形式」および「サーバーアクセスログによるリクエストのログ記録」を参照してください。

    注記

    ログファイルで IPv6 アドレスに関連する問題を見つけた場合、AWS Support にお問い合わせください。

デュアルスタックのエンドポイントを使用して IPv6 経由でリクエストを実行する

IPv6 での Amazon S3 API コールを使用したリクエストは、デュアルスタックのエンドポイントを使用して行います。Amazon S3 API オペレーションは、IPv6 経由でも IPv4 経由でも、Amazon S3 へのアクセスは同じように機能します。パフォーマンスも同じです。

REST API を使用する場合、デュアルスタックのエンドポイントに直接アクセスします。詳細については、「デュアルスタックのエンドポイント」を参照してください。

AWS Command Line Interface (AWS CLI) や AWS SDK を使用する場合、パラメータまたはフラグを使ってデュアルスタックのエンドポイントに変更できます。設定ファイルの Amazon S3 エンドポイントに上書きしてデュアルスタックのエンドポイントを直接指定することもできます。

デュアルスタックのエンドポイントを使用して、次のいずれかから IPv6 でバケットにアクセスできます。

IPv6 で使用できない機能

IPv6 を介して S3 バケットにアクセスする場合、S3 バケットからの静的ウェブサイトホスティングの機能は現在サポートされていません。

IAM ポリシーでの IPv6 アドレスの使用

IPv6 を使用してバケットにアクセスを試行する前に、IP アドレスによるフィルタリングに使用される IAM ユーザーまたは S3 バケットポリシーが IPv6 アドレス範囲を含むように更新されているか確認する必要があります。IPv6 アドレスを処理するために更新されていない IP アドレスのフィルタリングポリシーでは、IPv6 の使用を開始する際、間違ってクライアントがバケットへのアクセスを取得または失う場合があります。IAM でのアクセス許可管理の詳細については、「Amazon S3 での Identity and Access Management」を参照してください。

IP アドレスをフィルタリングする IAM ポリシーは、IP アドレス条件演算子を使用します。次のバケットポリシーは、IP アドレス条件演算子を使用して 54.240.143.* の範囲の許可された IPv4 アドレスを識別します。この範囲外のすべての IP アドレスはバケットへのアクセスを拒否されます (examplebucket)。すべての IPv6 アドレスは許可範囲外であるため、このポリシーは IPv6 アドレスの examplebucket へのアクセスをブロックします。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IPAllow", "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::examplebucket/*", "Condition": { "IpAddress": {"aws:SourceIp": "54.240.143.0/24"} } } ] }

次の例のように、バケットポリシーの Condition エレメントを変更して、IPv4 (54.240.143.0/24) および IPv6 (2001:DB8:1234:5678::/64) アドレス範囲の両方を許可できます。例に示すように、IAM ユーザーとバケットポリシーの両方を更新するために同じタイプの Condition ブロックを使用できます。

"Condition": { "IpAddress": { "aws:SourceIp": [ "54.240.143.0/24", "2001:DB8:1234:5678::/64" ] } }

IPv6 を使用する前に、IPv6 アドレス範囲を許可する IP アドレスのフィルタリングに使用するすべての関連 IAM ユーザーとバケットポリシーを更新しなければなりません。既存の IPv4 アドレス範囲に加えて、IAM ポリシーと組織の IPv6 アドレス範囲を更新することをお勧めします。IPv6 および IPv4; でのアクセスを許可するバケットポリシーの例については、「特定の IP アドレスへのアクセスの制限」を参照してください。

IAM ユーザーポリシーは、https://console.aws.amazon.com/iam/ の IAM コンソールを使用して確認できます。IAM の詳細については、IAM ユーザーガイドを参照してください。S3 バケットポリシーの編集の詳細については、「Amazon S3 コンソールを使用したバケットポリシーの追加」を参照してください。

IP アドレス互換性のテスト

Linux/Unix または Mac OS X を使用している場合、次の例に示すように curl コマンドを使用して IPv6 でデュアルスタックのエンドポイントにアクセスできるかどうかテストできます。

curl -v http://s3.dualstack.us-west-2.amazonaws.com/

次の例のような情報を取得できます。IPv6 で接続している場合、接続されている IP アドレスは IPv6 アドレスです。

* About to connect() to s3-us-west-2.amazonaws.com port 80 (#0) * Trying IPv6 address... connected * Connected to s3.dualstack.us-west-2.amazonaws.com (IPv6 address) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.18.1 (x86_64-unknown-linux-gnu) libcurl/7.18.1 OpenSSL/1.0.1t zlib/1.2.3 > Host: s3.dualstack.us-west-2.amazonaws.com

Microsoft Windows 7、または Windows 10 を使用している場合、次の例に示すように ping コマンドを使用して IPv6 または IPv4 でデュアルスタックのエンドポイントにアクセスできるかどうかテストできます。

ping ipv6.s3.dualstack.us-west-2.amazonaws.com