AWS Infra

[ AWS ] Python Boto3를 이용한 CloudFront Invalidation (무효화)

Pydole 2023. 1. 13. 16:57

 

 CloudFront 콘텐츠들의 캐시 히트율을 높히기 위해 TTL을 길게 변경하고, 변경되는 컨텐츠들은 Python을 이용하여

Invalidation (무효화) 무효화 처리하는 방법을 알아본다.


아래는 테스트용인 단일 파일이지만, 

APIGate와 같이 활용하기 위해서는 'Items' 배열로 받아서 'Quantity' 수량을 len() 을 이용해서 처리하면 되겠다.

 

import boto3
from time import time

s3 = boto3.client('cloudfront')

response = s3.create_invalidation(
    DistributionId='',
    InvalidationBatch={
        'Paths': {
            'Quantity': 1,
            'Items': [
                '/test.jpg',
            ]
        },
        'CallerReference': str(time()).replace(".", "")
    }
)

 

 

 

IAM 정책

 

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudfront:CreateInvalidation",
                "cloudfront:GetInvalidation",
                "cloudfront:ListInvalidations"
            ],
            "Resource": "arn:aws:cloudfront::<계정ID>:distribution/<배포ID>"
        }
    ]
}