예제 #1
0
        public static async Task <ResourceRecordSet[]> GetRecordSetsAsync(
            this Route53Helper r53h,
            string zoneId,
            string recordName,
            string recordType,
            string failover      = null,
            bool throwIfNotFound = true)
        {
            var recordNameTrimmed = recordName.TrimEnd('.').TrimStartSingle("www.");
            var set = await r53h.ListResourceRecordSetsAsync(zoneId);

            set = set?.Where(x => x.Name.TrimEnd('.').TrimStartSingle("www.") == recordNameTrimmed && x.Type == recordType && (failover == null || failover == x.Failover));

            if (!throwIfNotFound && set.IsNullOrEmpty())
            {
                return(null);
            }

            if (set?.Count() == 0)
            {
                throw new Exception($"{nameof(GetRecordSet)} Failed, RecordSet with Name: '{recordName}' and Type: '{recordType}' was not found.");
            }

            return(set.ToArray());
        }
예제 #2
0
        public static async Task <Dictionary <HostedZone, ResourceRecordSet[]> > GetRecordSets(this Route53Helper r53h, CancellationToken cancellationToken = default(CancellationToken))
        {
            var zones = await r53h.ListHostedZonesAsync(cancellationToken);

            var results = await zones.ForEachAsync(
                async zone => new KeyValuePair <HostedZone, ResourceRecordSet[]>(
                    zone,
                    (await r53h.ListResourceRecordSetsAsync(zone.Id)).ToArray()));

            return(results.ToDictionary(kvp => kvp.Key, kvp => kvp.Value));
        }