我正在尝试使用 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的正确方法吗?
答案 0 :(得分:0)
要使文件无效,可以指定单个文件的路径或以*通配符结尾的路径,该路径可能适用于一个文件或多个文件,如以下示例所示:
/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}时,失效已完成) }。