AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
  sli lambda functions

Parameters:
  Stage:
    Type: String
    Default: dev
    Description: Parameter for getting the deployment stage

Mappings:
  EnvConfigs:
    dev:
      Role: arn:aws:iam::552185537300:role/sli-dev-analyzer-role
      Layer: arn:aws:lambda:us-west-2:552185537300:layer:sli-layer:19
      SecurityGroupIds: 
        - sg-08bb42935021e024b
      SubnetIds:
        - subnet-098de5356152db3c2
        - subnet-0aea29f5add64487c
      DbHost: gateway01.us-west-2.prod.aws.tidbcloud.com
      DbUser: 2669JJhnvim6egm.root
      JiraProject: O11YDEV
      JiraURL: https://tidb.atlassian.net
      JiraUsername: charles.m@pingcap.com
      SyncStatusPageEndpoint: https://fadthemqmobjqmotnrot62apw40wydak.lambda-url.us-west-2.on.aws/
      DevOpsUrl: https://staging.devops.pingcap.com
    prod:
      Role: arn:aws:iam::557537366020:role/sli-prod-analyzer-role
      Layer: arn:aws:lambda:us-west-2:557537366020:layer:sli-layer:12
      SecurityGroupIds:
        - sg-0118e0f1069a02381
      SubnetIds:
        - subnet-0539a75851b24df03
        - subnet-0258434fb4a0d03ef
        - subnet-007f996591222aec2
        - subnet-068050d69d264d42a
      DbHost: gateway01.us-west-2.prod.aws.tidbcloud.com
      DbUser: RDgFArWiyRK5wbH.dbaas-sli
      JiraProject: O11Y
      JiraURL: https://tidb.atlassian.net
      JiraUsername: charles.m@pingcap.com
      SyncStatusPageEndpoint: https://dhdtrgrjazyu3ccbgm67t5xt640gcefl.lambda-url.us-west-2.on.aws/
      DevOpsUrl: https://prod.devops.pingcap.com

# More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst
Globals:
  Function:
    Timeout: 60
    Runtime: python3.13
    Architectures:
      - x86_64
    Tags:
      tenant: sli-analyzer
    VpcConfig:
      SecurityGroupIds: !FindInMap
        - EnvConfigs
        - Ref: Stage
        - SecurityGroupIds
      SubnetIds: !FindInMap
        - EnvConfigs
        - Ref: Stage
        - SubnetIds
    Environment:
      Variables:
        SLI_STAGE: !Ref Stage
        SLI_DB_HOST: !FindInMap
        - EnvConfigs
        - Ref: Stage
        - DbHost
        SLI_DB_USER: !FindInMap
        - EnvConfigs
        - Ref: Stage
        - DbUser
        SLI_SECRET_NAME: !Sub 'sli-${Stage}-analyzer-secret'
        JIRA_PROJECT: !FindInMap
        - EnvConfigs
        - Ref: Stage
        - JiraProject
        JIRA_URL: !FindInMap
        - EnvConfigs
        - Ref: Stage
        - JiraURL
        JIRA_USERNAME: !FindInMap
        - EnvConfigs
        - Ref: Stage
        - JiraUsername
        SYNC_STATUSPAGE_ENDPOINT: !FindInMap
        - EnvConfigs
        - Ref: Stage
        - SyncStatusPageEndpoint
        SERVERLESS_DB_HOST: gateway01.us-west-2.prod.aws.tidbcloud.com
        SERVERLESS_DB_USER: xxensiNE5nrMtWm.serverless_rd
        DEV_OPS_URL: !FindInMap
        - EnvConfigs
        - Ref: Stage
        - DevOpsUrl

Resources:
  SyncServerlessToStatuspageFunction:
    Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
    Properties:
      FunctionName: sync-serverless-to-statuspage
      CodeUri: sync_serverless_to_statuspage/
      Handler: app.lambda_handler
      MemorySize: 256
      Role: !FindInMap
        - EnvConfigs
        - Ref: Stage
        - Role
      Layers:
        - !FindInMap
          - EnvConfigs
          - Ref: Stage
          - Layer
      Events:
        EventBridge:
          Type: Schedule
          Properties:
            Schedule: 'rate(2 minutes)'
            Name: sync-serverless-to-statuspage-hourly
            Enabled: True
  SyncUptimerobotToStatuspageFunction:
    Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
    Properties:
      FunctionName: sync-uptimerobot-to-statuspage
      CodeUri: sync_uptimerobot_to_statuspage/
      Handler: app.lambda_handler
      MemorySize: 256
      Role: !FindInMap
        - EnvConfigs
        - Ref: Stage
        - Role
      Layers:
        - !FindInMap
          - EnvConfigs
          - Ref: Stage
          - Layer
      FunctionUrlConfig:
        AuthType: NONE
