ไม่มีเป้าหมายเมื่อพยายามตั้งค่านามแฝงเป้าหมายจากถนนหมายเลข 53 ถึง S3


21

ฉันพยายามที่จะติดตั้งง่าย Amazon AWS S3 เว็บไซต์ตามตามที่อธิบายไว้ที่นี่

ฉันได้ตั้งค่า S3 bucket (simples3websitetest.com) แล้วให้สิทธิ์ที่ถูกต้อง (หวังว่า):

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

ฉันอัปโหลด index.html ตั้งค่าการเข้าถึงเว็บไซต์และเข้าถึงได้ผ่านhttp://simples3websitetest.com.s3-website-us-west-2.amazonaws.com/index.html

ดีมากตอนนี้ฉันต้องการตั้งค่าการเข้าถึง Amazon Route53 และนี่คือที่ฉันติดอยู่

ฉันตั้งค่าโซนโฮสต์บนโดเมนที่ฉันเป็นเจ้าของ (resourcesbox.net) และคลิก "สร้างชุดบันทึก" และไปที่ขั้นตอน "ตั้งชื่อแทน" แต่ฉันได้รับ "ไม่มีเป้าหมาย" ใต้ S3 เว็บไซต์ปลายทางเมื่อฉัน พยายามกำหนดเป้าหมายนามแฝง

ฉันพลาดอะไร??


ตั้งแต่เดือนตุลาคม 2012 Amazon แนะนำฟังก์ชันเพื่อจัดการการเปลี่ยนเส้นทาง (HTTP 301) สำหรับที่เก็บ S3 คุณสามารถอ่านคำตอบก่อนหน้าของฉันที่นี่ stackoverflow.com/a/24218895/1160780
Alberto Spelta

คำตอบ:


33

นามแฝง A-record ที่คุณสร้างจะต้องเป็นชื่อเดียวกันกับที่เก็บข้อมูลเนื่องจากการโฮสต์เสมือนของถังใน S3 ต้องการให้Host:ส่วนหัวที่ส่งโดยเบราว์เซอร์ตรงกับชื่อที่ฝากข้อมูล ไม่มีวิธีอื่นที่ใช้ประโยชน์ได้จริงในการโฮสต์ถังเสมือนจริงได้ ... กลไกต้องถูกระบุโดยกลไกบางอย่างและกลไกนั้นคือส่วนหัว http

ในการสร้างนามแฝงไปยังที่ฝากข้อมูลภายในโดเมน "example.com" ชื่อที่ฝากข้อมูลจะต้องเป็นชื่อโฮสต์ที่คุณสามารถประกาศตามกฎหมายภายในโดเมนนั้น ... testbucket.example 53 เส้นทาง A-Record .com" ตัวอย่างเช่นสามารถเพียง แต่จะนามแฝงถังที่เรียกว่า 'testbucket.example.com' ... และไม่มีถังอื่น ๆ

ในคำถามของคุณคุณกำลังฝ่าฝืนข้อ จำกัด นี้ ... แต่คุณสามารถสร้างนามแฝงไปยังที่เก็บข้อมูลที่ชื่อว่า "simples3websitetest.com" ภายในโดเมน (และที่จุดสูงสุด) โดเมน "simples3websitetest.com"

นี่คือการออกแบบและไม่ใช่ข้อ จำกัด ของเส้นทาง 53 หรือ S3 พวกเขาป้องกันคุณจากการทำสิ่งที่ไม่สามารถใช้งานได้เท่านั้น เว็บเซิร์ฟเวอร์ไม่รู้จักนามแฝงหรือ CNAME หรือสิ่งอื่นใดที่ทำใน DNS - พวกเขาได้รับชื่อโฮสต์ดั้งเดิมที่เบราว์เซอร์เชื่อว่ากำลังพยายามเชื่อมต่อในส่วนหัว http ที่ส่งโดยเบราว์เซอร์ ... และ S3 ใช้สิ่งนี้ ข้อมูลเพื่อระบุชื่อของที่ฝากข้อมูลที่ใช้คำขอโฮสต์เสมือน

Amazon S3 ต้องการให้คุณตั้งถังของคุณชื่อเดียวกันกับโดเมนของคุณ นี่คือเพื่อให้ Amazon S3 สามารถแก้ไขส่วนหัวของโฮสต์ที่ส่งโดยเว็บเบราว์เซอร์ได้อย่างเหมาะสมเมื่อผู้ใช้ร้องขอเนื้อหาจากเว็บไซต์ของคุณ ดังนั้นเราขอแนะนำให้คุณสร้างถังของคุณสำหรับเว็บไซต์ของคุณใน Amazon S3 ก่อนที่คุณจะจ่ายเงินเพื่อจดทะเบียนชื่อโดเมนของคุณ

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

อย่างไรก็ตามโปรดทราบว่าข้อ จำกัด นี้จะใช้เฉพาะเมื่อคุณไม่ได้ใช้ CloudFront หน้าฝากข้อมูลของคุณ

ด้วย CloudFront มีความยืดหยุ่นมากขึ้นเนื่องจากHost:ส่วนหัวสามารถเขียนใหม่ได้ (โดย CloudFront เอง) ก่อนที่คำขอจะถูกส่งผ่านไปยัง S3 คุณกำหนดค่า "โฮสต์ต้นทาง" ในการกระจาย CloudFront ของคุณเป็นyour-bucket.s3-website-xx-yyyy-n.amazonaws.comที่ที่ xx-yyyy-n เป็นภูมิภาค AWS ของ S3 ที่ที่ฝากข้อมูลของคุณถูกสร้างขึ้น จุดสิ้นสุดนี้แสดงในคอนโซล S3 สำหรับที่เก็บข้อมูลแต่ละชุด


