-
Notifications
You must be signed in to change notification settings - Fork 24
/
hello-world-fargate.yml
106 lines (97 loc) · 2.82 KB
/
hello-world-fargate.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
AWSTemplateFormatVersion: 2010-09-09
Description: Starter template for ECS
Parameters:
VpcStack:
Type: String
Description: Name of VPC stack to build off of
Default: vpc-stack
EcsClusterStack:
Type: String
Description: Name of ECS Cluster stack to build off of
Default: ecs-cluster-stack
Image:
Type: String
Description: URI of image you would like to use
Resources:
HelloWorldTargetGroup:
Type: AWS::ElasticLoadBalancingV2::TargetGroup
Properties:
HealthCheckEnabled: true
HealthCheckPort: 8080
HealthCheckProtocol: HTTP
Port: 8080
Protocol: HTTP
TargetType: ip
VpcId:
Fn::ImportValue: !Sub ${VpcStack}-vpc-id
HelloWorldListener:
Type: AWS::ElasticLoadBalancingV2::Listener
Properties:
DefaultActions:
- Order: 1
TargetGroupArn: !Ref HelloWorldTargetGroup
Type: forward
LoadBalancerArn:
Fn::ImportValue: !Sub ${EcsClusterStack}-alb-arn
Port: 8080
Protocol: HTTP
DependsOn:
- HelloWorldTargetGroup
HelloWorldService:
Type: AWS::ECS::Service
Properties:
Cluster:
Fn::ImportValue: !Sub ${EcsClusterStack}-ecs-cluster
DeploymentController:
Type: ECS
DesiredCount: 1
HealthCheckGracePeriodSeconds: 60
LaunchType: FARGATE
LoadBalancers:
-
ContainerName: hello-world
ContainerPort: 8080
TargetGroupArn: !Ref HelloWorldTargetGroup
NetworkConfiguration:
AwsvpcConfiguration:
SecurityGroups:
-
Fn::ImportValue: !Sub ${EcsClusterStack}-default-security-group
Subnets:
-
Fn::ImportValue: !Sub ${VpcStack}-private-subnet-a-id
-
Fn::ImportValue: !Sub ${VpcStack}-private-subnet-b-id
TaskDefinition: !Ref HelloWorldTaskDefinition
HelloWorldLogGroup:
Type: AWS::Logs::LogGroup
Properties:
RetentionInDays: 7
HelloWorldTaskDefinition:
Type: AWS::ECS::TaskDefinition
Properties:
ContainerDefinitions:
-
Name: hello-world
Essential: true
Image: !Ref Image
LogConfiguration:
LogDriver: awslogs
Options:
awslogs-group: !Ref HelloWorldLogGroup
awslogs-stream-prefix: hello-world-container
awslogs-region: !Ref AWS::Region
PortMappings:
-
ContainerPort: 8080
HostPort: 8080
Protocol: tcp
Cpu: '256'
ExecutionRoleArn:
Fn::ImportValue: !Sub ${EcsClusterStack}-default-role
Memory: '512'
NetworkMode: awsvpc
RequiresCompatibilities:
- FARGATE
TaskRoleArn:
Fn::ImportValue: !Sub ${EcsClusterStack}-default-role