【问题标题】:How to invalidate cache in Cloudfront using Java SDK如何使用 Java SDK 使 Cloudfront 中的缓存无效
【发布时间】:2019-04-10 15:30:06
【问题描述】:

我正在尝试使用 JAVA SDK 使 AWS Cloudfront 中的缓存无效,但我发现查找相关信息是一场噩梦。我已经创建了项目,我正在尝试弄清楚如何使用com.amazonaws.services.cloudfront.AmazonCloudFrontClient 连接到云端并调用无效 api。

com.amazonaws.services.cloudfront.AmazonCloudFrontClient

我在 2016 年找到了一个与我类似的问题的答案,该答案推荐了以下方法:

    AWSCredentials awsCredentials = new DefaultAWSCredentialsProviderChain().getCredentials();
AmazonCloudFrontClient client = new AmazonCloudFrontClient(awsCredentials);

Paths invalidation_paths = new Paths().withItems("/path/to/invalidate/foo.jpg", "/path/file2.txt").withQuantity(2);
InvalidationBatch invalidation_batch = new InvalidationBatch(invalidation_paths, "unique_id_like_a_date");
CreateInvalidationRequest invalidation = new CreateInvalidationRequest("distributionID", invalidation_batch);
CreateInvalidationResult ret = client.createInvalidation(invalidation);

但是,其中一些类现在已被弃用和/或不再存在。

有人可以帮助通过 JAVA 在 Cloudfront 中调用失效 API 的正确方法吗?

【问题讨论】:

标签: java amazon-web-services amazon-cloudfront


【解决方案1】:

我使用 AWS Java SDK 2.x 成功地使某些路径的缓存无效,具体如下:

        Paths invalidationPaths = Paths.builder()
                .items("/thing.txt", "/foo/bar/*")
                .quantity(2)
                .build();

        InvalidationBatch invalidationBatch = InvalidationBatch.builder()
                .paths(invalidationPaths)
                .callerReference("arcones")
                .build();

        CreateInvalidationRequest createInvalidationRequest = CreateInvalidationRequest.builder()
                .distributionId(distributionID)
                .invalidationBatch(invalidationBatch)
                .build();

        cloudFront.createInvalidation(createInvalidationRequest);

请记住,失效是异步的,因此在您运行此程序时它将被发布到您的 CloudFront 分配,并且需要一段时间来处理(当状态变为 Completed 时,您会注意到失效已完成) .

【讨论】:

    【解决方案2】:

    Invalidation

    要使文件无效,您可以指定单个文件的路径或以 * 通配符结尾的路径,这可能适用于一个文件或多个文件,如以下示例所示:

    /images/image1.jpg
    /images/image*
    /images/*
    

    注意

    如果您使用 AWS 命令​​行界面 (CLI) 使文件无效,并且您指定的路径包含 * 通配符,则必须在路径周围使用引号 (")。

    例如:

    aws cloudfront create-invalidation --distribution-id $CDN_DISTRIBUTION_ID --paths "/*"
    

    【讨论】:

    • 谢谢伙计,但我正在尝试用 JAVA 来做到这一点。
    猜你喜欢
    • 1970-01-01
    • 2021-12-16
    • 2018-02-22
    • 2012-10-23
    • 2013-11-17
    • 2017-10-02
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多