Неверные пути с использованием CloudFront создают недействительность в C #

1

Я пытаюсь сделать недействительными объекты CloudFront в С#/.NET и gettign следующее исключение:

Ваш запрос содержит один или несколько недопустимых путей недействительности.

Моя функция:

public bool InvalidateFiles(string[] arrayofpaths)
{
    for (int i = 0; i < arrayofpaths.Length; i++)
    {
        arrayofpaths[i] = Uri.EscapeUriString(arrayofpaths[i]);
    }

    try
    {
        Amazon.CloudFront.AmazonCloudFrontClient oClient = new Amazon.CloudFront.AmazonCloudFrontClient(MY_AWS_ACCESS_KEY_ID, MY_AWS_SECRET_KEY, Amazon.RegionEndpoint.USEast1);
        CreateInvalidationRequest oRequest = new CreateInvalidationRequest();
        oRequest.DistributionId = ConfigurationManager.AppSettings["CloudFrontDistributionId"];
        oRequest.InvalidationBatch = new InvalidationBatch
        {
            CallerReference = DateTime.Now.Ticks.ToString(),
            Paths = new Paths
            {
                Items = arrayofpaths.ToList<string>(),
                Quantity = arrayofpaths.Length
            }
        };

        CreateInvalidationResponse oResponse = oClient.CreateInvalidation(oRequest);
        oClient.Dispose();
    }
    catch
    {
        return false;
    }
    return true;
}

Массив, переданный функции, содержит один URL-адрес:

images/temp_image.jpg

Изображение существует в ведре S3 и загружается в браузере в URL CloudFront.

Что я делаю не так?

  • 1
    Недопустимая недействительность! Это неверное восприятие! : D
Теги:
amazon-web-services
amazon-cloudfront
cache-invalidation

3 ответа

2
Лучший ответ

Когда вы отправляете запрос недействительности на какой-либо объект в CloudFront, вы все равно можете видеть свое изображение в браузере в URL CloudFront, даже если завершение аннулирования завершено, поскольку недействительность не удаляет объект из ведра S3 и с новым запросом к этому изображению из браузера CloudFront снова кэшировал эти URl в images/temp_image.jpg в крайних местах.

При обновлении изображения с тем же именем будет видно недопустимое значение объекта.

Функция Invalidation верна.

1

Вы пытались добавить косую черту в начале пути? (/images/temp_image.jpg)

  • 0
    Я считаю, что это правильный ответ.
0

Для путей к файлам недействительности требуется a/в начале строки.

Если у вас есть сомнения, вы можете войти в AWS Management, перейти в Cloudfront, выбрать дистрибутив, из которого вы пытаетесь сделать недействительными файлы, выбрать параметр "Распространение" и перейти на вкладку "Недействительные".

Затем вы можете вручную создать проверки, что позволит вам проверить правильность ваших путей.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню