public async Task SnapshotRDS(Instant snapshotTime) { using AmazonRDSClient rdsClient = new AmazonRDSClient(); var date = snapshotTime.InZone(TimeExtensions.EasternTimeZone).LocalDateTime.Date; var dateString = date.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture); var random = Guid.NewGuid().ToString().Substring(0, 1); string snapName = "AdminSnap-" + dateString + "-" + random; CreateDBSnapshotRequest request = new CreateDBSnapshotRequest(snapName, _instanceName); await rdsClient.CreateDBSnapshotAsync(request, CancellationToken.None); }
public async Task SnapshotRDS(Instant snapshotTime) { using (AmazonRDSClient rdsClient = new AmazonRDSClient()) { var date = snapshotTime.InZone(DateTimeZoneProviders.Tzdb.GetZoneOrNull("America/New_York")).LocalDateTime.Date; var dateString = date.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture); var random = Guid.NewGuid().ToString().Substring(0, 1); string snapName = "AdminSnap-" + dateString + "-" + random; CreateDBSnapshotRequest request = new CreateDBSnapshotRequest(snapName, _instanceName); await rdsClient.CreateDBSnapshotAsync(request, CancellationToken.None); } }
public async Task <string> TakeSnapshot() { var rdsInstance = await GetRDSInstance(); var instanceId = rdsInstance.DBInstanceIdentifier; //don't wrap in using block or it will be disposed before you are done with it. var rdsClient = new AmazonRDSClient( CredentiaslManager.GetCredential(environment), AwsCommon.GetRetionEndpoint(region)); var request = new CreateDBSnapshotRequest($"{environment}-{DateTime.Today.ToShortDateString()}", instanceId); //don't await this long running task var response = await rdsClient.CreateDBSnapshotAsync(request); return(response.DBSnapshot.DBInstanceIdentifier); }