AWS清除CloudFront缓存

运行之前,提供AWS密钥

python 复制代码
import boto3


def find_cloudfront_distribution_id(domain_name, aws_access_key_id, aws_secret_access_key):
    # 创建 CloudFront 资源
    cloudfront = boto3.client('cloudfront', aws_access_key_id=aws_access_key_id,
                              aws_secret_access_key=aws_secret_access_key)

    # 获取所有 CloudFront 分配
    distributions = cloudfront.list_distributions()['DistributionList']['Items']

    for distribution in distributions:
        # 检查分配是否有别名
        if 'Aliases' in distribution and 'Items' in distribution['Aliases']:
            # 检查分配的域名是否包含所提供的域名
            for alias in distribution['Aliases']['Items']:
                if alias == domain_name:
                    return distribution['Id']

    return None


def invalidate_cloudfront_cache(distribution_id, paths, aws_access_key_id, aws_secret_access_key):
    # 创建 CloudFront 客户端
    cloudfront = boto3.client('cloudfront', aws_access_key_id=aws_access_key_id,
                              aws_secret_access_key=aws_secret_access_key)

    # 创建失效批次
    invalidation = {
        'DistributionId': distribution_id,
        'InvalidationBatch': {
            'Paths': {
                'Quantity': len(paths),
                'Items': paths
            },
            'CallerReference': 'unique-identifier'  # 为失效批次提供唯一标识符
        }
    }

    # 提交失效请求
    response = cloudfront.create_invalidation(**invalidation)


   # 检查失效请求是否成功
    if response['ResponseMetadata']['HTTPStatusCode'] == 201:
        print("缓存失效请求成功。")
    else:
        print("缓存失效请求失败。")


# 输入要清理的域名
domain_name = input('请输入需要清理缓存的域名:\n')

# AWS 访问密钥和秘密访问密钥
aws_access_key_id = ''
aws_secret_access_key = ''

# 查找 CloudFront 分配的 ID
distribution_id = find_cloudfront_distribution_id(domain_name, aws_access_key_id, aws_secret_access_key)

if distribution_id:
    # 要失效的路径
    paths_to_invalidate = ['/*']

    # 失效缓存
    invalidate_cloudfront_cache(distribution_id, paths_to_invalidate, aws_access_key_id, aws_secret_access_key)

else:
    print(f"未找到与域名 '{domain_name}' 相关联的 CloudFront 分配")
相关推荐
努力努力再努力wz17 小时前
【Qt 入门系列】从应用场景到开发环境:建立对 Qt 的第一层认知
c语言·开发语言·数据库·c++·b树·qt·缓存
河阿里17 小时前
深入理解LRU缓存机制:从原理到应用(C++实现
开发语言·c++·缓存
Ztopcloud极拓云视角18 小时前
OpenAI MRC协议深度解析:AI超算集群网络架构升级实战指南
网络·人工智能·阿里云·架构·云计算
郝学胜-神的一滴18 小时前
高并发秒杀系统设计全解:从需求拆解到Redis库存实战
java·数据库·redis·python·程序人生·缓存·php
随读手机1 天前
多式联运信息交互平台完整方案(2026版)
java·ai·eclipse·云计算·区块链
yyuuuzz1 天前
aws亚马逊入门常见认知误区
运维·服务器·网络·云计算·github·aws
DeepFlow 零侵扰全栈可观测1 天前
运动战:AI 时代 IT 运维的决胜之道——DeepFlow 业务全链路可观测性的落地实践
运维·网络·人工智能·arcgis·云计算
nj01281 天前
Spring 循环依赖详解:三级缓存、早期引用、AOP 代理与懒加载
java·spring·缓存
期待のcode1 天前
Redis的数据清理机制
数据库·redis·缓存
Damon小智1 天前
腾讯云轻量服务器部署 OpenClaw + QClaw 全流程实践:打造随时在线的个人 AI 助手
服务器·云计算·腾讯云