|
1 | | -resource "aws_acm_certificate" "{{ endpoint_name|slugify }}" { |
2 | | - domain_name = "{{ endpoint_url }}" |
| 1 | +resource "aws_acm_certificate" "{{ endpoint.key|slugify }}" { |
| 2 | + domain_name = "{{ endpoint.url }}" |
3 | 3 | validation_method = "DNS" |
4 | 4 | } |
5 | 5 |
|
6 | | -resource "aws_route53_record" "{{ endpoint_name|slugify }}_acm_validation" { |
| 6 | +resource "aws_route53_record" "{{ endpoint.key|slugify }}_acm_validation" { |
7 | 7 | zone_id = data.aws_route53_zone.main.zone_id |
8 | | - name = tolist(aws_acm_certificate.{{ endpoint_name|slugify }}.domain_validation_options)[0].resource_record_name |
9 | | - type = tolist(aws_acm_certificate.{{ endpoint_name|slugify }}.domain_validation_options)[0].resource_record_type |
| 8 | + name = tolist(aws_acm_certificate.{{ endpoint.key|slugify }}.domain_validation_options)[0].resource_record_name |
| 9 | + type = tolist(aws_acm_certificate.{{ endpoint.key|slugify }}.domain_validation_options)[0].resource_record_type |
10 | 10 | ttl = 60 |
11 | | - records = [tolist(aws_acm_certificate.{{ endpoint_name|slugify }}.domain_validation_options)[0].resource_record_value] |
| 11 | + records = [tolist(aws_acm_certificate.{{ endpoint.key|slugify }}.domain_validation_options)[0].resource_record_value] |
12 | 12 | } |
13 | 13 |
|
14 | 14 | # API Gateway |
15 | | -resource "aws_apigatewayv2_api" "{{ endpoint_name|slugify }}_gateway" { |
16 | | - name = "{{ site.identifier }}-api" |
| 15 | +resource "aws_apigatewayv2_api" "{{ endpoint.key|slugify }}_gateway" { |
| 16 | + name = "{{ site.identifier }}-{{ endpoint.key|slugify }}-api" |
17 | 17 | protocol_type = "HTTP" |
18 | 18 | } |
19 | 19 |
|
20 | | -resource "aws_apigatewayv2_route" "{{ endpoint_name|slugify }}_application" { |
21 | | - api_id = aws_apigatewayv2_api.{{ endpoint_name|slugify }}_gateway.id |
| 20 | +resource "aws_apigatewayv2_route" "{{ endpoint.key|slugify }}_application" { |
| 21 | + api_id = aws_apigatewayv2_api.{{ endpoint.key|slugify }}_gateway.id |
22 | 22 | route_key = "$default" |
23 | 23 | } |
24 | 24 |
|
25 | | -resource "aws_apigatewayv2_deployment" "{{ endpoint_name|slugify }}_default" { |
26 | | - api_id = aws_apigatewayv2_api.{{ endpoint_name|slugify }}_gateway.id |
| 25 | +resource "aws_apigatewayv2_deployment" "{{ endpoint.key|slugify }}_default" { |
| 26 | + api_id = aws_apigatewayv2_api.{{ endpoint.key|slugify }}_gateway.id |
27 | 27 | description = "Stage for default release" |
28 | 28 |
|
29 | | - triggers = { |
30 | | - redeployment = sha1(join(",", list( |
31 | | - {% for component in site.public_api_components %} |
32 | | - module.{{ component.name }}.component_version, |
33 | | - {% endfor %} |
34 | | - ))) |
35 | | - } |
36 | | - |
37 | 29 | lifecycle { |
38 | 30 | create_before_destroy = true |
39 | 31 | } |
40 | 32 |
|
41 | 33 | depends_on = [ |
42 | | - {% for component in site.public_api_components %} |
| 34 | + {% for component in endpoint.components %} |
43 | 35 | module.{{ component.name }}, |
44 | 36 | {% endfor %} |
45 | 37 | ] |
46 | 38 | } |
47 | 39 |
|
48 | | -resource "aws_apigatewayv2_stage" "{{ endpoint_name|slugify }}_default" { |
| 40 | +resource "aws_apigatewayv2_stage" "{{ endpoint.key|slugify }}_default" { |
49 | 41 | name = "$default" |
50 | | - api_id = aws_apigatewayv2_api.{{ endpoint_name|slugify }}_gateway.id |
51 | | - deployment_id = aws_apigatewayv2_deployment.{{ endpoint_name|slugify }}_default.id |
52 | | - |
53 | | - depends_on = [aws_apigatewayv2_deployment.{{ endpoint_name|slugify }}_default] |
| 42 | + description = "Stage for default release" |
| 43 | + api_id = aws_apigatewayv2_api.{{ endpoint.key|slugify }}_gateway.id |
| 44 | + deployment_id = aws_apigatewayv2_deployment.{{ endpoint.key|slugify }}_default.id |
| 45 | + auto_deploy = true |
54 | 46 | } |
55 | 47 |
|
56 | 48 | # Route53 mappings |
57 | | -resource "aws_apigatewayv2_domain_name" "{{ endpoint_name|slugify }}" { |
58 | | - domain_name = "{{ endpoint_url }}" |
| 49 | +resource "aws_apigatewayv2_domain_name" "{{ endpoint.key|slugify }}" { |
| 50 | + domain_name = "{{ endpoint.url }}" |
59 | 51 |
|
60 | 52 | domain_name_configuration { |
61 | | - certificate_arn = aws_acm_certificate.{{ endpoint_name|slugify }}.arn |
| 53 | + certificate_arn = aws_acm_certificate.{{ endpoint.key|slugify }}.arn |
62 | 54 | endpoint_type = "REGIONAL" |
63 | 55 | security_policy = "TLS_1_2" |
64 | 56 | } |
65 | 57 | } |
66 | 58 |
|
67 | | -resource "aws_route53_record" "{{ endpoint_name|slugify }}" { |
68 | | - name = aws_apigatewayv2_domain_name.{{ endpoint_name|slugify }}.domain_name |
| 59 | +resource "aws_route53_record" "{{ endpoint.key|slugify }}" { |
| 60 | + name = aws_apigatewayv2_domain_name.{{ endpoint.key|slugify }}.domain_name |
69 | 61 | type = "A" |
70 | 62 | zone_id = data.aws_route53_zone.main.id |
71 | 63 |
|
72 | 64 | alias { |
73 | | - name = aws_apigatewayv2_domain_name.{{ endpoint_name|slugify }}.domain_name_configuration[0].target_domain_name |
74 | | - zone_id = aws_apigatewayv2_domain_name.{{ endpoint_name|slugify }}.domain_name_configuration[0].hosted_zone_id |
| 65 | + name = aws_apigatewayv2_domain_name.{{ endpoint.key|slugify }}.domain_name_configuration[0].target_domain_name |
| 66 | + zone_id = aws_apigatewayv2_domain_name.{{ endpoint.key|slugify }}.domain_name_configuration[0].hosted_zone_id |
75 | 67 | evaluate_target_health = false |
76 | 68 | } |
77 | 69 | } |
78 | 70 |
|
79 | | -resource "aws_apigatewayv2_api_mapping" "{{ endpoint_name|slugify }}" { |
80 | | - api_id = aws_apigatewayv2_api.{{ endpoint_name|slugify }}_gateway.id |
81 | | - stage = aws_apigatewayv2_stage.{{ endpoint_name|slugify }}_default.id |
82 | | - domain_name = "{{ endpoint_url }}" |
| 71 | +resource "aws_apigatewayv2_api_mapping" "{{ endpoint.key|slugify }}" { |
| 72 | + api_id = aws_apigatewayv2_api.{{ endpoint.key|slugify }}_gateway.id |
| 73 | + stage = aws_apigatewayv2_stage.{{ endpoint.key|slugify }}_default.id |
| 74 | + domain_name = "{{ endpoint.url }}" |
83 | 75 | } |
0 commit comments