Add web & mongodb service
This commit is contained in:
160
aws-ecs-ec2/services.yaml
Normal file
160
aws-ecs-ec2/services.yaml
Normal file
@@ -0,0 +1,160 @@
|
||||
AWSTemplateFormatVersion: '2010-09-09'
|
||||
Description: Deploy robot shop services to a given ECS cluster
|
||||
Parameters:
|
||||
StackName:
|
||||
Type: String
|
||||
Default: production
|
||||
Description: The name of the parent cluster stack that you created. Necessary
|
||||
to locate and reference resources created by that stack.
|
||||
WebServiceName:
|
||||
Type: String
|
||||
Default: web
|
||||
Description: The web service name
|
||||
MongoDbServiceName:
|
||||
Type: String
|
||||
Default: mongodb
|
||||
Description: The mongodb service name
|
||||
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: 8080
|
||||
Description: What port number the application inside the docker container is binding to
|
||||
MongoDbContainerPort:
|
||||
Type: Number
|
||||
Default: 27017
|
||||
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
|
||||
Path:
|
||||
Type: String
|
||||
Default: "*"
|
||||
Description: A path on the public load balancer that this service
|
||||
should be connected to. Use * to send all load balancer
|
||||
traffic to this service.
|
||||
Priority:
|
||||
Type: Number
|
||||
Default: 1
|
||||
Description: The priority for the routing rule added to the load balancer.
|
||||
This only applies if your have multiple services which have been
|
||||
assigned to different paths on the load balancer.
|
||||
DesiredCount:
|
||||
Type: Number
|
||||
Default: 2
|
||||
Description: How many copies of the service task to run
|
||||
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
|
||||
|
||||
Conditions:
|
||||
HasCustomRole: !Not [ !Equals [!Ref 'Role', ''] ]
|
||||
|
||||
Resources:
|
||||
# MongoDB service
|
||||
MongoDbTaskDefinition:
|
||||
Type: AWS::ECS::TaskDefinition
|
||||
Properties:
|
||||
Family: !Ref 'MongoDbServiceName'
|
||||
Cpu: !Ref 'ContainerCpu'
|
||||
Memory: !Ref 'ContainerMemory'
|
||||
TaskRoleArn:
|
||||
Fn::If:
|
||||
- 'HasCustomRole'
|
||||
- !Ref 'Role'
|
||||
- !Ref "AWS::NoValue"
|
||||
ContainerDefinitions:
|
||||
- Name: !Ref 'MongoDbServiceName'
|
||||
Cpu: !Ref 'ContainerCpu'
|
||||
Memory: !Ref 'ContainerMemory'
|
||||
Image: robotshop/rs-mongodb
|
||||
PortMappings:
|
||||
- ContainerPort: !Ref 'MongoDbContainerPort'
|
||||
LogConfiguration:
|
||||
LogDriver: json-file
|
||||
MongoDbService:
|
||||
Type: AWS::ECS::Service
|
||||
DependsOn: LoadBalancerRule
|
||||
Properties:
|
||||
ServiceName: !Ref 'MongoDbServiceName'
|
||||
Cluster:
|
||||
Fn::ImportValue:
|
||||
!Join [':', [!Ref 'StackName', 'ClusterName']]
|
||||
DesiredCount: 1
|
||||
TaskDefinition: !Ref 'MongoDbTaskDefinition'
|
||||
|
||||
WebTaskDefinition:
|
||||
Type: AWS::ECS::TaskDefinition
|
||||
Properties:
|
||||
Family: !Ref 'WebServiceName'
|
||||
Cpu: !Ref 'ContainerCpu'
|
||||
Memory: !Ref 'ContainerMemory'
|
||||
TaskRoleArn:
|
||||
Fn::If:
|
||||
- 'HasCustomRole'
|
||||
- !Ref 'Role'
|
||||
- !Ref "AWS::NoValue"
|
||||
ContainerDefinitions:
|
||||
- Name: !Ref 'WebServiceName'
|
||||
Cpu: !Ref 'ContainerCpu'
|
||||
Memory: !Ref 'ContainerMemory'
|
||||
Image: robotshop/rs-web
|
||||
PortMappings:
|
||||
- ContainerPort: !Ref 'ContainerPort'
|
||||
LogConfiguration:
|
||||
LogDriver: json-file
|
||||
WebService:
|
||||
Type: AWS::ECS::Service
|
||||
DependsOn: LoadBalancerRule
|
||||
Properties:
|
||||
ServiceName: !Ref 'WebServiceName'
|
||||
Cluster:
|
||||
Fn::ImportValue:
|
||||
!Join [':', [!Ref 'StackName', 'ClusterName']]
|
||||
DeploymentConfiguration:
|
||||
MaximumPercent: 200
|
||||
MinimumHealthyPercent: 75
|
||||
DesiredCount: !Ref 'DesiredCount'
|
||||
TaskDefinition: !Ref 'WebTaskDefinition'
|
||||
LoadBalancers:
|
||||
- ContainerName: !Ref 'WebServiceName'
|
||||
ContainerPort: !Ref 'ContainerPort'
|
||||
TargetGroupArn: !Ref 'WebTargetGroup'
|
||||
WebTargetGroup:
|
||||
Type: AWS::ElasticLoadBalancingV2::TargetGroup
|
||||
Properties:
|
||||
HealthCheckIntervalSeconds: 6
|
||||
HealthCheckPath: /
|
||||
HealthCheckProtocol: HTTP
|
||||
HealthCheckTimeoutSeconds: 5
|
||||
HealthyThresholdCount: 2
|
||||
Name: !Ref 'WebServiceName'
|
||||
Port: 8080
|
||||
Protocol: HTTP
|
||||
UnhealthyThresholdCount: 2
|
||||
VpcId:
|
||||
Fn::ImportValue:
|
||||
!Join [':', [!Ref 'StackName', 'VPCId']]
|
||||
LoadBalancerRule:
|
||||
Type: AWS::ElasticLoadBalancingV2::ListenerRule
|
||||
Properties:
|
||||
Actions:
|
||||
- TargetGroupArn: !Ref 'WebTargetGroup'
|
||||
Type: 'forward'
|
||||
Conditions:
|
||||
- Field: path-pattern
|
||||
Values: [!Ref 'Path']
|
||||
ListenerArn:
|
||||
Fn::ImportValue:
|
||||
!Join [':', [!Ref 'StackName', 'PrivateListener']]
|
||||
Priority: !Ref 'Priority'
|
8
aws-ecs-fargate/README.md
Normal file
8
aws-ecs-fargate/README.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# Robot-Shop on AWS ECS with Fargate
|
||||
|
||||
## Prerequisites
|
||||
|
||||
The `ecs-cli` tool has to be on your `$PATH`.
|
||||
|
||||
[Read more on installing it](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_CLI_installation.html)
|
||||
|
Reference in New Issue
Block a user