web-dev-qa-db-ja.com

Route 53からS3にエイリアスターゲットを設定しようとしたときに使用可能なターゲットがありません

説明されているように、私はシンプルなAmazon AWS S3ベースのウェブサイトをセットアップしようとしています here

私はS3バケット(simples3websitetest.com)をセットアップし、(うまくいけば)正しい権限を与えました:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::simples3websitetest.com/*"
            ]
        }
    ]
}

私はindex.htmlをアップロードし、Webサイトへのアクセスをセットアップしました。これには http://simples3websitetest.com.s3-website-us-west-2.amazonaws.com/index.html からアクセスできます。

これまでのところ、Amazon Route53アクセスをセットアップしたいのですが、ここで行き詰まりました。

所有しているドメイン(resourcesbox.net)にホストゾーンを設定し、「レコードセットの作成」をクリックして、「エイリアスのセットアップ」の手順に進みましたが、S3 Webサイトのエンドポイントで「使用可能なターゲットがありません」と表示されます。エイリアスターゲットを設定してみてください。

私は何を取りこぼしたか??

22
Amir Zucker

S3でのバケットの仮想ホスティングでは、ブラウザーによって送信されるHost:ヘッダーがバケット名と一致する必要があるため、作成するAレコードエイリアスはバケットの名前と同じである必要があります。バケットの仮想ホスティングを実現できる実際的な方法は実際にはありません...バケットは何らかのメカニズムによって識別される必要があり、そのメカニズムはhttpヘッダーです。

「example.com」ドメイン内のバケットへのエイリアスを作成するには、バケット名を、そのドメイン内で合法的に宣言できるホスト名にする必要があります... Route 53 Aレコード「testbucket.exampleたとえば、「。com」はonlyを「testbucket.example.com」というバケットにエイリアス化でき、他のバケットはエイリアス化できません。

あなたの質問では、この制約を破っています...しかし、「simples3websitetest.com」ドメイン内(およびその頂点)にある「simples3websitetest.com」という名前のバケットへのエイリアスしか作成できません。

これは仕様によるものであり、Route 53やS3の制限ではありません。彼らはあなたがおそらくうまくいかない何かをするのを妨げているだけです。 Webサーバーは、エイリアスやCNAME、またはDNSで行われたその他のことを認識していません-接続しようとしているとブラウザーが信じている元のホスト名のみをブラウザーから送信されたhttpヘッダーで受信し、S3はこれを使用します仮想ホスト要求が適用されるバケットの名前を識別する情報。

Amazon S3では、バケットにドメインと同じ名前を付ける必要があります。これは、ユーザーがWebサイトからコンテンツを要求したときに、Amazon S3がWebブラウザーによって送信されたホストヘッダーを適切に解決できるようにするためです。したがって、ドメイン名の登録料を支払う前に、Amazon S3でウェブサイトのバケットを作成することをお勧めします。

http://docs.aws.Amazon.com/gettingstarted/latest/swh/getting-started-create-bucket.html#bucket-requirements

ただし、この制限は、バケットの前でCloudFrontを使用していない場合にのみ適用されることに注意してください。

CloudFrontを使用すると、リクエストがS3に渡される前にHost:ヘッダーが(CloudFront自体によって)書き換えられるため、柔軟性が高まります。 CloudFrontディストリビューションの "Origin Host"をyour-bucket.s3-website-xx-yyyy-n.amazonaws.comとして構成します。ここで、xx-yyyy-nは、バケットが作成されたS3のAWSリージョンです。このエンドポイントは、バケットごとにS3コンソールに表示されます。

33

ホストゾーンabc.comがあるとします。そして、バケットabc.comを作成します(これはルートエイリアスのリストには表示されません)。名前の後-バケットに名前を付けることはできません

これも試してみてください。初めて私は正しい名前でバケットを作成しましたが、それでも機能しませんでした。私がOCDを持っていると信じて、フルストップやコンマを見逃しませんでした。

  1. 同じ名前abc.comで別のホストゾーンを作成します
  2. 同じホストゾーンが2つ表示されます(abc.com。とabc.com)。
  3. 新しいものを削除
  4. 古いホストゾーンabc.comに戻ります
  5. S3エンドポイントが起動するのを確認できる場合があります-これはRoute53の問題である可能性があります

これは私がほとんどすべてを試すのに役立ちました-私が見るいくつかの提案はある種のキャッシュをクリアするためにログアウトしてログインすることです-わかりません

1
Chathushka