1
นี่เป็นปัญหาที่เกิดขึ้นจริงฉันสร้างที่เก็บข้อมูลที่เรียกว่า resourcesbox.net และปรากฏขึ้นมา ขอขอบคุณ! คำถามการติดตามอย่างรวดเร็ว: สิ่งนี้หมายความว่าถ้าฉันต้องการมีที่เก็บข้อมูลที่แตกต่างกันสำหรับโดเมนนั้นฉันต้องมีโดเมนย่อยเพื่อให้เหมาะสมกับที่เก็บข้อมูลแต่ละชุดใช่ไหม ไม่มีทางรอบ ๆ มันเลยเหรอ?
Amir Zucker

ฉันไม่แน่ใจว่าคุณหมายถึงอะไรโดย "ฉันต้องมีโดเมนย่อย" คุณต้องสร้างระเบียน A ในเส้นทาง 53 ด้วยชื่อโฮสต์ที่ตรงกับที่เก็บข้อมูลแต่ละชุดที่คุณต้องการใช้เพื่อโฮสต์เว็บไซต์ใน S3 ใช่
Michael - sqlbot

1
@oberstet คำถามนี้เกี่ยวกับaliasบันทึกRoute 53 ที่ชี้ไปยังที่เก็บ S3 ซึ่งเปิดใช้งานการโฮสต์เว็บไซต์ซึ่งทำให้ DNS แก้ไขปลายทางของเว็บไซต์ไม่ใช่จุดสิ้นสุด REST ปลายทางเว็บไซต์ไม่สนับสนุน SSL ที่ทุกคน ; เฉพาะจุดสิ้นสุด REST เท่านั้น นอกจากนี้ไวด์การ์ดการ์ดทั้งหมดสนับสนุนเพียงหนึ่งสูงสุด *และสามารถปรากฏได้เฉพาะในส่วนประกอบชื่อโฮสต์ที่ด้านซ้ายสุดดังนั้นจึงไม่ใช่ข้อ จำกัด S3
Michael - sqlbot

1
@oberstet 6.4.3.1 ไคลเอ็นต์ไม่ควรพยายามจับคู่ตัวบ่งชี้ที่นำเสนอซึ่งอักขระตัวแทนจะประกอบด้วยป้ายกำกับที่ไม่ใช่ป้ายกำกับที่อยู่ด้านซ้ายสุด ดังนั้นจึงไม่มีสิ่งใดเป็นสัญลักษณ์แทนแบบหลายชั้น ไม่ว่าในกรณีใดปัญหา boto ของคุณเป็นเรื่องของตัวเลือก "รูปแบบการโทร" ที่มีการใช้งานอย่างไม่ถูกต้อง ถังทุกคนสามารถเข้าถึงได้ผ่านทาง HTTPS ด้วยชื่อถังเป็นครั้งแรกเส้นทางองค์ประกอบภายใต้ S3 URL สำหรับถังของภูมิภาคที่ถูกต้องhttps://s3-us-west-2.amazonaws.com/my-bucket.with-dots.in-us-west-2/keyเช่น จุดสิ้นสุดภูมิภาคผิดพลาด = ข้อผิดพลาดในการเปลี่ยนเส้นทาง
Michael - sqlbot

1
@ Martininyne ขอบคุณ ฉันได้เพิ่มการอ้างอิงถึงเอกสาร S3 เกี่ยวกับชื่อที่ฝากข้อมูลและชื่อโดเมนที่ต้องเหมือนกันรวมถึงการกล่าวถึงวิธีแก้ไขสำหรับชื่อที่ฝากข้อมูลที่ใช้ไปแล้วโดยใช้ CloudFront ในภูมิภาค us-east-1 และ us-west-2 และที่อื่น ๆ ค่าใช้จ่ายของ CloudFront นั้นเล็กน้อยและอาจช่วยประหยัดได้เล็กน้อยเนื่องจากการดาวน์โหลด CF นั้นอยู่ที่ $ 0.005 / GB บนแบนด์วิธที่ถูกกว่า S3 โดยตรง สถานที่
Michael - sqlbot

0

สมมติว่าคุณมีโซนโฮสต์ abc.com และคุณสร้าง bucket abc.com (ซึ่งไม่ปรากฏในรายการในนามแฝงเส้นทาง) - คุณอาจคิดว่ามันเป็น หลังจากชื่อ - ซึ่งคุณไม่สามารถตั้งชื่อถังด้วย

ลองสิ่งนี้เช่นกัน เพราะครั้งแรกที่ฉันสร้างถังด้วยชื่อที่ถูกต้องและยังไม่ทำงาน เชื่อฉันไหมว่าฉันมี OCD ดังนั้นฉันจึงไม่พลาดที่จะแวะชมฟูลสต็อปหรือคอมม่า

  1. สร้างโซนที่โฮสต์อื่นด้วยชื่อเดียวกัน abc.com
  2. ตอนนี้คุณจะเห็น 2 ของโซนโฮสต์เดียวกัน (abc.com และ abc.com)
  3. ลบอันใหม่
  4. กลับไปที่โซนโฮสต์เก่า abc.com
  5. คุณอาจเห็นจุดสิ้นสุดของ s3 ปรากฏขึ้น - นี่อาจเป็นปัญหาในเส้นทาง 53

สิ่งนี้ใช้ได้กับฉันลองเกือบทุกอย่าง - คำแนะนำบางอย่างที่ฉันเห็นคือออกจากระบบและลงชื่อเข้าใช้เพื่อล้างแคชบางประเภท - ไม่แน่ใจ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.