in cli/aws_orbit/remote_files/cdk/foundation.py [0:0]
def _create_vpc_endpoints(self) -> None:
vpc_gateway_endpoints = {
"s3": ec2.GatewayVpcEndpointAwsService.S3,
"dynamodb": ec2.GatewayVpcEndpointAwsService.DYNAMODB,
}
vpc_interface_endpoints = {
"cloudwatch_endpoint": ec2.InterfaceVpcEndpointAwsService.CLOUDWATCH,
"cloudwatch_logs_endpoint": ec2.InterfaceVpcEndpointAwsService.CLOUDWATCH_LOGS,
"cloudwatch_events": ec2.InterfaceVpcEndpointAwsService.CLOUDWATCH_EVENTS,
"ecr_docker_endpoint": ec2.InterfaceVpcEndpointAwsService.ECR_DOCKER,
"ecr_endpoint": ec2.InterfaceVpcEndpointAwsService.ECR,
"ec2_endpoint": ec2.InterfaceVpcEndpointAwsService.EC2,
"ecs": ec2.InterfaceVpcEndpointAwsService.ECS,
"ecs_agent": ec2.InterfaceVpcEndpointAwsService.ECS_AGENT,
"ecs_telemetry": ec2.InterfaceVpcEndpointAwsService.ECS_TELEMETRY,
"git_endpoint": ec2.InterfaceVpcEndpointAwsService.CODECOMMIT_GIT,
"ssm_endpoint": ec2.InterfaceVpcEndpointAwsService.SSM,
"ssm_messages_endpoint": ec2.InterfaceVpcEndpointAwsService.SSM_MESSAGES,
"secrets_endpoint": ec2.InterfaceVpcEndpointAwsService.SECRETS_MANAGER,
"kms_endpoint": ec2.InterfaceVpcEndpointAwsService.KMS,
"sagemaker_endpoint": ec2.InterfaceVpcEndpointAwsService.SAGEMAKER_API,
"sagemaker_runtime": ec2.InterfaceVpcEndpointAwsService.SAGEMAKER_RUNTIME,
"notebook_endpoint": ec2.InterfaceVpcEndpointAwsService.SAGEMAKER_NOTEBOOK,
"athena_endpoint": ec2.InterfaceVpcEndpointAwsService("athena"),
"glue_endpoint": ec2.InterfaceVpcEndpointAwsService("glue"),
"sqs": ec2.InterfaceVpcEndpointAwsService.SQS,
"step_function_endpoint": ec2.InterfaceVpcEndpointAwsService("states"),
"sns_endpoint": ec2.InterfaceVpcEndpointAwsService.SNS,
"kinesis_firehose_endpoint": ec2.InterfaceVpcEndpointAwsService("kinesis-firehose"),
"api_gateway": ec2.InterfaceVpcEndpointAwsService.APIGATEWAY,
"sts_endpoint": ec2.InterfaceVpcEndpointAwsService.STS,
"efs": ec2.InterfaceVpcEndpointAwsService.ELASTIC_FILESYSTEM,
"elb": ec2.InterfaceVpcEndpointAwsService.ELASTIC_LOAD_BALANCING,
"autoscaling": ec2.InterfaceVpcEndpointAwsService("autoscaling"),
"cloudformation_endpoint": ec2.InterfaceVpcEndpointAwsService("cloudformation"),
"codebuild_endpoint": ec2.InterfaceVpcEndpointAwsService("codebuild"),
"emr-containers": ec2.InterfaceVpcEndpointAwsService("emr-containers"),
"databrew": ec2.InterfaceVpcEndpointAwsService("databrew"),
}
for name, gateway_vpc_endpoint_service in vpc_gateway_endpoints.items():
self.vpc.add_gateway_endpoint(
id=name,
service=gateway_vpc_endpoint_service,
subnets=[
ec2.SubnetSelection(subnets=self.nodes_subnets.subnets),
],
)
for name, interface_service in vpc_interface_endpoints.items():
self.vpc.add_interface_endpoint(
id=name,
service=interface_service,
subnets=ec2.SubnetSelection(subnets=self.nodes_subnets.subnets),
private_dns_enabled=True,
security_groups=[cast(ec2.ISecurityGroup, self._vpc_security_group)],
)
# Adding CodeArtifact VPC endpoints
self.vpc.add_interface_endpoint(
id="code_artifact_repo_endpoint",
service=cast(
ec2.IInterfaceVpcEndpointService, ec2.InterfaceVpcEndpointAwsService("codeartifact.repositories")
),
subnets=ec2.SubnetSelection(subnets=self.nodes_subnets.subnets),
private_dns_enabled=False,
security_groups=[cast(ec2.ISecurityGroup, self._vpc_security_group)],
)
self.vpc.add_interface_endpoint(
id="code_artifact_api_endpoint",
service=cast(ec2.IInterfaceVpcEndpointService, ec2.InterfaceVpcEndpointAwsService("codeartifact.api")),
subnets=ec2.SubnetSelection(subnets=self.nodes_subnets.subnets),
private_dns_enabled=False,
security_groups=[cast(ec2.ISecurityGroup, self._vpc_security_group)],
)
# Adding Lambda and Redshift endpoints with CDK low level APIs
endpoint_url_template = "com.amazonaws.{}.{}"
ec2.CfnVPCEndpoint(
self,
"redshift_endpoint",
vpc_endpoint_type="Interface",
service_name=endpoint_url_template.format(self.region, "redshift"),
vpc_id=self.vpc.vpc_id,
security_group_ids=[self._vpc_security_group.security_group_id],
subnet_ids=self.nodes_subnets.subnet_ids,
private_dns_enabled=True,
)
ec2.CfnVPCEndpoint(
self,
"lambda_endpoint",
vpc_endpoint_type="Interface",
service_name=endpoint_url_template.format(self.region, "lambda"),
vpc_id=self.vpc.vpc_id,
security_group_ids=[self._vpc_security_group.security_group_id],
subnet_ids=self.nodes_subnets.subnet_ids,
private_dns_enabled=True,
)