Как аннулировать кэш в Cloudfront с помощью Java SDK - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь сделать недействительной кэш-память в облачном фронте AWS, используя JAVA SDK , но я считаю кошмаром поиск нужной информации.Я уже создал проект и пытаюсь выяснить, как использовать 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);

Однако некоторые из этих классов теперь устарели и / или больше не существуют.

Может кто-нибудь, пожалуйста, помогите с правильным способом вызвать API аннулирования вCloudfront через JAVA?

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Я успешно аннулировал кэш определенных путей с помощью 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) .

0 голосов
/ 11 апреля 2019

Invalidation

Чтобы сделать файлы недействительными, вы можете указать либо путь к отдельным файлам, либо путь, который заканчивается символом *, который может применяться к одному файлу или ко многим, какпоказано в следующих примерах:

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

Примечание

Если вы используете интерфейс командной строки AWS (CLI) для аннулирования файлов и указали путь, включающий подстановочный знак *, вы должны использоватькавычки (") вокруг пути.

Например:

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