如何使用Java SDK使Cloudfront中的缓存无效

时间:2019-04-10 15:30:06

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

我正在尝试使用 JAVA SDK 使AWS Cloudfront中的缓存无效,但是我发现查找相关信息是一场噩梦。我已经创建了项目,并且试图弄清楚如何使用com.amazonaws.services.cloudfront.AmazonCloudFrontClient连接到Cloudfront并调用无效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的正确方法吗?

2 个答案:

答案 0 :(得分:0)

Invalidation

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

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

注意

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

例如:

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

答案 1 :(得分:0)

我通过 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发行版中,并且将需要一段时间来处理(您可以注意到,失效状态为{{1}时,失效已完成) }。