private async Task <CreateHostedZoneResponse> createAwsHostedZoneAsync(string zoneName) { logger.LogInformation($"Creating hosted zone '{ zoneName }'..."); CreateHostedZoneRequest request = new CreateHostedZoneRequest { CallerReference = zoneName, Name = zoneName }; CreateHostedZoneResponse zone = await TheRoute53Client().CreateHostedZoneAsync(request); return(zone); }
private static void CreateHostedZone(IAmazonRoute53 r53Client, string domainName) { var zoneRequest = new CreateHostedZoneRequest { Name = domainName, CallerReference = "testingss" }; var zoneResponse = r53Client.CreateHostedZone(zoneRequest); var recordSet = new ResourceRecordSet { Name = domainName, TTL = 60, Type = RRType.A, ResourceRecords = new List <ResourceRecord> { new ResourceRecord { Value = IpAddress } } }; var change1 = new Change { ResourceRecordSet = recordSet, Action = ChangeAction.CREATE }; var changeBatch = new ChangeBatch { Changes = new List <Change> { change1 } }; var recordsetRequest = new ChangeResourceRecordSetsRequest { HostedZoneId = zoneResponse.HostedZone.Id, ChangeBatch = changeBatch }; var recordsetResponse = r53Client.ChangeResourceRecordSets(recordsetRequest); var changeRequest = new GetChangeRequest { Id = recordsetResponse.ChangeInfo.Id }; Console.WriteLine(changeRequest); }
public static async Task <HostedZone> CreateAsync(Credentials credentials, string domainName) { var client = credentials.CreateClient(); var reference = AwsHelper.GenerateReferenceToken(); var zoneRequest = new CreateHostedZoneRequest { Name = domainName, CallerReference = reference }; var response = await client.CreateHostedZoneAsync(zoneRequest); await response.ChangeInfo.WaitForStatusAync(credentials); return(response.HostedZone); }
/// <summary> /// Create a new hosted zone. When you create a zone, its initial status is PENDING. This means that it is not yet available on all DNS servers. /// The status of the zone changes to INSYNC when the NS and SOA records are available on all Route 53 DNS servers. /// </summary> /// <param name="domain">The name of the domain</param> /// <param name="vpc">The VPC that you want your hosted zone to be associated with. By providing this parameter, your newly created hosted cannot be resolved anywhere other than the given VPC.</param> /// <param name="region">The region of your VPC</param> /// <param name="settings">The <see cref="Route53Settings"/> required to connect to Route53.</param> /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> public async Task <string> CreateHostedZone(string domain, string vpc, VPCRegion region, Route53Settings settings, CancellationToken cancellationToken = default(CancellationToken)) { if (String.IsNullOrEmpty(domain)) { throw new ArgumentNullException("domain"); } CreateHostedZoneRequest request = new CreateHostedZoneRequest(domain, ""); if (!String.IsNullOrEmpty(vpc)) { request.VPC = new VPC() { VPCId = vpc, VPCRegion = region }; } AmazonRoute53Client client = this.GetClient(settings); CreateHostedZoneResponse response = await client.CreateHostedZoneAsync(request); if (response.HttpStatusCode == HttpStatusCode.OK) { await this.WaitForChange(client, response.ChangeInfo.Id, 10000, 60); _Log.Verbose("Created hosted zone"); return(response.HostedZone.Id); } else { _Log.Error("Could not create hosted zone"); return(""); } }
public void TestRoute53() { var geoLocations = Client.ListGeoLocations(new ListGeoLocationsRequest()).GeoLocationDetailsList; Assert.IsNotNull(geoLocations); Assert.AreNotEqual(0, geoLocations.Count); CreateHostedZoneRequest createRequest = new CreateHostedZoneRequest { Name = ZONE_NAME, CallerReference = CALLER_REFERENCE, HostedZoneConfig = new HostedZoneConfig { Comment = COMMENT } }; // Create Hosted Zone var response = Client.CreateHostedZone(createRequest); createdZoneId = response.HostedZone.Id; createdZoneChangeId = response.ChangeInfo.Id; assertValidCreatedHostedZone(response.HostedZone); assertValidDelegationSet(response.DelegationSet); assertValidChangeInfo(response.ChangeInfo); Assert.IsNotNull(response.Location); // Get Hosted Zone GetHostedZoneRequest getRequest = new GetHostedZoneRequest { Id = createdZoneId }; var getHostedZoneResponse = Client.GetHostedZone(getRequest); assertValidDelegationSet(getHostedZoneResponse.DelegationSet); assertValidCreatedHostedZone(getHostedZoneResponse.HostedZone); // List Hosted Zones List <HostedZone> hostedZones = Client.ListHostedZones().HostedZones; Assert.IsTrue(hostedZones.Count > 0); foreach (HostedZone hostedZone in hostedZones) { Assert.IsNotNull(hostedZone.CallerReference); Assert.IsNotNull(hostedZone.Id); Assert.IsNotNull(hostedZone.Name); } // List Resource Record Sets ListResourceRecordSetsRequest listRequest = new ListResourceRecordSetsRequest { HostedZoneId = createdZoneId, MaxItems = "10" }; List <ResourceRecordSet> resourceRecordSets = Client.ListResourceRecordSets(listRequest).ResourceRecordSets; Assert.IsTrue(resourceRecordSets.Count > 0); ResourceRecordSet existingResourceRecordSet = resourceRecordSets[0]; foreach (ResourceRecordSet rrset in resourceRecordSets) { Assert.IsNotNull(rrset.Name); Assert.IsNotNull(rrset.Type); Assert.IsNotNull(rrset.TTL); Assert.IsTrue(rrset.ResourceRecords.Count > 0); } // Get Change ChangeInfo changeInfo = Client.GetChange(new GetChangeRequest { Id = createdZoneChangeId }).ChangeInfo; Assert.IsTrue(changeInfo.Id.EndsWith(createdZoneChangeId)); assertValidChangeInfo(changeInfo); // Change Resource Record Sets ResourceRecordSet newResourceRecordSet = new ResourceRecordSet { Name = ZONE_NAME, ResourceRecords = existingResourceRecordSet.ResourceRecords, TTL = existingResourceRecordSet.TTL + 100, Type = existingResourceRecordSet.Type, HealthCheckId = null }; changeInfo = Client.ChangeResourceRecordSets(new ChangeResourceRecordSetsRequest { HostedZoneId = createdZoneId, ChangeBatch = new ChangeBatch { Comment = COMMENT, Changes = new List <Change> { new Change { Action = "DELETE", ResourceRecordSet = existingResourceRecordSet }, new Change { Action = "CREATE", ResourceRecordSet = newResourceRecordSet } } } }).ChangeInfo; assertValidChangeInfo(changeInfo); // Delete Hosted Zone DeleteHostedZoneResult deleteHostedZoneResult = Client.DeleteHostedZone(new DeleteHostedZoneRequest { Id = createdZoneId }); assertValidChangeInfo(deleteHostedZoneResult.ChangeInfo); }
public void VPCTests() { var vpc1 = CreateVPC(); var vpc2 = CreateVPC(); try { CreateHostedZoneRequest createRequest = new CreateHostedZoneRequest { Name = ZONE_NAME, CallerReference = CALLER_REFERENCE, HostedZoneConfig = new HostedZoneConfig { Comment = COMMENT }, VPC = vpc1 }; createdZoneId = Client.CreateHostedZone(createRequest).HostedZone.Id; var hostedZoneInfo = Client.GetHostedZone(new GetHostedZoneRequest { Id = createdZoneId }); Assert.IsNotNull(hostedZoneInfo.VPCs); Assert.AreEqual(1, hostedZoneInfo.VPCs.Count); Assert.IsTrue(hostedZoneInfo.HostedZone.Config.PrivateZone); var changeInfo = Client.AssociateVPCWithHostedZone(new AssociateVPCWithHostedZoneRequest { VPC = vpc2, Comment = COMMENT, HostedZoneId = createdZoneId }).ChangeInfo; Assert.IsNotNull(changeInfo); Assert.IsNotNull(changeInfo.Comment); assertValidChangeInfo(changeInfo); hostedZoneInfo = Client.GetHostedZone(new GetHostedZoneRequest { Id = createdZoneId }); Assert.IsNotNull(hostedZoneInfo.VPCs); Assert.AreEqual(2, hostedZoneInfo.VPCs.Count); changeInfo = Client.DisassociateVPCFromHostedZone(new DisassociateVPCFromHostedZoneRequest { HostedZoneId = createdZoneId, VPC = vpc2 }).ChangeInfo; assertValidChangeInfo(changeInfo); hostedZoneInfo = Client.GetHostedZone(new GetHostedZoneRequest { Id = createdZoneId }); Assert.IsNotNull(hostedZoneInfo.VPCs); Assert.AreEqual(1, hostedZoneInfo.VPCs.Count); changeInfo = Client.DeleteHostedZone(new DeleteHostedZoneRequest { Id = createdZoneId }).ChangeInfo; assertValidChangeInfo(changeInfo); } finally { DeleteVPC(vpc1); DeleteVPC(vpc2); } }
public void DelegationSetTests() { List <string> createdSets = new List <string>(); var sets = Client.ListReusableDelegationSets(new ListReusableDelegationSetsRequest()); var setCount = sets.DelegationSets.Count; var callerReference = "DNSMigration" + DateTime.Now.ToFileTime(); var createResponse = Client.CreateReusableDelegationSet(new CreateReusableDelegationSetRequest { CallerReference = callerReference }); Assert.IsNotNull(createResponse.Location); var delegationSet = createResponse.DelegationSet; Assert.IsNotNull(delegationSet); Assert.IsNotNull(delegationSet.CallerReference); Assert.IsNotNull(delegationSet.Id); Assert.IsNotNull(delegationSet.NameServers); Assert.AreNotEqual(0, delegationSet.NameServers.Count); createdSets.Add(delegationSet.Id); sets = Client.ListReusableDelegationSets(new ListReusableDelegationSetsRequest()); Assert.AreEqual(setCount + 1, sets.DelegationSets.Count); CreateHostedZoneRequest createRequest = new CreateHostedZoneRequest { Name = ZONE_NAME, CallerReference = CALLER_REFERENCE, HostedZoneConfig = new HostedZoneConfig { Comment = COMMENT }, DelegationSetId = delegationSet.Id }; createdZoneId = Client.CreateHostedZone(createRequest).HostedZone.Id; var hostedZoneInfo = Client.GetHostedZone(new GetHostedZoneRequest { Id = createdZoneId }); Assert.IsNotNull(hostedZoneInfo.VPCs); Assert.IsFalse(hostedZoneInfo.HostedZone.Config.PrivateZone); Assert.AreEqual(delegationSet.Id, hostedZoneInfo.DelegationSet.Id); var hostedZones = Client.ListHostedZones(new ListHostedZonesRequest { DelegationSetId = delegationSet.Id }).HostedZones; Assert.AreEqual(1, hostedZones.Count); // add a second set callerReference = "DNSMigration" + DateTime.Now.ToFileTime(); createResponse = Client.CreateReusableDelegationSet(new CreateReusableDelegationSetRequest { CallerReference = callerReference }); delegationSet = createResponse.DelegationSet; createdSets.Add(delegationSet.Id); int totalSetCount = 0; string nextMarker = null; do { var response = Client.ListReusableDelegationSets(new ListReusableDelegationSetsRequest { MaxItems = "1", Marker = nextMarker }); totalSetCount += response.DelegationSets.Count; nextMarker = response.NextMarker; } while (!string.IsNullOrEmpty(nextMarker)); Assert.AreEqual(setCount + 2, totalSetCount); Client.DeleteHostedZone(new DeleteHostedZoneRequest { Id = createdZoneId }); createdZoneId = null; foreach (var setId in createdSets) { Client.DeleteReusableDelegationSet(new DeleteReusableDelegationSetRequest { Id = setId }); } sets = Client.ListReusableDelegationSets(new ListReusableDelegationSetsRequest()); Assert.AreEqual(setCount, sets.DelegationSets.Count); }
static void Main(string[] args) { const string awsId = "AKIAJBEJGQLMJAGQV6YQ"; const string awsKey = "lzM+9nJXLTNauQgz15SIyQD1QzWe/4+UcPzOEEPw"; const string domainName = "www.example.org"; //[1] Create an Amazon Route 53 client object var route53Client = AWSClientFactory.CreateAmazonRoute53Client(awsId, awsKey); //[2] Create a hosted zone var zoneRequest = new CreateHostedZoneRequest { Name = domainName, CallerReference = "my_change_request" }; var zoneResponse = route53Client.CreateHostedZone(zoneRequest); //[3] Create a resource record set change batch var recordSet = new ResourceRecordSet { Name = domainName, TTL = 60, Type = RRType.A, ResourceRecords = new List <ResourceRecord> { new ResourceRecord { Value = "192.0.2.235" } } }; var change1 = new Change { ResourceRecordSet = recordSet, Action = ChangeAction.CREATE }; var changeBatch = new ChangeBatch { Changes = new List <Change> { change1 } }; //[4] Update the zone's resource record sets var recordsetRequest = new ChangeResourceRecordSetsRequest { HostedZoneId = zoneResponse.HostedZone.Id, ChangeBatch = changeBatch }; var recordsetResponse = route53Client.ChangeResourceRecordSets(recordsetRequest); //[5] Monitor the change status var changeRequest = new GetChangeRequest { Id = recordsetResponse.ChangeInfo.Id }; while (route53Client.GetChange(changeRequest).ChangeInfo.Status == ChangeStatus.PENDING) { Console.WriteLine("Change is pending."); Thread.Sleep(15000); } Console.WriteLine("Change is complete."); Console.ReadKey(); }
public void VPCTests() { var vpc1 = CreateVPC(); var vpc2 = CreateVPC(); string createdZoneId = null; try { CreateHostedZoneRequest createRequest = new CreateHostedZoneRequest { Name = ZONE_NAME, CallerReference = CALLER_REFERENCE, HostedZoneConfig = new HostedZoneConfig { Comment = COMMENT }, VPC = vpc1 }; createdZoneId = UtilityMethods.WaitUntilSuccess <string>(() => Client.CreateHostedZoneAsync(createRequest).Result.HostedZone.Id ); var hostedZoneInfo = Client.GetHostedZoneAsync(new GetHostedZoneRequest { Id = createdZoneId }).Result; Assert.NotNull(hostedZoneInfo.VPCs); Assert.Equal(1, hostedZoneInfo.VPCs.Count); Assert.True(hostedZoneInfo.HostedZone.Config.PrivateZone); var changeInfo = Client.AssociateVPCWithHostedZoneAsync(new AssociateVPCWithHostedZoneRequest { VPC = vpc2, Comment = COMMENT, HostedZoneId = createdZoneId }).Result.ChangeInfo; Assert.NotNull(changeInfo); Assert.NotNull(changeInfo.Comment); assertValidChangeInfo(changeInfo); hostedZoneInfo = Client.GetHostedZoneAsync(new GetHostedZoneRequest { Id = createdZoneId }).Result; Assert.NotNull(hostedZoneInfo.VPCs); Assert.Equal(2, hostedZoneInfo.VPCs.Count); changeInfo = Client.DisassociateVPCFromHostedZoneAsync(new DisassociateVPCFromHostedZoneRequest { HostedZoneId = createdZoneId, VPC = vpc2 }).Result.ChangeInfo; assertValidChangeInfo(changeInfo); hostedZoneInfo = Client.GetHostedZoneAsync(new GetHostedZoneRequest { Id = createdZoneId }).Result; Assert.NotNull(hostedZoneInfo.VPCs); Assert.Equal(1, hostedZoneInfo.VPCs.Count); changeInfo = Client.DeleteHostedZoneAsync(new DeleteHostedZoneRequest { Id = createdZoneId }).Result.ChangeInfo; assertValidChangeInfo(changeInfo); } finally { DeleteVPC(vpc1); DeleteVPC(vpc2); DeleteHostedZone(createdZoneId); } }
public virtual Task <CreateHostedZoneResponse> CreateHostedZoneAsync(CreateHostedZoneRequest request, CancellationToken cancellationToken = default(CancellationToken)) { throw new NotImplementedException(); }
public static void Route53CreateAdd(string[] args) { #region Route53CreateAdd string domainName = "www.example.org"; IAmazonRoute53 route53Client = new AmazonRoute53Client(); CreateHostedZoneRequest zoneRequest = new CreateHostedZoneRequest { Name = domainName, CallerReference = "my_change_request" }; CreateHostedZoneResponse zoneResponse = route53Client.CreateHostedZone(zoneRequest); ResourceRecordSet recordSet = new ResourceRecordSet { Name = domainName, TTL = 60, Type = RRType.A, ResourceRecords = new List <ResourceRecord> { new ResourceRecord { Value = "192.0.2.235" } } }; Change change1 = new Change { ResourceRecordSet = recordSet, Action = ChangeAction.CREATE }; ChangeBatch changeBatch = new ChangeBatch { Changes = new List <Change> { change1 } }; ChangeResourceRecordSetsRequest recordsetRequest = new ChangeResourceRecordSetsRequest { HostedZoneId = zoneResponse.HostedZone.Id, ChangeBatch = changeBatch }; ChangeResourceRecordSetsResponse recordsetResponse = route53Client.ChangeResourceRecordSets(recordsetRequest); GetChangeRequest changeRequest = new GetChangeRequest { Id = recordsetResponse.ChangeInfo.Id }; while (route53Client.GetChange(changeRequest).ChangeInfo.Status == ChangeStatus.PENDING) { Console.WriteLine("Change is pending."); Thread.Sleep(TimeSpan.FromSeconds(15)); } #endregion Console.WriteLine("Change is complete."); Console.ReadKey(); }