services/jenkins-pipeline-monitor/serverless.yml (40 lines of code) (raw):

service: jenkins-pipeline-monitor frameworkVersion: ">=1.2.0 <2.0.0" provider: name: aws runtime: python3.6 region: us-west-2 stage: ${opt:stage} environment: ${file(environment.yml):${self:provider.stage}} memorySize: 128 timeout: 290 iamRoleStatements: - Effect: "Allow" Action: - "secretsmanager:DescribeSecret" - "secretsmanager:GetSecretValue" Resource: - ${self:provider.environment.SECRET_ARN} - Effect: "Allow" Action: - "secretsmanager:ListSecrets" Resource: "*" functions: jenkins-pipeline-monitor: handler: handler.lambda_handler reservedConcurrency: 1 events: # Invoke Lambda function on a schedule # Since daily trigger triggers builds at 7:41pm UTC # Data collected reveals 5 builds in release pipeline take max 4 hours # Hence lambda triggered daily at 2:00am UTC [6 hours after daily trigger is enough buffer] - schedule: cron(00 2 * * ? *) environment: region_name: ${self:provider.environment.SECRET_ENDPOINT_REGION} secret_name: ${self:provider.environment.SECRET_NAME} jenkins_url: ${self:provider.environment.JENKINS_URL} custom: pythonRequirements: dockerizePip: true plugins: - serverless-python-requirements package: exclude: - node_modules/** - my_env/**