AWS Обновление CDN через API неожиданно приводит к ошибке - PullRequest
0 голосов
/ 06 января 2019

Iv'e написал API, который обновляет мои CDN CNAME.

сделал это, используя .netcore, AWS SDK.

Раньше он работал нормально, внезапно (может быть несколько недель) он начал отвечать на UpdateDistributionAsync с 500 (хотя на самом деле он выполняет обновление), если я делаю другой запрос без каких-либо изменений, это приводит к 100. Попробовал поискать в Google и понял, что это может быть связано с тем, что ETag не является самым последним. Хотя я спрашиваю о распространении каждый раз, когда делаю обновление, так что это должен быть самый последний ETag.

сообщение об исключении -

The request failed because it didn't meet the preconditions in one or more 
request-header fields.

пример моего кода -

        GetDistributionConfigResponse DistributionCDN = await client.GetDistributionConfigAsync(new GetDistributionConfigRequest(DistributionId));

        List<string> cnames = DistributionCDN.DistributionConfig.Aliases.Items;

        //remove domain and *.domain from additional names list.
        cnames = cnames.Where(domain => !request.RemoveDomains.Any(innerDomain => innerDomain == domain.Replace("*.", string.Empty) || innerDomain == domain.Replace("www.", string.Empty))).ToList();

        //add domain and *.domain to additional names list.
        foreach (string domain in request.AddDomains)
        {
            if(cnames.Contains(domain) == false)
            {
                cnames.Add(domain);
                cnames.Add("*." + domain);
            }
        }

        DistributionCDN.DistributionConfig.Aliases.Items = cnames;
        DistributionCDN.DistributionConfig.Aliases.Quantity = cnames.Count;



        UpdateDistributionResponse response =  await client.UpdateDistributionAsync(new UpdateDistributionRequest(DistributionId
            , DistributionCDN.ETag
            , DistributionCDN.DistributionConfig));

        if (response.HttpStatusCode != HttpStatusCode.OK)
        {
            return false;
        }
        return true;

Ссылка на документацию - https://docs.aws.amazon.com/sdkfornet/v3/apidocs/

Спасибо за чтение, ура

...