From c25588e7ebcede6a82bc5c6f6a706d0ed5055d2e Mon Sep 17 00:00:00 2001 From: Maxim Ivaschenko Date: Tue, 14 Nov 2017 20:46:38 +0200 Subject: [PATCH] Adding support for AWS Regional API Endpoints --- aws/resource_aws_api_gateway_domain_name.go | 42 ++++++++++++++++++++- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/aws/resource_aws_api_gateway_domain_name.go b/aws/resource_aws_api_gateway_domain_name.go index be90c40ec53e..9e58999ff704 100644 --- a/aws/resource_aws_api_gateway_domain_name.go +++ b/aws/resource_aws_api_gateway_domain_name.go @@ -41,7 +41,12 @@ func resourceAwsApiGatewayDomainName() *schema.Resource { "certificate_name": { Type: schema.TypeString, Optional: true, - ConflictsWith: []string{"certificate_arn"}, + ConflictsWith: []string{"certificate_arn", "regional_certificate_arn", "regional_certificate_name"}, + }, + "regional_certificate_name": { + Type: schema.TypeString, + Optional: true, + ConflictsWith: []string{"certificate_arn", "regional_certificate_name", "certificate_name"}, }, "certificate_private_key": { @@ -52,6 +57,15 @@ func resourceAwsApiGatewayDomainName() *schema.Resource { ConflictsWith: []string{"certificate_arn"}, }, + "endpoint_configuration": { + Type: schema.TypeSet, + //Type: schema.TypeSet, + //Optional: true, + Elem: &schema.Schema{Type: schema.TypeString}, + Optional: true, + ForceNew: true, + }, + "domain_name": { Type: schema.TypeString, Required: true, @@ -61,7 +75,12 @@ func resourceAwsApiGatewayDomainName() *schema.Resource { "certificate_arn": { Type: schema.TypeString, Optional: true, - ConflictsWith: []string{"certificate_body", "certificate_chain", "certificate_name", "certificate_private_key"}, + ConflictsWith: []string{"certificate_body", "certificate_chain", "certificate_name", "certificate_private_key", "regional_certificate_arn"}, + }, + "regional_certificate_arn": { + Type: schema.TypeString, + Optional: true, + ConflictsWith: []string{"certificate_body", "certificate_chain", "certificate_name", "certificate_private_key", "regional_certificate_name"}, }, "cloudfront_domain_name": { @@ -90,14 +109,26 @@ func resourceAwsApiGatewayDomainNameCreate(d *schema.ResourceData, meta interfac DomainName: aws.String(d.Get("domain_name").(string)), } + if v, ok := d.GetOk("endpoint_configuration"); ok { + params.EndpointConfiguration = expandEndpoints(v.(*schema.Set)) + } + if v, ok := d.GetOk("certificate_arn"); ok { params.CertificateArn = aws.String(v.(string)) } + if v, ok := d.GetOk("regional_certificate_arn"); ok { + params.RegionalCertificateArn = aws.String(v.(string)) + } + if v, ok := d.GetOk("certificate_name"); ok { params.CertificateName = aws.String(v.(string)) } + if v, ok := d.GetOk("regional_certificate_name"); ok { + params.RegionalCertificateName = aws.String(v.(string)) + } + if v, ok := d.GetOk("certificate_body"); ok { params.CertificateBody = aws.String(v.(string)) } @@ -208,3 +239,10 @@ func resourceAwsApiGatewayDomainNameDelete(d *schema.ResourceData, meta interfac return resource.NonRetryableError(err) }) } + +func expandEndpoints(as *schema.Set) *apigateway.EndpointConfiguration { + s := as.List() + var endpoints apigateway.EndpointConfiguration + endpoints.Types = expandStringList(s) + return &endpoints +}