Pengaturan pembaruan otomatis dalam 5 menit
Oke teman Cara terbaik yang mungkin saat ini untuk melakukan pembaruan CloudFront otomatis (tidak valid) adalah dengan membuat fungsi Lambda yang akan dipicu setiap kali setiap file diunggah ke bucket S3 (yang baru atau ditulis ulang).
Bahkan jika Anda belum pernah menggunakan fungsi lambda sebelumnya, itu sangat mudah - cukup ikuti petunjuk langkah demi langkah saya dan hanya membutuhkan 5 menit:
Langkah 1
Buka https://console.aws.amazon.com/lambda/home dan klik Buat fungsi lambda
Langkah 2
Klik pada Fungsi Kosong (khusus)
Langkah 3
Klik pada kotak kosong (dibelai) dan pilih S3 dari kombo
Langkah 4
Pilih Bucket Anda (sama seperti untuk distribusi CloudFront)
Langkah 5
Tetapkan Jenis Acara ke "Objek Dibuat (Semua)"
Langkah 6
Tetapkan Awalan dan Sufiks atau biarkan kosong jika Anda tidak tahu apa itu.
Langkah 7
Centang Enable trigger checkbox dan klik Next
Langkah 8
Namai fungsi Anda (sesuatu seperti: YourBucketNameS3ToCloudFrontOnCreateAll )
Langkah 9
Pilih Python 2.7 (atau lebih baru) sebagai Runtime
Langkah 10
Rekatkan kode berikut daripada kode python default:
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())
})
Langkah 11
Buka https://console.aws.amazon.com/cloudfront/home di tab browser baru dan salin ID distribusi CloudFront Anda untuk digunakan pada langkah berikutnya.
Langkah 12
Kembali ke tab lambda dan tempel id distribusi Anda alih-alih _YOUR_DISTRIBUTION_ID_ dalam kode Python. Simpan kutipan di sekitarnya.
Langkah 13
Setel handler : lambda_function.lambda_handler
Langkah 14
Klik pada kotak kombo peran dan pilih Buat peran khusus . Tab baru di browser akan dibuka.
Langkah 15
Klik lihat dokumen kebijakan , klik edit , klik OK dan ganti definisi peran dengan yang berikut (sebagaimana adanya):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"cloudfront:CreateInvalidation"
],
"Resource": [
"*"
]
}
]
}
Langkah 16
Klik izinkan . Ini akan mengembalikan Anda ke lambda. Periksa ulang bahwa nama peran yang baru saja Anda buat dipilih di kotak kombo peran yang ada .
Langkah 17
Set Memory (MB) ke 128 dan Timeout ke 5 detik.
Langkah 18
Klik Berikutnya , lalu klik Buat fungsi
Langkah 19
Kamu baik untuk pergi! Sekarang, setiap kali Anda akan mengunggah / mengunggah kembali file apa pun ke S3, itu akan dievaluasi di semua lokasi CloudFront Edge.
PS - Saat Anda menguji, pastikan browser Anda memuat gambar dari CloudFront, bukan dari cache lokal.
PSS - Harap dicatat, bahwa hanya 1000 file invalidasi pertama per bulan adalah gratis, setiap invalidasi melebihi batas biaya $ 0,005 USD. Biaya tambahan untuk fungsi Lambda mungkin berlaku, tetapi sangat murah.