services/jenkins-autoscaling/lambda_mxnet_ci/autoscaling/serverless.yml (47 lines of code) (raw):
service: mxnet-ci-master-scaling
frameworkVersion: ">=1.2.0 <2.0.0"
provider:
name: aws
runtime: python3.6
region: us-west-2
memorySize: 128
timeout: 290
stage: ${opt:stage}
environment: ${file(environment.yml):${self:provider.stage}}
iamRoleStatements:
- Effect: "Allow"
Action:
- "secretsmanager:DescribeSecret"
- "secretsmanager:GetSecretValue"
Resource:
- ${self:provider.environment.SECRETS_MANAGER_ARN}
- Effect: "Allow"
Action:
- "ec2:Describe*"
Resource:
- "*"
- Effect: "Allow"
Action:
- "ec2:RunInstances"
- "ec2:TerminateInstances"
- "ec2:CreateTags"
Resource:
- ${self:provider.environment.EC2_ACCOUNT_ARN}
- "arn:aws:ec2:us-west-2::image/ami-*"
- Effect: "Allow"
Action:
- "iam:PassRole"
Resource:
- ${self:provider.environment.IAM_JENKINS_SLAVE_ROLE}
- ${self:provider.environment.IAM_JENKINS_RESTRICTED_SLAVE_ROLE}
functions:
mxnet-ci-master-scaling:
handler: handler.scaling_handler
reservedConcurrency: 1
events:
# Invoke Lambda function on a schedule
- schedule: rate(5 minutes)
custom:
pythonRequirements:
dockerizePip: true
plugins:
- serverless-python-requirements