[英]How to invalidate a file(to be refreshed) served from Cloudfront CDN via Java AWS SDK?
[英]How to invalidate cache in Cloudfront using Java SDK
我正在尝试使用JAVA SDK使AWS cloudfront中的缓存无效,但我发现找到相关信息是一场噩梦。 我已经创建了该项目,我正在尝试弄清楚如何使用com.amazonaws.services.cloudfront.AmazonCloudFrontClient
连接到cloudfront并调用invalidate 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的正确方法吗?
要使文件无效,您可以指定单个文件的路径或以*通配符结尾的路径,该路径可能适用于一个文件或多个文件,如以下示例所示:
/images/image1.jpg
/images/image*
/images/*
注意
如果使用AWS命令行界面(CLI)使文件无效并指定包含*通配符的路径,则必须在路径周围使用引号(“)。
例如:
aws cloudfront create-invalidation --distribution-id $CDN_DISTRIBUTION_ID --paths "/*"
我使用以下方法成功地使用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
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.