Score:1

CloudFront ดูเหมือนจะไม่เรียกใช้ฟังก์ชัน lambda@edge

ธง in

ฉันมีการกระจาย CloudFront ต้นทางคือบัคเก็ต S3 ที่ใช้ OAI

ฉันได้สร้างฟังก์ชัน lambda@edge ตามคำแนะนำจาก https://aws.amazon.com/blogs/compute/implementing-default-directory-indexes-in-amazon-s3-backed-amazon-cloudfront-origins-using-lambdaedge/

โดยพื้นฐานแล้ว ฉันต้องการให้ฟังก์ชัน lambda@edge เปลี่ยนเส้นทาง URL ที่ลงท้ายด้วย / เป็น /index.html ทำหน้าที่เหมือน Apache DirectroyIndex

การกระจาย CloudFront ใช้ได้กับ URL โดยไม่ต้องมีการเปลี่ยนเส้นทาง แต่ CloudFront ดูเหมือนจะไม่เรียกใช้ฟังก์ชัน lamba@edge ของฉัน

ฉันรับรองแล้วว่ามีความสัมพันธ์ที่ถูกต้องระหว่างการแจกจ่าย CloudFront และเวอร์ชันฟังก์ชัน labda@edge

ฉันส่งคำขอทดสอบหลายรายการ:

ขด -I https://www.sudheer.net/blog/
HTTP/2 403 
ประเภทเนื้อหา: แอปพลิเคชัน/xml
วันที่: เสาร์ 19 ก.พ. 2565 14:35:38 GMT
เซิร์ฟเวอร์: AmazonS3
x-cache: ข้อผิดพลาดจาก cloudfront
ผ่าน: 1.1 5d840d432727e3561fd1a3de915212ca.cloudfront.net (CloudFront)
x-amz-cf-pop: EWR53-C2
x-amz-cf-id: leub-Kgu4Bh9xH4Rn5o7bxs62B1NBO4ViEu6hv-_xtGG7DSQlBFEXw=

ฉันได้ 403ฉันไม่พบบันทึก lambda@edge ในภูมิภาคใดๆ

อะไรคือปัญหา? ฉันจะไปหามันได้อย่างไร

ฟังก์ชัน Lambda@Edge มีหลักการดังนี้

    "เวอร์ชัน": "2012-10-17",
    "คำแถลง": [
        {
            "ซิด": "",
            "เอฟเฟกต์": "อนุญาต",
            "อาจารย์ใหญ่": {
                "บริการ": [
                    "edgelambda.amazonaws.com",
                    "lambda.amazonaws.com"
                ]
            },
            "การกระทำ": "sts:AssumeRole"
        }
    ]
}

Score:0
ธง cn

คุณสามารถทำได้ด้วย CloudFront Functions การส่งเสริมตนเองที่ไร้ยางอาย แต่ฉันพบปัญหานี้อย่างแน่นอนและเขียนเกี่ยวกับเรื่องนี้ บล็อคของฉัน.

อย่างมีประสิทธิภาพ:

ฉันพบ โพสต์ SO นี้ซึ่งแสดงให้ฉันเห็นว่าฉันต้องสร้างฟังก์ชันนี้:

ตัวจัดการฟังก์ชัน (เหตุการณ์) {
    คำขอ var = event.request;
    var uri = คำขอยูริ;
    
    // ตรวจสอบว่า URI ไม่มีชื่อไฟล์หรือไม่
    ถ้า (uri.endsWith('/')) {
        request.uri += 'index.html';
    } 
    // ตรวจสอบว่า URI ไม่มีนามสกุลไฟล์หรือไม่
    อื่นถ้า (!uri.includes('.')) {
        request.uri += '/index.html';
    }

    ขอคืน;
}

ใช้ ฟังก์ชั่น รายการบนเมนูด้านซ้ายในบริการ CloudFront เพื่อบันทึก + เผยแพร่ฟังก์ชันนี้ จากนั้นแก้ไขลักษณะการทำงานเริ่มต้นของการเผยแพร่ของคุณ และเปลี่ยนการเชื่อมโยงฟังก์ชันคำขอ Viewer เป็นฟังก์ชันใหม่ของคุณ

Sudheer Satyanarayana avatar
in flag
ขอบคุณ @shearn89 อันที่จริง ปัญหาของฉันคือลำดับพฤติกรรมแคชไม่ถูกต้อง แต่ฉันทำให้การตั้งค่าง่ายขึ้นด้วยฟังก์ชัน CloudFront ฉันทิ้ง Lambda@Edge ไปใช้วิธีแก้ปัญหาที่ง่ายกว่า
cn flag
อย่าลังเลที่จะแบ่งปันวิธีแก้ปัญหาของคุณและยอมรับเพื่อโหวต!

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา