internal virtual RequestCertificateResponse RequestCertificate(RequestCertificateRequest request) { var marshaller = new RequestCertificateRequestMarshaller(); var unmarshaller = RequestCertificateResponseUnmarshaller.Instance; return(Invoke <RequestCertificateRequest, RequestCertificateResponse>(request, marshaller, unmarshaller)); }
/// <summary> /// Requests an ACM Certificate for use with other AWS services. To request an ACM Certificate, /// you must specify the fully qualified domain name (FQDN) for your site in the <code>DomainName</code> /// parameter. You can also specify additional FQDNs in the <code>SubjectAlternativeNames</code> /// parameter if users can reach your site by using other names. /// /// /// <para> /// For each domain name you specify, email is sent to the domain owner to request approval /// to issue the certificate. Email is sent to three registered contact addresses in the /// WHOIS database and to five common system administration addresses formed from the /// <code>DomainName</code> you enter or the optional <code>ValidationDomain</code> parameter. /// For more information, see <a href="http://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate.html">Validate /// Domain Ownership</a>. /// </para> /// /// <para> /// After receiving approval from the domain owner, the ACM Certificate is issued. For /// more information, see the <a href="http://docs.aws.amazon.com/acm/latest/userguide/">AWS /// Certificate Manager User Guide</a>. /// </para> /// </summary> /// <param name="domainName"> Fully qualified domain name (FQDN), such as www.example.com, of the site that you want to secure with an ACM Certificate. Use an asterisk (*) to create a wildcard certificate that protects several sites in the same domain. For example, *.example.com protects www.example.com, site.example.com, and images.example.com. The maximum length of a DNS name is 253 octets. The name is made up of multiple labels separated by periods. No label can be longer than 63 octets. Consider the following examples: <code>(63 octets).(63 octets).(63 octets).(61 octets)</code> is legal because the total length is 253 octets (63+1+63+1+63+1+61) and no label exceeds 63 octets. <code>(64 octets).(63 octets).(63 octets).(61 octets)</code> is not legal because the total length exceeds 253 octets (64+1+63+1+63+1+61) and the first label exceeds 63 octets. <code>(63 octets).(63 octets).(63 octets).(62 octets)</code> is not legal because the total length of the DNS name (63+1+63+1+63+1+62) exceeds 253 octets. </param> /// <param name="cancellationToken"> /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// </param> /// /// <returns>The response from the RequestCertificate service method, as returned by CertificateManager.</returns> /// <exception cref="Amazon.CertificateManager.Model.InvalidDomainValidationOptionsException"> /// One or more values in the <a>DomainValidationOption</a> structure is incorrect. /// </exception> /// <exception cref="Amazon.CertificateManager.Model.LimitExceededException"> /// An ACM limit has been exceeded. For example, you may have input more domains than /// are allowed or you've requested too many certificates for your account. See the exception /// message returned by ACM to determine which limit you have violated. For more information /// about ACM limits, see the <a href="http://docs.aws.amazon.com/acm/latest/userguide/acm-limits.html">Limits</a> /// topic. /// </exception> /// <seealso href="http://docs.aws.amazon.com/goto/WebAPI/acm-2015-12-08/RequestCertificate">REST API Reference for RequestCertificate Operation</seealso> public virtual Task <RequestCertificateResponse> RequestCertificateAsync(string domainName, System.Threading.CancellationToken cancellationToken = default(CancellationToken)) { var request = new RequestCertificateRequest(); request.DomainName = domainName; return(RequestCertificateAsync(request, cancellationToken)); }
/// <summary> /// Requests an ACM Certificate for use with other AWS services. To request an ACM Certificate, /// you must specify the fully qualified domain name (FQDN) for your site. You can also /// specify additional FQDNs if users can reach your site by using other names. For each /// domain name you specify, email is sent to the domain owner to request approval to /// issue the certificate. After receiving approval from the domain owner, the ACM Certificate /// is issued. For more information, see the <a href="http://docs.aws.amazon.com/acm/latest/userguide/overview.html"> /// AWS Certificate Manager User Guide </a>. /// </summary> /// <param name="domainName"> Fully qualified domain name (FQDN), such as www.example.com, of the site you want to secure with an ACM Certificate. Use an asterisk (*) to create a wildcard certificate that protects several sites in the same domain. For example, *.example.com protects www.example.com, site.example.com, and images.example.com. </param> /// /// <returns>The response from the RequestCertificate service method, as returned by CertificateManager.</returns> /// <exception cref="Amazon.CertificateManager.Model.InvalidDomainValidationOptionsException"> /// One or more values in the <a>DomainValidationOption</a> structure is incorrect. /// </exception> /// <exception cref="Amazon.CertificateManager.Model.LimitExceededException"> /// An ACM limit has been exceeded. For example, you may have input more domains than /// are allowed or you've requested too many certificates for your account. See the exception /// message returned by ACM to determine which limit you have violated. For more information /// about ACM limits, see the <a href="http://docs.aws.amazon.com/acm/latest/userguide/acm-limits.html">Limits</a> /// topic. /// </exception> public RequestCertificateResponse RequestCertificate(string domainName) { var request = new RequestCertificateRequest(); request.DomainName = domainName; return(RequestCertificate(request)); }
/// <summary> /// Initiates the asynchronous execution of the RequestCertificate operation. /// </summary> /// /// <param name="request">Container for the necessary parameters to execute the RequestCertificate operation.</param> /// <param name="cancellationToken"> /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// </param> /// <returns>The task object representing the asynchronous operation.</returns> /// <seealso href="http://docs.aws.amazon.com/goto/WebAPI/acm-2015-12-08/RequestCertificate">REST API Reference for RequestCertificate Operation</seealso> public virtual Task <RequestCertificateResponse> RequestCertificateAsync(RequestCertificateRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken)) { var marshaller = new RequestCertificateRequestMarshaller(); var unmarshaller = RequestCertificateResponseUnmarshaller.Instance; return(InvokeAsync <RequestCertificateRequest, RequestCertificateResponse>(request, marshaller, unmarshaller, cancellationToken)); }
/// <summary> /// Initiates the asynchronous execution of the RequestCertificate operation. /// </summary> /// /// <param name="request">Container for the necessary parameters to execute the RequestCertificate operation.</param> /// <param name="cancellationToken"> /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// </param> /// <returns>The task object representing the asynchronous operation.</returns> /// <seealso href="http://docs.aws.amazon.com/goto/WebAPI/acm-2015-12-08/RequestCertificate">REST API Reference for RequestCertificate Operation</seealso> public virtual Task<RequestCertificateResponse> RequestCertificateAsync(RequestCertificateRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken)) { var options = new InvokeOptions(); options.RequestMarshaller = RequestCertificateRequestMarshaller.Instance; options.ResponseUnmarshaller = RequestCertificateResponseUnmarshaller.Instance; return InvokeAsync<RequestCertificateResponse>(request, options, cancellationToken); }
internal virtual RequestCertificateResponse RequestCertificate(RequestCertificateRequest request) { var options = new InvokeOptions(); options.RequestMarshaller = RequestCertificateRequestMarshaller.Instance; options.ResponseUnmarshaller = RequestCertificateResponseUnmarshaller.Instance; return Invoke<RequestCertificateResponse>(request, options); }
/// <summary> /// Initiates the asynchronous execution of the RequestCertificate operation. /// </summary> /// /// <param name="request">Container for the necessary parameters to execute the RequestCertificate operation on AmazonCertificateManagerClient.</param> /// <param name="callback">An AsyncCallback delegate that is invoked when the operation completes.</param> /// <param name="state">A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback /// procedure using the AsyncState property.</param> /// /// <returns>An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndRequestCertificate /// operation.</returns> public IAsyncResult BeginRequestCertificate(RequestCertificateRequest request, AsyncCallback callback, object state) { var marshaller = new RequestCertificateRequestMarshaller(); var unmarshaller = RequestCertificateResponseUnmarshaller.Instance; return(BeginInvoke <RequestCertificateRequest>(request, marshaller, unmarshaller, callback, state)); }
public async Task <Response?> Create() { var props = Request.ResourceProperties; IAmazonCertificateManager acmClient = await acmFactory.Create(props.CreationRoleArn); IAmazonRoute53 route53Client = await route53Factory.Create(props.ValidationRoleArn); var request = new RequestCertificateRequest { DomainName = props.DomainName, ValidationMethod = props.ValidationMethod }; if (props.CertificateAuthorityArn != null) { request.CertificateAuthorityArn = props.CertificateAuthorityArn; } if (props.DomainValidationOptions != null) { request.DomainValidationOptions = props.DomainValidationOptions; } if (props.Options != null) { request.Options = props.Options; } if (props.SubjectAlternativeNames != null) { request.SubjectAlternativeNames = props.SubjectAlternativeNames; } var requestCertificateResponse = await acmClient.RequestCertificateAsync(request); Console.WriteLine($"Got Request Certificate Response: {JsonSerializer.Serialize(requestCertificateResponse)}"); PhysicalResourceId = requestCertificateResponse.CertificateArn; var describeCertificateRequest = new DescribeCertificateRequest { CertificateArn = PhysicalResourceId }; var tasks = new List <Task>(); Thread.Sleep(500); bool foundValidationOptions = false; List <DomainValidation> validationOptions = new List <DomainValidation>(); // For some reason, the domain validation options aren't immediately populated. while (!foundValidationOptions) { var describeCertificateResponse = await acmClient.DescribeCertificateAsync(describeCertificateRequest); Console.WriteLine($"Got Describe Certificate Response: {JsonSerializer.Serialize(describeCertificateResponse)}"); validationOptions = describeCertificateResponse.Certificate.DomainValidationOptions; foundValidationOptions = true; if (validationOptions.Count() == 0) { foundValidationOptions = false; } foreach (var option in validationOptions) { if (option.ResourceRecord?.Name == null) { foundValidationOptions = false; } } Thread.Sleep(1000); } if (props.Tags != null) { tasks.Add(Task.Run(async delegate { var addTagsResponse = await acmClient.AddTagsToCertificateAsync(new AddTagsToCertificateRequest { Tags = props.Tags, CertificateArn = PhysicalResourceId, }); Console.WriteLine($"Got Add Tags Response: {JsonSerializer.Serialize(addTagsResponse)}"); })); } // add DNS validation records if applicable var names = new HashSet <string>(); var changes = new List <Change>(); if (props.ValidationMethod == ValidationMethod.DNS) { foreach (var option in validationOptions) { var query = from name in names where name == option.ResourceRecord.Name select name; if (query.Count() != 0) { continue; } names.Add(option.ResourceRecord.Name); changes.Add(new Change { Action = ChangeAction.UPSERT, ResourceRecordSet = new ResourceRecordSet { Name = option.ResourceRecord.Name, Type = new RRType(option.ResourceRecord.Type.Value), SetIdentifier = PhysicalResourceId, Weight = 1, TTL = 60, ResourceRecords = new List <ResourceRecord> { new ResourceRecord { Value = option.ResourceRecord.Value } } } }); } tasks.Add( Task.Run(async delegate { var changeRecordsResponse = await route53Client.ChangeResourceRecordSetsAsync(new ChangeResourceRecordSetsRequest { HostedZoneId = props.HostedZoneId, ChangeBatch = new ChangeBatch { Changes = changes } }); Console.WriteLine($"Got Change Record Sets Response: {JsonSerializer.Serialize(changeRecordsResponse)}"); }) ); } Task.WaitAll(tasks.ToArray()); Request.PhysicalResourceId = PhysicalResourceId; Request.RequestType = RequestType.Wait; return(await Wait()); }