Template de Cloudformation para crear outbound endpoints y rules en Route53

Hola!

Les comparto un template de Cloudformation que tuve que escribir para crear outbound endpoints y sus correspondientes rules. Todo esto corresponde al servicio Route53.

Hago uso de !ImportValue, una funcionalidad excelente que me permite importar de otros stacks que estén en la misma región algunos valores que necesito para crear el mío.

Seguramente necesita pulirse algunos detalles, como agregar parámetros para las direcciones IP y así evitar que estén harcodeadas. Espero que les resulte útil y aguardo sus sugerencias.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
---
AWSTemplateFormatVersion: '2010-09-09'
Description: 'Template used to create outbound endpoints and rules to reach 
  external DNS servers'
Parameters:
Resources:
  OutboundEndpoint:
    Type: "AWS::Route53Resolver::ResolverEndpoint"
    Properties:
      Direction: Outbound
      IpAddresses:
        - 
          SubnetId: !ImportValue 'VPCStack-SubnetA'
        - 
          SubnetId: !ImportValue 'VPCStack-SubnetB'
      Name: OutboundEndpoint
      SecurityGroupIds: 
        - Ref: OutboundSecurityGroup
      Tags:
        - 
          Key: 'Name'
          Value: 'OutboundEndpoint'
  OutboundSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Allow outbound traffic
      SecurityGroupEgress:
        - IpProtocol: udp
          FromPort: '0'
          ToPort: '53'
          CidrIp: '0.0.0.0/0'
      VpcId: !ImportValue 'VPCStack-VpcId'
      Tags:
        -
          Key: 'Name'
          Value: 'OutboundSecurityGroup'
  OutboundResolverRules:
    Type: "AWS::Route53Resolver::ResolverRule"
    Properties:
      DomainName: 'domain.net'
      Name: 'DomainNetRules'
      ResolverEndpointId: !GetAtt OutboundEndpoint.ResolverEndpointId
      RuleType: 'FORWARD'
      Tags: 
        -
          Key: 'Name'
          Value: 'DomainNetRules'
      TargetIps: 
        - 
          Ip: ''
          Port: '53'
        - 
          Ip: ''
          Port: '53'
    DependsOn: OutboundEndpoint
  ResolverVPC:
    Type: "AWS::Route53Resolver::ResolverRuleAssociation"
    Properties:
      Name: ResolverRuleDNS
      ResolverRuleId: !GetAtt OutboundResolverRules.ResolverRuleId
      VPCId: !ImportValue 'VPCStack-VpcId'
    DependsOn: OutboundResolverRules
Outputs:
    ResolverEndpointId:
      Description: Resolver endpoint ID
      Value: !GetAtt OutboundEndpoint.ResolverEndpointId
      Export:
        Name: !Sub '${AWS::StackName}-ResolverEndpointId'
    ResolverRuleId:
      Description: Resolver rule ID
      Value: !GetAtt OutboundResolverRules.ResolverRuleId
      Export:
        Name: !Sub '${AWS::StackName}-ResolverRuleId'
...

Referencias: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53resolver-resolverendpoint.html

Comentarios

Entradas más populares de este blog

Zabbix en dos días (día 1)

OpenVPN para todos :D

Sincronizar con rsync