ตั้งค่าการอัพเดทอัตโนมัติใน 5 นาที
ตกลงเลย วิธีที่ดีที่สุดที่เป็นไปได้ในตอนนี้เพื่อทำการอัปเดต CloudFront อัตโนมัติ (การทำให้เป็นโมฆะ) คือการสร้างฟังก์ชั่นแลมบ์ดาที่จะถูกเรียกใช้ทุกครั้งเมื่อมีการอัปโหลดไฟล์ใด ๆ ลงในที่ฝากข้อมูล S3
แม้ว่าคุณจะไม่เคยใช้ฟังก์ชั่นแลมบ์ดามาก่อนมันเป็นเรื่องง่าย - เพียงทำตามคำแนะนำทีละขั้นตอนและใช้เวลาเพียง 5 นาที:
ขั้นตอนที่ 1
ไปที่https://console.aws.amazon.com/lambda/homeและคลิกสร้างฟังก์ชั่นแลมบ์ดา
ขั้นตอนที่ 2
คลิกที่ฟังก์ชันว่าง (กำหนดเอง)
ขั้นตอนที่ 3
คลิกที่ช่องว่าง (ลูบ) และเลือกS3จากคำสั่งผสม
ขั้นตอนที่ 4
เลือกของคุณBucket (เช่นเดียวกับการกระจาย CloudFront)
ขั้นตอนที่ 5
ตั้งค่าประเภทเหตุการณ์เป็น "วัตถุที่สร้าง (ทั้งหมด)"
ขั้นตอนที่ 6
ตั้งค่าคำนำหน้าและคำต่อท้ายหรือปล่อยว่างถ้าคุณไม่รู้ว่ามันคืออะไร
ขั้นตอนที่ 7
ตรวจสอบการเปิดใช้ทริกเกอร์และคลิกถัดไป
ขั้นตอนที่ 8
ตั้งชื่อฟังก์ชั่นของคุณ (เช่นYourBucketNameS3ToCloudFrontOnCreateAll )
ขั้นตอนที่ 9
เลือกPython 2.7 (หรือใหม่กว่า) เป็นRuntime
ขั้นตอนที่ 10
วางรหัสต่อไปนี้แทนรหัสไพ ธ อนเริ่มต้น:
from __future__ import print_function
import boto3
import time
def lambda_handler(event, context):
for items in event["Records"]:
path = "/" + items["s3"]["object"]["key"]
print(path)
client = boto3.client('cloudfront')
invalidation = client.create_invalidation(DistributionId='_YOUR_DISTRIBUTION_ID_',
InvalidationBatch={
'Paths': {
'Quantity': 1,
'Items': [path]
},
'CallerReference': str(time.time())
})
ขั้นตอนที่ 11
เปิดhttps://console.aws.amazon.com/cloudfront/homeในแท็บเบราว์เซอร์ใหม่และคัดลอก ID การแจกจ่าย CloudFront ของคุณเพื่อใช้ในขั้นตอนต่อไป
ขั้นตอนที่ 12
กลับไปที่แลมบ์ดาแท็บและวางรหัสการแจกจ่ายของคุณแทน _YOUR_DISTRIBUTION_ID_ ในรหัสไพ ธ อน เก็บคำพูดโดยรอบ
ขั้นตอนที่ 13
ตั้งค่าตัวจัดการ : lambda_function.lambda_handler
ขั้นตอนที่ 14
คลิกที่บทบาท ComboBox และเลือกสร้างบทบาทที่กำหนดเอง แท็บใหม่ในเบราว์เซอร์จะถูกเปิด
ขั้นตอนที่ 15
คลิกดูเอกสารนโยบายคลิกแก้ไขคลิกตกลงและแทนที่การกำหนดบทบาทด้วยคำสั่งต่อไปนี้ (ตามสภาพ):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"cloudfront:CreateInvalidation"
],
"Resource": [
"*"
]
}
]
}
ขั้นตอนที่ 16
คลิกอนุญาต สิ่งนี้จะนำคุณกลับสู่แลมบ์ดา ตรวจสอบอีกครั้งว่าชื่อบทบาทที่คุณเพิ่งสร้างนั้นถูกเลือกในบทบาทที่มีอยู่ Combobox
ขั้นตอนที่ 17
ตั้งค่าหน่วยความจำ (MB)ถึง 128 และหมดเวลาเป็น 5 วินาที
ขั้นตอนที่ 18
คลิกถัดไปจากนั้นคลิกสร้างฟังก์ชั่น
ขั้นตอนที่ 19
คุณสบายดี! ในตอนนี้ทุกครั้งที่คุณจะอัปโหลด / อัปโหลดไฟล์ใด ๆ ไปยัง S3 ใหม่จะมีการประเมินในทุกสถานที่ของ CloudFront Edge
ป.ล. - เมื่อคุณทำการทดสอบตรวจสอบให้แน่ใจว่าเบราว์เซอร์ของคุณกำลังโหลดภาพจาก CloudFront ไม่ใช่จากแคชในเครื่อง
PSS - โปรดทราบว่าการตรวจสอบความถูกต้อง 1,000 ไฟล์แรกต่อเดือนนั้นจะไม่เสียค่าใช้จ่ายแต่ละการตรวจสอบจะมีค่าเกิน $ 0.005 USD อาจมีค่าใช้จ่ายเพิ่มเติมสำหรับฟังก์ชั่นแลมบ์ดา แต่มันราคาถูกมาก