* feat: Add GitHub Actions workflow for Amplify deployment and configuration * feat: Update Amplify deployment workflow and add Serverless deployment workflow * feat: Set environment variables for Amplify monorepo deployment * feat: Refactor Amplify deployment configuration for monorepo structure * feat: Update environment variable naming and refactor image URL handling across the application * feat: Add Jest configuration and tests for project and user handlers
179 lines
4.6 KiB
YAML
179 lines
4.6 KiB
YAML
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}
|