services/lambda-mxnet-ci-bot/serverless.yml (74 lines of code) (raw):
service: mxnet-ci-bot
frameworkVersion: ">=1.2.0 <2.0.0"
provider:
name: aws
runtime: python3.7
timeout: 120
region: us-west-2
stage: ${opt:stage}
environment: ${file(environment.yml):${self:provider.stage}}
iamRoleStatements:
- Effect: "Allow"
Action:
- "secretsmanager:GetSecretValue"
- "secretsmanager:DescribeSecret"
Resource: ${self:provider.environment.SECRET_ARN}
- Effect: "Allow"
Action:
- "secretsmanager:ListSecrets"
Resource: "*"
- Effect: "Allow"
Action:
- "sqs:SendMessage"
- "sqs:ReceiveMessage"
- "sqs:DeleteMessage"
- "sqs:GetQueueAttributes"
Resource:
Fn::GetAtt: [ SQSQueue, Arn ]
functions:
send:
handler: handler.send_to_sqs
environment:
SQS_URL:
Ref: SQSQueue
timeout: 30
events:
- http: POST send_to_sqs
jenkins:
handler: handler.run_jenkins_lambda
timeout: 120
events:
- sqs:
arn:
Fn::GetAtt: [ SQSQueue, Arn ]
environment:
region_name: ${self:provider.environment.SECRET_ENDPOINT_REGION}
secret_name: ${self:provider.environment.SECRET_NAME}
repo: ${self:provider.environment.REPO_NAME}
jenkins_url: ${self:provider.environment.JENKINS_URL}
resources:
Resources:
SQSQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: ${self:custom.queueName}
VisibilityTimeout: 210
plugins:
- serverless-python-requirements
- serverless-domain-manager
custom:
queueName: ci_sqs
customDomain:
domainName: ${self:provider.environment.DOMAIN_NAME}
basePath: ${opt:stage}
stage: ${opt:stage}
createRoute53Record: true
pythonRequirements:
dockerizePip: true
package:
exclude:
- ./**
include:
- handler.py
- secret_manager.py
- CIBot.py