Global outage event
If you're experiencing issues with your AWS services, then please refer to the AWS Health Dashboard. You can find the overall status of ongoing outages, the health of AWS services, and the latest updates from AWS engineers.
CloudFront の署名付き URL または署名付き Cookie に関連する問題をトラブルシューティングする方法を教えてください。
Amazon CloudFront と署名付き URL または署名付き Cookie を使用してプライベートコンテンツを保護しています。403 アクセス拒否エラーが表示されます。
解決策
Amazon CloudFront で署名付き URL または署名付き Cookie に関する問題が発生した場合、403 アクセス拒否エラーが表示される可能性があります。
署名付き URL または署名付き Cookie に正しい署名者が含まれていない
動作の**[ビューワーのアクセスを制限する]**をオンにする場合は、署名者を決定する必要があります。署名者は、CloudFront で作成した信頼されたキーグループ、または CloudFront キーペアを含む AWS アカウントのいずれかです。次の 403 エラーメッセージは、署名者情報がないか、正しくないことを示しています。
エラーには、「Missing Key Pair-ID query parameter or cookie value」(Key-Pair-Id クエリパラメータまたは Cookie 値が見つかりません) というメッセージが含まれます。
このメッセージは、署名付き URL に Key-Pair-Id クエリパラメータがないか空であることを示しています。または、署名付き cookie に CloudFront-Key-Pair-ID クエリ文字列パラメータがないことを示します。
エラーには「Unknown Key」(不明なキー) というメッセージが含まれます。
このメッセージは、CloudFront が Key-Pair-ID (署名付き URL の場合) または CloudFront-Key-Pair-ID (署名付き cookie の場合) を使用して署名者情報を検証できないことを示しています。
この問題を解決するには、署名付き URL に正しい Key-Pair-ID 値が使用されているか、署名付き cookie に CloudFront-Key-Pair-ID が使用されていることを確認します。
署名付き URL を使用する場合は、Key-Pair-ID の値を調べて書き留めてください。
または、
署名付き cookie を使用する場合は、CloudFront-Key-Pair-ID の値を見つけて書き留めておいてください。
次に、Key ID を見つけて、それが Key-Pair-ID または CloudFront-Key-Pair-ID と一致することを確認します。
- CloudFront コンソールを開きます。ナビゲーションメニューで、[Distributions] (ディストリビューション) を選択します。
- ディストリビューションを選択します。次に、[動作] タブを選択します。
- 動作名を選択し、[編集] を選択します。
- [ビューワーのアクセスを制限する] 設定を見つけます。
注:****[はい] に設定されている場合、このキャッシュ動作のパスパターンに一致するファイルへのリクエストには、署名付き URL または署名付き cookie を使用する必要があります。 - [信頼された認証タイプ] フィールドを確認してください。
- [信頼された認証タイプ] の値設定が [信頼されたキーグループ] である場合は、信頼キーグループの名前を書き留めます。信頼キーグループのパブリックキー ID を検索してください。
CloudFront コンソールを開きます。
[キーグループ] を選択します。書き留めた信頼されたキーグループの名前を選択します。
Key-Pair-Id または CloudFront-Key-Pair-Id の値が、信頼されたキーグループのパブリックキー ID のいずれかと一致することを確認します。 - [信頼された認証] タイプが [信頼された署名者] である場合は、CloudFront は AWS が生成する認証情報を使用します。この場合、Key-Pair-Id または CloudFront-Key-Pair-ID の値は、CloudFront 認証情報のアクセスキー ID と一致する必要があります。
**注:**CloudFront 認証情報の [アクセスキー ID] を確認するには、「署名者のキーペアの作成」を参照してください。
署名付き URL または署名付き cookie が有効な時刻に送信されない
署名付き URL または署名付き cookie を作成するとき、JSON 形式のポリシーステートメントは署名付き URL の制限を指定します。このステートメントは、URL の有効期間を決定します。CloudFront は、以下のいずれかのシナリオで 403 アクセス拒否エラーを返します。
- 既定ポリシーを使用する署名付き URL の Expires 値よりも大きい署名付き URL が送信されます。
- 署名付き cookie は、既定ポリシーを使用する署名 cookie の CloudFront-Expires 値よりも大きい時点で送信されます。
- 署名付き URL または署名付き cookie は、カスタムポリシーの DateLessThan 値よりも大きい時点で送信されます。または、DateGreaterThan 値よりも小さい時点で送信されます。
**注:**Expires、CloudFront-Expires、DateLessThan、および DateGreaterThan 値は Unix 時間形式 (秒単位) および協定世界時 (UTC) です。例えば、2013 年 1 月 1 日の午前 10 時 (UTC) は Unix 時間形式では 1357034400 に変換されます。エポックタイムを使用する場合は、2147483647 (2038 年 1 月 19 日 03:14:07 UTC) までの日付に 32 ビットの整数を使用してください。
署名付き URL の Policy パラメータ、または署名付き cookie の CloudFront-Policy 属性は、カスタムポリシーを使用していることを示しています。ポリシーステートメントは JSON 形式で、base64 でエンコードされています。DateLessThan または DateGreaterThan の値を確認するには、64base デコードコマンドを使用してください。
base64 でエンコードされたカスタムポリシーの例:
eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__
base64 でエンコードされた形式のカスタムポリシーを JSON 形式にデコードするには、次の Linux コマンドを実行します。ポリシー値をお使いのカスタムポリシー値に置き換えます。
echo "eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__" | tr -- '-_~' '+=/' | base64 -d
次のような出力が表示されます。
{ "Statement": [{ "Resource": "http://d111111abcdef8.cloudfront.net/game_download.zip", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.0/24" }, "DateLessThan": { "AWS:EpochTime": 1426500000 } } }] }
署名付き URL または署名付き cookie には、ポリシーに複数のステートメントがある
既定ポリシーまたはカスタムポリシーに複数のステートメントが含まれている場合、CloudFront は 403 アクセス拒否エラーを返します。
この問題をトラブルシューティングするには、前のセクションの Linux コマンドを実行してカスタムポリシーステートメントを確認してください。コードの詳細を確認してから、既定ポリシーまたはカスタムポリシーに含まれるステートメントが 1 つのみであることを確認します。
署名付き URL または署名付き cookie のポリシー内のベース URL が正しくない
ポリシー内のベース URL が正しくない場合、CloudFront は 403 アクセス拒否エラーを返します。
- リソースキーでは省略されています (www.example.com)。完全な URL (http://www.example.com) を使用してください。
- UTF-8 文字エンコーディングはありません。
- すべての句読点とパラメータ名が含まれているわけではありません。
- HTTP または HTTPS プロトコルが、署名付き URL または署名付き cookie を送信するリクエストで使用されるプロトコルと一致しない。
- ドメイン名が、ユーザーエージェントが署名付き URL または署名付き cookie を送信するために使用するホストヘッダーと一致しない。
- クエリ文字列には、無効な文字が含まれている。
署名付き URL または署名付き cookie のポリシーの署名が間違っている
CloudFront は、以下のいずれかのシナリオで 403 アクセス拒否エラーを返します。
- ポリシーステートメントにスペース (タブや改行文字を含む) が含まれている。
- 既定ポリシーまたはカスタムポリシーが、ハッシュされる前に文字列としてフォーマットされていない。これは、AWS SDK を使用せずに署名付き URL または署名付き ocokie を作成した場合に発生します。
- ポリシーが署名を生成する前にハッシュされていない。これは、AWS SDK を使用せずに署名付き URL または署名付き cookie を作成した場合に発生します。
署名付き URL または署名付き cookie を使用する場合の署名のベストプラクティスについては、「署名付き URL の署名を作成するためのコード例」を参照してください。
署名付き URL または署名付き Cookie が、サポートされていない IP アドレスまたは IP 範囲から送信された
署名付き URL または署名付きクッキーが IPv6 アドレスから送信されると、CloudFront は 403 アクセス拒否エラーを返します。または、カスタムポリシーで許可されていない IPv4 アドレスまたは IPv4 範囲から送信されます。
**IpAddress ** キーは、署名付き URL または署名付き cookie に含まれるカスタムポリシーでのみ使用できます。IPv6 形式の IP アドレスはサポートされていません。IpAddress を含むカスタムポリシーを使用する場合は、ディストリビューションの IPv6 を有効にしないでください。
署名付き cookie には、Set-cookie レスポンスヘッダーにドメイン属性と Path 属性が含まれていない
CloudFront から返された cookie が、同じドメインへの今後のリクエストに含まれていない場合、CloudFront は 403 アクセス拒否エラーを返します。この場合、Set-Cookie レスポンスヘッダーの Domain および Path cookie 属性を確認してください。
Domain 値は、リクエストされたファイルのドメイン名です。Domain 属性を指定しない場合、デフォルト値は URL のドメイン名です。これは指定されたドメイン名にのみ適用され、サブドメインには適用されません。Domian 属性を指定すると、サブドメインにも適用されます。
Domain 属性を指定する場合、URL のドメイン名と Domain 属性の値が一致する必要があります。CloudFront がディストリビューションに割り当てるドメイン名を指定できます (例えば、d111111abcdef8.cloudfront.net)。ただし、ドメイン名に *\ .cloudfront.net を指定することはできません。example.com などの代替ドメイン名を使用するには、URL のディストリビューションに代替ドメイン名を追加します。
Path 属性は、リクエストされたファイルのパスです。Path 属性を指定しない場合、デフォルト値は URL 内のパスです。
- 言語
- 日本語

関連するコンテンツ
- 質問済み 7年前