使用CloudFront在c#中创建无效路径

本文关键字:创建 无效 路径 CloudFront 使用 | 更新日期: 2023-09-27 18:18:50

我试图在c#/中使CloudFront对象无效。. NET并获得以下异常:

您的请求包含一个或多个无效的失效路径。

我的函数:

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桶中,并通过CloudFront URL加载到浏览器中。

我做错了什么?

使用CloudFront在c#中创建无效路径

您的无效文件路径需要在字符串的前面加一个/。

如果你有疑问,你可以登录到AWS Management,进入Cloudfront,选择你想要使文件无效的发行版,选择发行版设置,然后进入Invalidations选项卡。

您可以手动创建验证,这允许您检查路径是否正确。

当你向CloudFront中的一些对象发送无效请求时,即使无效完成,你仍然可以在浏览器的CloudFront URL中看到你的图片,因为无效不会从S3桶中删除对象,并且随着浏览器对该图像的新请求,CloudFront再次将这些URL缓存在边缘位置的images/temp_image.jpg中。

当你用相同的名字更新图像时,会看到对象无效。

你的Invalidation函数是正确的

您是否尝试在路径开头添加正斜杠?(/图片/temp_image.jpg)

相关文章: