Amazon.ElasticBeanstalk.AmazonElasticBeanstalkClient.SwapEnvironmentCNAMEsAsync C# (CSharp) Method

SwapEnvironmentCNAMEsAsync() public method

Initiates the asynchronous execution of the SwapEnvironmentCNAMEs operation.
public SwapEnvironmentCNAMEsAsync ( SwapEnvironmentCNAMEsRequest request, System cancellationToken = default(CancellationToken) ) : Task
request Amazon.ElasticBeanstalk.Model.SwapEnvironmentCNAMEsRequest Container for the necessary parameters to execute the SwapEnvironmentCNAMEs operation.
cancellationToken System /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. ///
return Task
        public Task<SwapEnvironmentCNAMEsResponse> SwapEnvironmentCNAMEsAsync(SwapEnvironmentCNAMEsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var marshaller = new SwapEnvironmentCNAMEsRequestMarshaller();
            var unmarshaller = SwapEnvironmentCNAMEsResponseUnmarshaller.Instance;

            return InvokeAsync<SwapEnvironmentCNAMEsRequest,SwapEnvironmentCNAMEsResponse>(request, marshaller, 
                unmarshaller, cancellationToken);
        }

Usage Example

        public async Task SwapEnvironmentCnamesAsync()
        {
            using (var ebClient = new AmazonElasticBeanstalkClient(creds, configurationProvider.RegionEndpoint))
            {
                loggerProvider.GetLogger().Debug("Swapping Environment CNAMEs...");
                var describeEnvironmentsResponse = await ebClient.DescribeEnvironmentsAsync();
                var current = describeEnvironmentsResponse.Environments
                    .SingleOrDefault(env =>
                        env?.CNAME != null && env.CNAME.StartsWith(currentCNamePrefix, StringComparison.CurrentCultureIgnoreCase) &&
                        env.Status == EnvironmentStatus.Ready);
                var next = describeEnvironmentsResponse.Environments
                    .SingleOrDefault(env =>
                        env?.CNAME != null && env.CNAME.StartsWith(nextCNamePrefix, StringComparison.CurrentCultureIgnoreCase) &&
                        env.Status == EnvironmentStatus.Ready);

                if (current == null)
                {
                    var environments = JsonConvert.SerializeObject(describeEnvironmentsResponse.Environments);
                    var msg = $"Error state: On environment CNAME swap, could not find environment with CNAME: {currentCNamePrefix} in a READY state. Environments: {environments}";
                    loggerProvider.GetLogger().Error(msg);
                    throw new ElasticBeanstalkDeployerException(msg);
                }
                if (next == null)
                {
                    var environments = JsonConvert.SerializeObject(describeEnvironmentsResponse.Environments);
                    var msg = $"Error state: On environment CNAME swap, could not find environment with CNAME: {nextCNamePrefix} in a READY state. Environments: {environments}";
                    loggerProvider.GetLogger().Error(msg);
                    throw new ElasticBeanstalkDeployerException(msg);
                }
                var swapEnvironmentCnamesRequest = new SwapEnvironmentCNAMEsRequest
                {
                    DestinationEnvironmentId = next.EnvironmentId,
                    SourceEnvironmentId = current.EnvironmentId,
                };

                await ebClient.SwapEnvironmentCNAMEsAsync(swapEnvironmentCnamesRequest);
                await WaitForCnameSwapToCompleteAsync(next.EnvironmentId, next.CNAME, current.EnvironmentId, current.CNAME);
            }
        }
AmazonElasticBeanstalkClient