Create infrastructure to call lambda
This commit is contained in:
parent
af8931e2db
commit
d577cd02ef
5
.gitignore
vendored
5
.gitignore
vendored
@ -30,4 +30,7 @@
|
|||||||
*.exe
|
*.exe
|
||||||
*.out
|
*.out
|
||||||
*.app
|
*.app
|
||||||
.vscode
|
.vscode
|
||||||
|
|
||||||
|
# Compressed Artifacts
|
||||||
|
*.zip
|
||||||
|
39
infrastructure/cloudformation/dt/cloudwatch.yaml
Normal file
39
infrastructure/cloudformation/dt/cloudwatch.yaml
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
AWSTemplateFormatVersion: "2010-09-09"
|
||||||
|
Description: DT CloudWatch stack
|
||||||
|
Parameters:
|
||||||
|
#------------------------
|
||||||
|
# Deployment Information
|
||||||
|
#------------------------
|
||||||
|
environment:
|
||||||
|
Type: String
|
||||||
|
Description: Name of the environment
|
||||||
|
Default: production
|
||||||
|
|
||||||
|
#----------------
|
||||||
|
# ECS Information
|
||||||
|
#----------------
|
||||||
|
Cluster:
|
||||||
|
Description: The ECS cluster to watch
|
||||||
|
Type: String
|
||||||
|
|
||||||
|
#-------------------
|
||||||
|
# Lambda Information
|
||||||
|
#-------------------
|
||||||
|
LambdaArn:
|
||||||
|
Description: Lambda function to call upon ecs task state change
|
||||||
|
Type: String
|
||||||
|
|
||||||
|
Resources:
|
||||||
|
|
||||||
|
TaskListRule:
|
||||||
|
EventPattern:
|
||||||
|
source:
|
||||||
|
- "aws.ecs"
|
||||||
|
detail-type:
|
||||||
|
- "ECS Task State Change"
|
||||||
|
detail:
|
||||||
|
clusterArn:
|
||||||
|
- !Ref Cluster
|
||||||
|
Targets:
|
||||||
|
- Id: RedisUpdater
|
||||||
|
Arn: !Ref LambdaArn
|
40
infrastructure/cloudformation/dt/iam.yaml
Normal file
40
infrastructure/cloudformation/dt/iam.yaml
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
AWSTemplateFormatVersion: "2010-09-09"
|
||||||
|
Description: DT IAM stack
|
||||||
|
Parameters:
|
||||||
|
#------------------------
|
||||||
|
# Deployment Information
|
||||||
|
#------------------------
|
||||||
|
environment:
|
||||||
|
Type: String
|
||||||
|
Description: Name of the environment
|
||||||
|
Default: production
|
||||||
|
|
||||||
|
Resources:
|
||||||
|
DefaultLambdaRole:
|
||||||
|
Type: AWS::IAM::Role
|
||||||
|
Properties:
|
||||||
|
AssumeRolePolicyDocument:
|
||||||
|
Version: 2012-10-17
|
||||||
|
Statement:
|
||||||
|
- Effect: Allow
|
||||||
|
Principal:
|
||||||
|
Service:
|
||||||
|
- lambda.amazonaws.com
|
||||||
|
Action:
|
||||||
|
- sts:AssumeRole
|
||||||
|
Policies:
|
||||||
|
- PolicyName: LambdaLogging
|
||||||
|
PolicyDocument:
|
||||||
|
Version: 2012-10-17
|
||||||
|
Statement:
|
||||||
|
- Effect: Allow
|
||||||
|
Action:
|
||||||
|
- logs:CreateLogGroup
|
||||||
|
- logs:CreateLogStream
|
||||||
|
- logs:PutLogEvents
|
||||||
|
Resource: "*"
|
||||||
|
|
||||||
|
Outputs:
|
||||||
|
DefaultRole:
|
||||||
|
Description: Default lambda role with logging policy
|
||||||
|
Value: !Ref DefaultLambdaRole
|
64
infrastructure/cloudformation/dt/lambdas.yaml
Normal file
64
infrastructure/cloudformation/dt/lambdas.yaml
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
AWSTemplateFormatVersion: "2010-09-09"
|
||||||
|
Description: DT Lambdas stack
|
||||||
|
Parameters:
|
||||||
|
#------------------------
|
||||||
|
# Deployment Information
|
||||||
|
#------------------------
|
||||||
|
environment:
|
||||||
|
Type: String
|
||||||
|
Description: Name of the environment
|
||||||
|
Default: production
|
||||||
|
|
||||||
|
#----------------
|
||||||
|
# IAM Information
|
||||||
|
#----------------
|
||||||
|
TaskManagerRole:
|
||||||
|
Type: String
|
||||||
|
Description: IAM role assumed by Task Manager Lambda
|
||||||
|
VpcId:
|
||||||
|
Type: AWS::EC2::VPC::Id
|
||||||
|
Description: The id of the VPC the cluster will be in
|
||||||
|
ConstraintDescription: VPC Id must begin with 'vpc-'
|
||||||
|
SubnetIds:
|
||||||
|
Type: List<AWS::EC2::Subnet::Id>
|
||||||
|
Description: Comma seperated list of subnets for ECS instances to run in
|
||||||
|
|
||||||
|
Resources:
|
||||||
|
|
||||||
|
TaskListSecurityGroup:
|
||||||
|
Type: AWS::EC2::SecurityGroup
|
||||||
|
Properties:
|
||||||
|
GroupDescription: TaskListManagerLambda Allowed Ports
|
||||||
|
VpcId: !Ref VpcId
|
||||||
|
SecurityGroupIngress:
|
||||||
|
- IpProtocol: tcp
|
||||||
|
FromPort: '0'
|
||||||
|
ToPort: '65535'
|
||||||
|
CidrIp: 0.0.0.0/0
|
||||||
|
SecurityGroupEgress:
|
||||||
|
- IpProtocol: tcp
|
||||||
|
FromPort: '0'
|
||||||
|
ToPort: '65535'
|
||||||
|
CidrIp: 0.0.0.0/0
|
||||||
|
|
||||||
|
|
||||||
|
TaskListManagerLambda:
|
||||||
|
Type: AWS::Lambda::Function
|
||||||
|
Runtime: python3.7
|
||||||
|
Code:
|
||||||
|
S3Bucket: sumu-stacks
|
||||||
|
S3Key: !Sub "dt/${release}/lambda/task_queue_manager.zip"
|
||||||
|
FunctionName: !Sub "FnQueueManager-DT-${environment}"
|
||||||
|
Description:
|
||||||
|
MemorySize: 128
|
||||||
|
Timeout: 10
|
||||||
|
Role: !Ref QueueManagerRole
|
||||||
|
VpcConfig:
|
||||||
|
SecurityGroupIds:
|
||||||
|
- !Ref TaskListSecurityGroup
|
||||||
|
SubnetIds: !Ref SubnetIds
|
||||||
|
|
||||||
|
Outputs:
|
||||||
|
TaskListManager:
|
||||||
|
Value: !Ref TaskListManagerLambda
|
||||||
|
Description: Function that adds and removes tasks from a redis list
|
@ -68,6 +68,41 @@ Resources:
|
|||||||
SubDomain: !Ref SubDomain
|
SubDomain: !Ref SubDomain
|
||||||
DtDNS: !GetAtt LoadBalancing.Outputs.NlbDnsName
|
DtDNS: !GetAtt LoadBalancing.Outputs.NlbDnsName
|
||||||
|
|
||||||
|
#-----
|
||||||
|
# IAM
|
||||||
|
#-----
|
||||||
|
IAM:
|
||||||
|
Type: AWS::CloudFormation::Stack
|
||||||
|
Properties:
|
||||||
|
TemplateURL: !Sub 'https://s3.${AWS::Region}.amazonaws.com/sumu-stacks/dt/${release}/cloudformation/dt/iam.yaml'
|
||||||
|
Parameters:
|
||||||
|
environment: !Ref environment
|
||||||
|
|
||||||
|
#--------
|
||||||
|
# Lambda
|
||||||
|
#--------
|
||||||
|
LambdaFunctions:
|
||||||
|
Type: AWS::CloudFormation::Stack
|
||||||
|
Properties:
|
||||||
|
TemplateURL: !Sub 'https://s3.${AWS::Region}.amazonaws.com/sumu-stacks/dt/${release}/cloudformation/dt/lambda.yaml'
|
||||||
|
Paramters:
|
||||||
|
environment: !Ref environment
|
||||||
|
TaskManagerRole: !GetAtt IAM.Outputs.DefaultRole
|
||||||
|
VpcId: !Ref VpcId
|
||||||
|
SubnetIds: !Ref PublicSubnets
|
||||||
|
|
||||||
|
#------------
|
||||||
|
# CloudWatch
|
||||||
|
#------------
|
||||||
|
CloudWatchRules:
|
||||||
|
Type: AWS::CloudFormation::Stack
|
||||||
|
Properties:
|
||||||
|
TemplateURL: !Sub 'https://s3.${AWS::Region}.amazonaws.com/sumu-stacks/dt/${release}/cloudformation/dt/cloudwatch.yaml'
|
||||||
|
Paramters:
|
||||||
|
environment: !Ref environment
|
||||||
|
Cluster: !GetAtt EcsCluster.Outputs.Cluster
|
||||||
|
LambdaArn: !GetAtt LambdaFunctions.Outputs.TaskListManager
|
||||||
|
|
||||||
#---------
|
#---------
|
||||||
# Caching
|
# Caching
|
||||||
#---------
|
#---------
|
||||||
|
@ -0,0 +1,4 @@
|
|||||||
|
import json
|
||||||
|
|
||||||
|
def lambda_handler(event, context):
|
||||||
|
print(json.dumps(event))
|
Reference in New Issue
Block a user