Thiết lập cập nhật tự động trong 5 phút
Được rồi các chàng trai. Cách tốt nhất có thể để thực hiện cập nhật CloudFront tự động (không hợp lệ) là tạo chức năng Lambda sẽ được kích hoạt mỗi khi bất kỳ tệp nào được tải lên nhóm S3 (một tệp mới hoặc viết lại).
Ngay cả khi bạn chưa bao giờ sử dụng các chức năng lambda trước đây, điều này thực sự dễ dàng - chỉ cần làm theo các hướng dẫn từng bước của tôi và sẽ chỉ mất 5 phút:
Bước 1
Truy cập https://console.aws.amazon.com/lambda/home và nhấp vào Tạo chức năng lambda
Bước 2
Nhấp vào Chức năng trống (tùy chỉnh)
Bước 3
Nhấp vào hộp trống (vuốt) và chọn S3 từ kết hợp
Bước 4
Chọn bạn Bucket (giống như để phân phối CloudFront)
Bước 5
Đặt Loại sự kiện thành "Đối tượng được tạo (Tất cả)"
Bước 6
Đặt Tiền tố và Hậu tố hoặc để trống nếu bạn không biết nó là gì.
Bước 7
Chọn hộp kiểm Kích hoạt và nhấp vào Tiếp theo
Bước 8
Đặt tên cho chức năng của bạn (đại loại như: YourBucketNameS3ToCloudFrontOnCreate ALL )
Bước 9
Chọn Python 2.7 (hoặc mới hơn) làm Thời gian chạy
Bước 10
Dán mã sau thay vì mã python mặc định:
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())
})
Bước 11
Mở https://console.aws.amazon.com/cloudfront/home trong tab trình duyệt mới và sao chép ID phân phối CloudFront của bạn để sử dụng trong bước tiếp theo.
Bước 12
Quay trở lại tab lambda và dán id phân phối của bạn thay vì _YOUR_DISTRIBNING_ID_ trong mã Python. Giữ báo giá xung quanh.
Bước 13
Đặt trình xử lý : lambda_feft.lambda_handler
Bước 14
Nhấp vào hộp tổ hợp vai trò và chọn Tạo vai trò tùy chỉnh . Tab mới trong trình duyệt sẽ được mở.
Bước 15
Bấm xem tài liệu chính sách , bấm chỉnh sửa , bấm OK và thay thế định nghĩa vai trò bằng sau (như hiện tại):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"cloudfront:CreateInvalidation"
],
"Resource": [
"*"
]
}
]
}
Bước 16
Bấm cho phép . Điều này sẽ đưa bạn trở lại một lambda. Kiểm tra kỹ tên vai trò mà bạn vừa tạo được chọn trong hộp tổ hợp vai trò hiện có .
Bước 17
Đặt Bộ nhớ (MB) thành 128 và Hết giờ thành 5 giây.
Bước 18
Bấm vào Tiếp theo , sau đó bấm Tạo chức năng
Bước 19
Bạn tốt để đi! Giờ đây, mỗi lần bạn tải lên / tải lại bất kỳ tệp nào lên S3, nó sẽ được đánh giá ở tất cả các vị trí của CloudFront Edge.
Tái bút - Khi bạn đang kiểm tra, hãy đảm bảo rằng trình duyệt của bạn đang tải hình ảnh từ CloudFront chứ không phải từ bộ đệm cục bộ.
PSS - Xin lưu ý rằng chỉ có vô hiệu hóa 1000 tệp đầu tiên mỗi tháng là miễn phí, mỗi lần vô hiệu hóa vượt quá giới hạn $ 0,005 USD. Ngoài ra phí bổ sung cho chức năng Lambda có thể được áp dụng, nhưng nó cực kỳ rẻ.