Tidak ada target yang tersedia ketika mencoba untuk menetapkan alias target dari Rute 53 ke S3

21

Saya mencoba menyiapkan situs web sederhana berbasis Amazon AWS S3, seperti yang dijelaskan di sini .

Saya telah menyiapkan bucket S3 (simples3websitetest.com), memberikannya (semoga) izin yang benar:

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

Saya mengunggah index.html, mengatur akses situs web, dan dapat diakses melalui http://simples3websitetest.com.s3-website-us-west-2.amazonaws.com/index.html

Sejauh ini bagus, sekarang saya ingin mengatur akses Amazon Route53 dan ini adalah tempat saya macet.

Saya telah menyiapkan zona yang diinangi pada domain yang saya miliki (resourcesbox.net), dan mengklik "buat kumpulan catatan", dan sampai ke langkah "setup alias", tetapi saya mendapatkan "Tidak ada target yang tersedia" di bawah titik akhir situs web S3 ketika saya coba atur target alias.

Apa yang saya lewatkan ??

Amir Zucker
sumber
Mulai dari Oktober 2012 Amazon memperkenalkan fungsi untuk menangani pengalihan (HTTP 301) untuk bucket S3. Anda dapat membaca tanggapan saya sebelumnya di sini. stackoverflow.com/a/24218895/1160780
Alberto Spelta

Jawaban:

33

Alias ​​A-record yang Anda buat harus sama dengan nama bucket, karena hosting virtual dari bucket di S3 mengharuskan Host:header yang dikirim oleh browser cocok dengan nama bucket. Sebenarnya tidak ada cara praktis lain di mana hosting virtual kotak dapat dilakukan ... ember harus diidentifikasi oleh beberapa mekanisme, dan mekanisme itu adalah header http.

Untuk membuat alias ke bucket di dalam domain "example.com", nama bucket juga harus menjadi nama host yang secara hukum dapat Anda nyatakan dalam domain itu ... Rute 53 A-Record "testbucket.example .com, "misalnya, hanya dapat dialihkan ke ember yang disebut" testbucket.example.com "... dan tidak ada ember lain.

Dalam pertanyaan Anda, Anda melanggar batasan ini ... tetapi Anda hanya dapat membuat alias ke keranjang bernama "simples3websitetest.com" di dalam (dan di puncak) domain "simples3websitetest.com".

Ini adalah desain, dan bukan batasan Rute 53 atau S3. Mereka hanya mencegah Anda melakukan sesuatu yang tidak mungkin berhasil. Server web tidak mengetahui adanya alias atau CNAME atau apa pun yang dilakukan dalam DNS - mereka hanya menerima nama host asli yang diyakini browser sedang berusaha untuk terhubung, dalam header http yang dikirim oleh browser ... dan S3 menggunakan ini informasi untuk mengidentifikasi nama ember yang berlaku permintaan virtual host.

Amazon S3 mengharuskan Anda memberi ember nama yang sama dengan domain Anda. Ini agar Amazon S3 dapat dengan baik menyelesaikan header host yang dikirim oleh browser web ketika pengguna meminta konten dari situs web Anda. Karena itu, kami sarankan Anda membuat keranjang untuk situs web Anda di Amazon S3 sebelum membayar untuk mendaftarkan nama domain Anda.

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

Perhatikan, bagaimanapun, bahwa pembatasan ini hanya berlaku ketika Anda tidak menggunakan CloudFront di depan bucket Anda.

Dengan CloudFront, ada lebih banyak fleksibilitas, karena Host:header dapat ditulis ulang (oleh CloudFront sendiri) sebelum permintaan diteruskan ke S3. Anda mengonfigurasi "host asal" di distribusi CloudFront Anda sebagai your-bucket.s3-website-xx-yyyy-n.amazonaws.comtempat xx-yyyy-n adalah wilayah AWS S3 tempat bucket Anda dibuat. Titik akhir ini ditunjukkan di konsol S3 untuk setiap bucket.

Michael - sqlbot
sumber
1
Ini memang masalahnya, saya membuat ember bernama resourcesbox.net dan itu muncul. Terima kasih! Pertanyaan tindak lanjut cepat: Apa artinya ini jika saya ingin memiliki ember berbeda untuk domain itu, saya harus memiliki subdomain yang sesuai dengan setiap ember, bukan? Tidak ada jalan lain?
Amir Zucker
Saya tidak yakin apa yang Anda maksud dengan "Saya harus memiliki subdomain." Anda perlu membuat catatan A di Route 53 dengan nama host yang cocok dengan masing-masing ember yang ingin Anda gunakan untuk meng-host situs web di S3, ya.
Michael - sqlbot
1
@oberstet pertanyaan ini adalah tentang aliascatatan Route 53 yang menunjuk ke ember S3 dengan hosting situs web diaktifkan, yang menyebabkan DNS menyelesaikan ke titik akhir situs web, bukan titik akhir REST. Titik akhir situs web sama sekali tidak mendukung SSL ; hanya titik akhir REST yang melakukannya. Selain itu, semua sertifikat wildcard hanya mendukung maksimum satu * dan hanya dapat muncul di komponen hostname paling kiri, sehingga sebenarnya bukan batasan S3.
Michael - sqlbot
1
@oberstet 6.4.3.1 Klien TIDAK HARUS berusaha untuk mencocokkan pengenal yang disajikan di mana karakter wildcard terdiri dari label selain dari label paling kiri. Jadi, tidak ada wildcard multi-tier. Bagaimanapun, masalah boto Anda adalah masalah opsi "format panggilan" yang tampaknya dilaksanakan secara tidak benar. Setiap bucket dapat diakses melalui https dengan nama bucket sebagai elemen jalur pertama di bawah URL S3 untuk wilayah yang benar, mis https://s3-us-west-2.amazonaws.com/my-bucket.with-dots.in-us-west-2/key. Titik akhir regional salah = kesalahan redirect.
Michael - sqlbot
1
@ MartinLyne, terima kasih. Saya telah menambahkan referensi ke dokumentasi S3, tentang nama bucket dan nama domain yang harus sama, serta menyebutkan solusi untuk nama bucket yang sudah diambil, menggunakan CloudFront. Di wilayah us-east-1 dan us-west-2, dan mungkin yang lain, biaya menggunakan CloudFront dapat diabaikan dan bahkan berpotensi menghemat sedikit, karena unduhan CF adalah $ 0,005 / GB lebih murah pada bandwidth daripada S3 langsung di beberapa sisi lokasi.
Michael - sqlbot
0

Asumsikan Anda memiliki zona host abc.com. dan Anda membuat bucket abc.com (yang tidak muncul dalam daftar di rute alias) - Anda mungkin berpikir itu adalah. setelah nama - yang tidak dapat Anda beri nama embernya

Coba ini juga. Karena pertama kali saya membuat ember dengan nama yang benar dan masih tidak berfungsi. Percayalah, saya memiliki OCD, jadi saya tidak melewatkan fullstop atau koma.

  1. Buat zona lain yang dihosting dengan nama yang sama abc.com
  2. Sekarang Anda akan melihat 2 dari zona yang dihosting yang sama (abc.com. Dan abc.com.)
  3. Hapus yang baru
  4. Kembali ke zona host lama abc.com
  5. Anda mungkin dapat melihat titik akhir s3 datang - ini mungkin menjadi masalah di Route53

Ini berhasil bagi saya mencoba hampir semuanya - Beberapa saran yang saya lihat adalah untuk logout dan login untuk beberapa jenis cache yang jelas - tidak yakin

Chathushka
sumber