@@ -13,6 +13,7 @@ type PublicSubnetRequest struct {
1313 VPC * ec2.Vpc
1414 InternetGateway * ec2.InternetGateway
1515 CIDR string
16+ Region string
1617 AvailabilityZone string
1718 Name string
1819 AddNatGateway bool
@@ -89,6 +90,11 @@ func (r PublicSubnetRequest) Create(ctx *pulumi.Context, mCtx *mc.Context) (*Pub
8990 if err != nil {
9091 return nil , err
9192 }
93+ // Manage endpoints
94+ err = endpoints (ctx , r .Name , r .Region , r .VPC , sn , rt )
95+ if err != nil {
96+ return nil , err
97+ }
9298 return & PublicSubnetResources {
9399 Subnet : sn ,
94100 RouteTable : rt ,
@@ -97,3 +103,60 @@ func (r PublicSubnetRequest) Create(ctx *pulumi.Context, mCtx *mc.Context) (*Pub
97103 NatGatewayEip : nEip },
98104 nil
99105}
106+
107+ func endpoints (ctx * pulumi.Context , name , region string ,
108+ vpc * ec2.Vpc , sn * ec2.Subnet , rt * ec2.RouteTable ) error {
109+ sg , err := ec2 .NewSecurityGroup (ctx ,
110+ fmt .Sprintf ("%s-%s" , "sg-endpoints" , name ),
111+ & ec2.SecurityGroupArgs {
112+ VpcId : vpc .ID (),
113+ Ingress : ec2.SecurityGroupIngressArray {
114+ & ec2.SecurityGroupIngressArgs {
115+ Protocol : pulumi .String ("tcp" ),
116+ FromPort : pulumi .Int (443 ),
117+ ToPort : pulumi .Int (443 ),
118+ CidrBlocks : pulumi.StringArray {vpc .CidrBlock },
119+ },
120+ },
121+ })
122+ if err != nil {
123+ return err
124+ }
125+ _ , err = ec2 .NewVpcEndpoint (ctx ,
126+ fmt .Sprintf ("%s-%s" , "endpoint-s3" , name ),
127+ & ec2.VpcEndpointArgs {
128+ VpcId : vpc .ID (),
129+ ServiceName : pulumi .Sprintf ("com.amazonaws.%s.s3" , region ),
130+ VpcEndpointType : pulumi .String ("Gateway" ),
131+ RouteTableIds : pulumi.StringArray {rt .ID ()},
132+ SecurityGroupIds : pulumi.StringArray {sg .ID ()},
133+ })
134+ if err != nil {
135+ return err
136+ }
137+ _ , err = ec2 .NewVpcEndpoint (ctx ,
138+ fmt .Sprintf ("%s-%s" , "endpoint-ecr" , name ),
139+ & ec2.VpcEndpointArgs {
140+ VpcId : vpc .ID (),
141+ ServiceName : pulumi .Sprintf ("com.amazonaws.%s.ecr.dkr" , region ),
142+ VpcEndpointType : pulumi .String ("Interface" ),
143+ SubnetIds : pulumi.StringArray {sn .ID ()},
144+ SecurityGroupIds : pulumi.StringArray {sg .ID ()},
145+ })
146+ if err != nil {
147+ return err
148+ }
149+ _ , err = ec2 .NewVpcEndpoint (ctx ,
150+ fmt .Sprintf ("%s-%s" , "endpoint-ssm" , name ),
151+ & ec2.VpcEndpointArgs {
152+ VpcId : vpc .ID (),
153+ ServiceName : pulumi .Sprintf ("com.amazonaws.%s.ssm" , region ),
154+ VpcEndpointType : pulumi .String ("Interface" ),
155+ SubnetIds : pulumi.StringArray {sn .ID ()},
156+ SecurityGroupIds : pulumi.StringArray {sg .ID ()},
157+ })
158+ if err != nil {
159+ return err
160+ }
161+ return nil
162+ }
0 commit comments