| 
									
										
										
										
											2021-04-20 20:46:37 +00:00
										 |  |  | AWSTemplateFormatVersion: 2010-09-09
 | 
					
						
							|  |  |  | Description: >-
 | 
					
						
							|  |  |  |   AWS Fargate cluster that can span public and private subnets. Supports public
 | 
					
						
							|  |  |  |   facing load balancers, private internal load balancers, and both internal and
 | 
					
						
							|  |  |  |   external service discovery namespaces.
 | 
					
						
							|  |  |  | Parameters:
 | 
					
						
							|  |  |  |   EnvironmentName:
 | 
					
						
							|  |  |  |     Type: String
 | 
					
						
							|  |  |  |     Default: development
 | 
					
						
							|  |  |  |     Description: 'Your deployment environment: DEV, QA , PROD'
 | 
					
						
							|  |  |  |   ServiceName:
 | 
					
						
							|  |  |  |     Type: String
 | 
					
						
							|  |  |  |     Default: example
 | 
					
						
							|  |  |  |     Description: A name for the service
 | 
					
						
							|  |  |  |   ImageUrl:
 | 
					
						
							|  |  |  |     Type: String
 | 
					
						
							|  |  |  |     Default: nginx
 | 
					
						
							|  |  |  |     Description: >-
 | 
					
						
							|  |  |  |       The url of a docker image that contains the application process that will
 | 
					
						
							|  |  |  |       handle the traffic for this service
 | 
					
						
							|  |  |  |   ContainerPort:
 | 
					
						
							|  |  |  |     Type: Number
 | 
					
						
							|  |  |  |     Default: 80
 | 
					
						
							|  |  |  |     Description: What port number the application inside the docker container is binding to
 | 
					
						
							|  |  |  |   ContainerCpu:
 | 
					
						
							|  |  |  |     Type: Number
 | 
					
						
							|  |  |  |     Default: 1024
 | 
					
						
							|  |  |  |     Description: How much CPU to give the container. 1024 is 1 CPU
 | 
					
						
							|  |  |  |   ContainerMemory:
 | 
					
						
							|  |  |  |     Type: Number
 | 
					
						
							|  |  |  |     Default: 2048
 | 
					
						
							|  |  |  |     Description: How much memory in megabytes to give the container
 | 
					
						
							| 
									
										
										
										
											2022-02-01 02:31:20 +00:00
										 |  |  |   BUILDGUID:
 | 
					
						
							| 
									
										
										
										
											2021-04-20 20:46:37 +00:00
										 |  |  |     Type: String
 | 
					
						
							|  |  |  |     Default: ''
 | 
					
						
							|  |  |  |   Command:
 | 
					
						
							|  |  |  |     Type: String
 | 
					
						
							|  |  |  |     Default: 'ls'
 | 
					
						
							|  |  |  |   EntryPoint:
 | 
					
						
							|  |  |  |     Type: String
 | 
					
						
							|  |  |  |     Default: '/bin/sh'
 | 
					
						
							|  |  |  |   WorkingDirectory:
 | 
					
						
							|  |  |  |     Type: String
 | 
					
						
							|  |  |  |     Default: '/efsdata/'
 | 
					
						
							|  |  |  |   Role:
 | 
					
						
							|  |  |  |     Type: String
 | 
					
						
							|  |  |  |     Default: ''
 | 
					
						
							|  |  |  |     Description: >-
 | 
					
						
							|  |  |  |       (Optional) An IAM role to give the service's containers if the code within
 | 
					
						
							| 
									
										
										
										
											2022-02-01 02:31:20 +00:00
										 |  |  |       needs to access other AWS resources
 | 
					
						
							| 
									
										
										
										
											2021-04-20 20:46:37 +00:00
										 |  |  |   EFSMountDirectory:
 | 
					
						
							|  |  |  |     Type: String
 | 
					
						
							|  |  |  |     Default: '/efsdata'
 | 
					
						
							| 
									
										
										
										
											2021-05-23 04:08:40 +00:00
										 |  |  |   # template secrets p1 - input
 | 
					
						
							| 
									
										
										
										
											2021-04-20 20:46:37 +00:00
										 |  |  | Mappings:
 | 
					
						
							|  |  |  |   SubnetConfig:
 | 
					
						
							|  |  |  |     VPC:
 | 
					
						
							|  |  |  |       CIDR: 10.0.0.0/16
 | 
					
						
							|  |  |  |     PublicOne:
 | 
					
						
							|  |  |  |       CIDR: 10.0.0.0/24
 | 
					
						
							|  |  |  |     PublicTwo:
 | 
					
						
							|  |  |  |       CIDR: 10.0.1.0/24
 | 
					
						
							|  |  |  | Conditions:
 | 
					
						
							|  |  |  |   HasCustomRole: !Not
 | 
					
						
							|  |  |  |     - !Equals
 | 
					
						
							|  |  |  |       - Ref: Role
 | 
					
						
							|  |  |  |       - ''
 | 
					
						
							|  |  |  | Resources:
 | 
					
						
							|  |  |  |   LogGroup:
 | 
					
						
							|  |  |  |     Type: 'AWS::Logs::LogGroup'
 | 
					
						
							|  |  |  |     Properties:
 | 
					
						
							|  |  |  |       LogGroupName: !Ref ServiceName
 | 
					
						
							|  |  |  |     Metadata:
 | 
					
						
							|  |  |  |       'AWS::CloudFormation::Designer':
 | 
					
						
							|  |  |  |         id: aece53ae-b82d-4267-bc16-ed964b05db27
 | 
					
						
							|  |  |  |   SubscriptionFilter:
 | 
					
						
							|  |  |  |     Type: 'AWS::Logs::SubscriptionFilter'
 | 
					
						
							|  |  |  |     Properties:
 | 
					
						
							|  |  |  |       FilterPattern: ''
 | 
					
						
							|  |  |  |       RoleArn:
 | 
					
						
							|  |  |  |         'Fn::ImportValue': !Sub '${EnvironmentName}:CloudWatchIAMRole'
 | 
					
						
							|  |  |  |       LogGroupName: !Ref ServiceName
 | 
					
						
							|  |  |  |       DestinationArn:
 | 
					
						
							|  |  |  |         'Fn::GetAtt':
 | 
					
						
							|  |  |  |           - KinesisStream
 | 
					
						
							|  |  |  |           - Arn
 | 
					
						
							|  |  |  |     Metadata:
 | 
					
						
							|  |  |  |       'AWS::CloudFormation::Designer':
 | 
					
						
							|  |  |  |         id: 7f809e91-9e5d-4678-98c1-c5085956c480
 | 
					
						
							|  |  |  |     DependsOn:
 | 
					
						
							|  |  |  |       - LogGroup
 | 
					
						
							|  |  |  |       - KinesisStream
 | 
					
						
							|  |  |  |   KinesisStream:
 | 
					
						
							|  |  |  |     Type: 'AWS::Kinesis::Stream'
 | 
					
						
							|  |  |  |     Properties:
 | 
					
						
							|  |  |  |       Name: !Ref ServiceName
 | 
					
						
							|  |  |  |       ShardCount: 1
 | 
					
						
							|  |  |  |     Metadata:
 | 
					
						
							|  |  |  |       'AWS::CloudFormation::Designer':
 | 
					
						
							|  |  |  |         id: c6f18447-b879-4696-8873-f981b2cedd2b
 | 
					
						
							| 
									
										
										
										
											2022-02-01 02:31:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-23 04:08:40 +00:00
										 |  |  |   # template secrets p2 - secret
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-20 20:46:37 +00:00
										 |  |  |   TaskDefinition:
 | 
					
						
							|  |  |  |     Type: 'AWS::ECS::TaskDefinition'
 | 
					
						
							|  |  |  |     Properties:
 | 
					
						
							|  |  |  |       Family: !Ref ServiceName
 | 
					
						
							|  |  |  |       Cpu: !Ref ContainerCpu
 | 
					
						
							|  |  |  |       Memory: !Ref ContainerMemory
 | 
					
						
							|  |  |  |       NetworkMode: awsvpc
 | 
					
						
							|  |  |  |       Volumes:
 | 
					
						
							|  |  |  |         - Name: efs-data
 | 
					
						
							|  |  |  |           EFSVolumeConfiguration:
 | 
					
						
							|  |  |  |             FilesystemId:
 | 
					
						
							|  |  |  |               'Fn::ImportValue': !Sub '${EnvironmentName}:EfsFileStorageId'
 | 
					
						
							|  |  |  |             TransitEncryption: ENABLED
 | 
					
						
							|  |  |  |       RequiresCompatibilities:
 | 
					
						
							|  |  |  |         - FARGATE
 | 
					
						
							|  |  |  |       ExecutionRoleArn:
 | 
					
						
							|  |  |  |         'Fn::ImportValue': !Sub '${EnvironmentName}:ECSTaskExecutionRole'
 | 
					
						
							|  |  |  |       TaskRoleArn:
 | 
					
						
							|  |  |  |         'Fn::If':
 | 
					
						
							|  |  |  |           - HasCustomRole
 | 
					
						
							|  |  |  |           - !Ref Role
 | 
					
						
							|  |  |  |           - !Ref 'AWS::NoValue'
 | 
					
						
							|  |  |  |       ContainerDefinitions:
 | 
					
						
							|  |  |  |         - Name: !Ref ServiceName
 | 
					
						
							|  |  |  |           Cpu: !Ref ContainerCpu
 | 
					
						
							|  |  |  |           Memory: !Ref ContainerMemory
 | 
					
						
							|  |  |  |           Image: !Ref ImageUrl
 | 
					
						
							|  |  |  |           EntryPoint:
 | 
					
						
							|  |  |  |             Fn::Split:
 | 
					
						
							|  |  |  |                 - ","
 | 
					
						
							|  |  |  |                 - !Ref EntryPoint
 | 
					
						
							|  |  |  |           Command:
 | 
					
						
							|  |  |  |             Fn::Split:
 | 
					
						
							|  |  |  |                 - ","
 | 
					
						
							|  |  |  |                 - !Ref Command
 | 
					
						
							|  |  |  |           WorkingDirectory: !Ref WorkingDirectory
 | 
					
						
							|  |  |  |           Environment:
 | 
					
						
							|  |  |  |             - Name: ALLOW_EMPTY_PASSWORD
 | 
					
						
							|  |  |  |               Value: 'yes'
 | 
					
						
							| 
									
										
										
										
											2021-05-23 04:08:40 +00:00
										 |  |  |             # template - env vars
 | 
					
						
							| 
									
										
										
										
											2021-04-20 20:46:37 +00:00
										 |  |  |           MountPoints:
 | 
					
						
							|  |  |  |             - SourceVolume: efs-data
 | 
					
						
							|  |  |  |               ContainerPath: !Ref EFSMountDirectory
 | 
					
						
							|  |  |  |               ReadOnly: false
 | 
					
						
							|  |  |  |           Secrets:
 | 
					
						
							| 
									
										
										
										
											2021-05-23 04:08:40 +00:00
										 |  |  |             # template secrets p3 - container def
 | 
					
						
							| 
									
										
										
										
											2021-04-20 20:46:37 +00:00
										 |  |  |           LogConfiguration:
 | 
					
						
							|  |  |  |             LogDriver: awslogs
 | 
					
						
							|  |  |  |             Options:
 | 
					
						
							|  |  |  |               awslogs-group: !Ref ServiceName
 | 
					
						
							|  |  |  |               awslogs-region: !Ref 'AWS::Region'
 | 
					
						
							|  |  |  |               awslogs-stream-prefix: !Ref ServiceName
 | 
					
						
							|  |  |  |     Metadata:
 | 
					
						
							|  |  |  |       'AWS::CloudFormation::Designer':
 | 
					
						
							|  |  |  |         id: dabb0116-abe0-48a6-a8af-cf9111c879a5
 | 
					
						
							|  |  |  |     DependsOn:
 | 
					
						
							|  |  |  |       - LogGroup
 | 
					
						
							|  |  |  | Metadata:
 | 
					
						
							|  |  |  |   'AWS::CloudFormation::Designer':
 | 
					
						
							|  |  |  |     dabb0116-abe0-48a6-a8af-cf9111c879a5:
 | 
					
						
							|  |  |  |       size:
 | 
					
						
							|  |  |  |         width: 60
 | 
					
						
							|  |  |  |         height: 60
 | 
					
						
							|  |  |  |       position:
 | 
					
						
							|  |  |  |         x: 270
 | 
					
						
							|  |  |  |         'y': 90
 | 
					
						
							|  |  |  |       z: 1
 | 
					
						
							|  |  |  |       embeds: []
 | 
					
						
							|  |  |  |       dependson:
 | 
					
						
							|  |  |  |         - aece53ae-b82d-4267-bc16-ed964b05db27
 | 
					
						
							|  |  |  |     c6f18447-b879-4696-8873-f981b2cedd2b:
 | 
					
						
							|  |  |  |       size:
 | 
					
						
							|  |  |  |         width: 60
 | 
					
						
							|  |  |  |         height: 60
 | 
					
						
							|  |  |  |       position:
 | 
					
						
							|  |  |  |         x: 270
 | 
					
						
							|  |  |  |         'y': 210
 | 
					
						
							|  |  |  |       z: 1
 | 
					
						
							|  |  |  |       embeds: []
 | 
					
						
							|  |  |  |     7f809e91-9e5d-4678-98c1-c5085956c480:
 | 
					
						
							|  |  |  |       size:
 | 
					
						
							|  |  |  |         width: 60
 | 
					
						
							|  |  |  |         height: 60
 | 
					
						
							|  |  |  |       position:
 | 
					
						
							|  |  |  |         x: 60
 | 
					
						
							|  |  |  |         'y': 300
 | 
					
						
							|  |  |  |       z: 1
 | 
					
						
							|  |  |  |       embeds: []
 | 
					
						
							|  |  |  |       dependson:
 | 
					
						
							|  |  |  |         - aece53ae-b82d-4267-bc16-ed964b05db27
 | 
					
						
							|  |  |  |         - c6f18447-b879-4696-8873-f981b2cedd2b
 | 
					
						
							|  |  |  |     aece53ae-b82d-4267-bc16-ed964b05db27:
 | 
					
						
							|  |  |  |       size:
 | 
					
						
							|  |  |  |         width: 150
 | 
					
						
							|  |  |  |         height: 150
 | 
					
						
							|  |  |  |       position:
 | 
					
						
							|  |  |  |         x: 60
 | 
					
						
							|  |  |  |         'y': 90
 | 
					
						
							|  |  |  |       z: 1
 | 
					
						
							|  |  |  |       embeds: []
 | 
					
						
							|  |  |  |     4d2da56c-3643-46b8-aaee-e46e19f95fcc:
 | 
					
						
							|  |  |  |       source:
 | 
					
						
							|  |  |  |         id: 7f809e91-9e5d-4678-98c1-c5085956c480
 | 
					
						
							|  |  |  |       target:
 | 
					
						
							|  |  |  |         id: aece53ae-b82d-4267-bc16-ed964b05db27
 | 
					
						
							|  |  |  |       z: 11
 | 
					
						
							|  |  |  |     14eb957b-f094-4653-93c4-77b2f851953c:
 | 
					
						
							|  |  |  |       source:
 | 
					
						
							|  |  |  |         id: 7f809e91-9e5d-4678-98c1-c5085956c480
 | 
					
						
							|  |  |  |       target:
 | 
					
						
							|  |  |  |         id: c6f18447-b879-4696-8873-f981b2cedd2b
 | 
					
						
							|  |  |  |       z: 12
 | 
					
						
							|  |  |  |     85c57444-e5bb-4230-bc85-e545cd4558f6:
 | 
					
						
							|  |  |  |       source:
 | 
					
						
							|  |  |  |         id: dabb0116-abe0-48a6-a8af-cf9111c879a5
 | 
					
						
							|  |  |  |       target:
 | 
					
						
							|  |  |  |         id: aece53ae-b82d-4267-bc16-ed964b05db27
 | 
					
						
							|  |  |  |       z: 13
 |