From d532dba464045b9cf42d72312ff902b6f81ed541 Mon Sep 17 00:00:00 2001 From: Frostebite Date: Sun, 7 Feb 2021 17:57:25 +0000 Subject: [PATCH] Cloud Formation Designer Configuration --- action/task-def-formation.yml | 200 +++++++++++++++++++++------------- 1 file changed, 127 insertions(+), 73 deletions(-) diff --git a/action/task-def-formation.yml b/action/task-def-formation.yml index 6108c42d..467adc5a 100644 --- a/action/task-def-formation.yml +++ b/action/task-def-formation.yml @@ -1,132 +1,120 @@ -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. +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" - + 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 - + 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: 256 Description: How much CPU to give the container. 1024 is 1 CPU - ContainerMemory: Type: Number Default: 512 Description: How much memory in megabytes to give the container - Prefix: Type: String - Default: "test" - + Default: test Role: Type: String - Default: "" - Description: (Optional) An IAM role to give the service's containers if the code within needs to - access other AWS resources like S3 buckets, DynamoDB tables, etc + Default: '' + Description: >- + (Optional) An IAM role to give the service's containers if the code within + needs to access other AWS resources like S3 buckets, DynamoDB tables, etc EFSMountPath: Type: String - Default: "/usr/share/nginx/html" - - - - + Default: /usr/share/nginx/html Mappings: - # Hard values for the subnet masks. These masks define - # the range of internal IP addresses that can be assigned. - # The VPC can have all IP's from 10.0.0.0 to 10.0.255.255 - # There are four subnets which cover the ranges: - # - # 10.0.0.0 - 10.0.0.255 - # 10.0.1.0 - 10.0.1.255 - # 10.0.2.0 - 10.0.2.255 - # 10.0.3.0 - 10.0.3.255 - SubnetConfig: VPC: - CIDR: '10.0.0.0/16' + CIDR: 10.0.0.0/16 PublicOne: - CIDR: '10.0.0.0/24' + CIDR: 10.0.0.0/24 PublicTwo: - CIDR: '10.0.1.0/24' - # A log group for storing the stdout logs from this service's containers + CIDR: 10.0.1.0/24 Conditions: - HasCustomRole: !Not [ !Equals [!Ref 'Role', ''] ] - + HasCustomRole: !Not + - !Equals + - Ref: Role + - '' Resources: - - LogGroup: - Type: AWS::Logs::LogGroup + Type: 'AWS::Logs::LogGroup' Properties: - LogGroupName: !Ref 'ServiceName' - + LogGroupName: !Ref ServiceName + Metadata: + 'AWS::CloudFormation::Designer': + id: aece53ae-b82d-4267-bc16-ed964b05db27 SubscriptionFilter: - Type: AWS::Logs::SubscriptionFilter + Type: 'AWS::Logs::SubscriptionFilter' Properties: FilterPattern: '' RoleArn: - Fn::ImportValue: !Sub ${EnvironmentName}:CloudWatchIAMRole - LogGroupName: !Ref 'ServiceName' + 'Fn::ImportValue': !Sub '${EnvironmentName}:CloudWatchIAMRole' + LogGroupName: !Ref ServiceName DestinationArn: - Fn::GetAtt: - - "KinesisStream" - - "Arn" - + 'Fn::GetAtt': + - KinesisStream + - Arn + Metadata: + 'AWS::CloudFormation::Designer': + id: 7f809e91-9e5d-4678-98c1-c5085956c480 + DependsOn: + - LogGroup + - KinesisStream KinesisStream: - Type: AWS::Kinesis::Stream + Type: 'AWS::Kinesis::Stream' Properties: - Name: !Ref 'ServiceName' + Name: !Ref ServiceName ShardCount: 1 - # The task definition. This is a simple metadata description of what - # container to run, and what resource requirements it has. + Metadata: + 'AWS::CloudFormation::Designer': + id: c6f18447-b879-4696-8873-f981b2cedd2b TaskDefinition: - Type: AWS::ECS::TaskDefinition + Type: 'AWS::ECS::TaskDefinition' Properties: - Family: !Ref 'ServiceName' - Cpu: !Ref 'ContainerCpu' - Memory: !Ref 'ContainerMemory' + Family: !Ref ServiceName + Cpu: !Ref ContainerCpu + Memory: !Ref ContainerMemory NetworkMode: awsvpc Volumes: - Name: efs-data EFSVolumeConfiguration: FilesystemId: - Fn::ImportValue: !Sub ${EnvironmentName}:EfsFileStorageId + 'Fn::ImportValue': !Sub '${EnvironmentName}:EfsFileStorageId' TransitEncryption: ENABLED RequiresCompatibilities: - FARGATE ExecutionRoleArn: - Fn::ImportValue: !Sub ${EnvironmentName}:ECSTaskExecutionRole + 'Fn::ImportValue': !Sub '${EnvironmentName}:ECSTaskExecutionRole' TaskRoleArn: - Fn::If: - - 'HasCustomRole' - - !Ref 'Role' - - !Ref "AWS::NoValue" + 'Fn::If': + - HasCustomRole + - !Ref Role + - !Ref 'AWS::NoValue' ContainerDefinitions: - - Name: !Ref 'ServiceName' - Cpu: !Ref 'ContainerCpu' - Memory: !Ref 'ContainerMemory' - Image: !Ref 'ImageUrl' + - Name: !Ref ServiceName + Cpu: !Ref ContainerCpu + Memory: !Ref ContainerMemory + Image: !Ref ImageUrl Environment: - Name: ALLOW_EMPTY_PASSWORD Value: 'yes' @@ -135,8 +123,74 @@ Resources: ContainerPath: !Ref EFSMountPath ReadOnly: false LogConfiguration: - LogDriver: 'awslogs' + LogDriver: awslogs Options: - awslogs-group: !Ref 'ServiceName' + awslogs-group: !Ref ServiceName awslogs-region: !Ref 'AWS::Region' - awslogs-stream-prefix: !Ref 'ServiceName' + 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