service: tasker-server plugins: - serverless-prune-plugin provider: stackName: ${self:service} name: aws region: "eu-north-1" runtime: nodejs20.x environment: SLS_REGION: ${self:provider.region} TASKER_TASK_TABLE_NAME: ${ssm:/tasker/dynamodb/task-table-name} TASKER_PROJECT_TABLE_NAME: ${ssm:/tasker/dynamodb/project-table-name} TASKER_USER_TABLE_NAME: ${ssm:/tasker/dynamodb/user-table-name} TASKER_TASK_EXTRA_TABLE_NAME: ${ssm:/tasker/dynamodb/task-extra-table-name} TASKER_TEAM_TABLE_NAME: ${ssm:/tasker/dynamodb/team-table-name} layers: - ${ssm:/tasker/layers/tasker-layer-arn} iam: role: statements: - Effect: Allow Action: - dynamodb:Query - dynamodb:Scan - dynamodb:GetItem - dynamodb:PutItem - dynamodb:UpdateItem Resource: [ "arn:aws:dynamodb:${self:provider.region}:*:table/tasker-*", "arn:aws:dynamodb:${self:provider.region}:*:table/tasker-*/*", ] - Effect: Allow Action: - execute-api:Invoke Resource: - "arn:aws:execute-api:${self:provider.region}:*:*/*/POST/users" functions: populateSeedData: handler: seed/populateSeedData.handler memorySize: 1024 timeout: 60 # POST /users or triggered by Cognito createUser: handler: src/handlers/createUser.handler memorySize: 1024 timeout: 60 events: - http: path: users method: post cors: true authorizer: aws_iam - cognitoUserPool: existing: true pool: ${ssm:/tasker/cognito/user-pool-name} trigger: PostConfirmation # POST /projects createProject: handler: src/handlers/createProject.handler memorySize: 1024 timeout: 60 events: - http: path: projects method: post cors: true authorizer: type: COGNITO_USER_POOLS arn: ${ssm:/tasker/cognito/user-pool-arn} # POST /tasks createTask: handler: src/handlers/createTask.handler memorySize: 1024 timeout: 60 events: - http: path: tasks method: post cors: true authorizer: type: COGNITO_USER_POOLS arn: ${ssm:/tasker/cognito/user-pool-arn} # GET /projects getProjects: handler: src/handlers/getProjects.handler memorySize: 1024 timeout: 60 events: - http: path: projects method: get cors: true authorizer: type: COGNITO_USER_POOLS arn: ${ssm:/tasker/cognito/user-pool-arn} # GET /tasks?projectId= getTasks: handler: src/handlers/getTasks.handler memorySize: 1024 timeout: 60 events: - http: path: tasks method: get cors: true authorizer: type: COGNITO_USER_POOLS arn: ${ssm:/tasker/cognito/user-pool-arn} # GET /teams getTeams: handler: src/handlers/getTeams.handler memorySize: 1024 timeout: 60 events: - http: path: teams method: get cors: true authorizer: type: COGNITO_USER_POOLS arn: ${ssm:/tasker/cognito/user-pool-arn} # GET /users getUsers: handler: src/handlers/getUsers.handler memorySize: 1024 timeout: 60 events: - http: path: users method: get cors: true authorizer: type: COGNITO_USER_POOLS arn: ${ssm:/tasker/cognito/user-pool-arn} # GET /users/{cognitoId} getUser: handler: src/handlers/getUser.handler memorySize: 1024 timeout: 60 events: - http: path: users/{cognitoId} method: get cors: true authorizer: type: COGNITO_USER_POOLS arn: ${ssm:/tasker/cognito/user-pool-arn} # GET /tasks/user/${userId} getUserTasks: handler: src/handlers/getUserTasks.handler memorySize: 1024 timeout: 60 events: - http: path: tasks/user/{userId} method: get cors: true authorizer: type: COGNITO_USER_POOLS arn: ${ssm:/tasker/cognito/user-pool-arn} # PATCH /tasks/{taskId}/status updateTaskStatus: handler: src/handlers/updateTaskStatus.handler memorySize: 1024 timeout: 60 events: - http: path: tasks/{taskId}/status method: patch cors: true authorizer: type: COGNITO_USER_POOLS arn: ${ssm:/tasker/cognito/user-pool-arn}