From 7710a4ef14e1478c3dc9b8c33eedcbfeec26d6db Mon Sep 17 00:00:00 2001 From: Ben Ramey Date: Tue, 18 Sep 2018 07:34:12 -0500 Subject: [PATCH] Working (?) courses get func --- handlers/courses/get.js | 2 +- serverless.yml | 42 +++++++++++++++++++++++++++-------------- services/db.js | 6 ++++++ 3 files changed, 35 insertions(+), 15 deletions(-) diff --git a/handlers/courses/get.js b/handlers/courses/get.js index 500157c..835d8df 100644 --- a/handlers/courses/get.js +++ b/handlers/courses/get.js @@ -3,7 +3,7 @@ const db = require('../../services/db'); module.exports.default = async () => { try { - const courses = await db.get('eg_courses', {}); + const courses = await db.scan('eg_courses'); return createResponse(200, { courses: courses diff --git a/serverless.yml b/serverless.yml index f5f4420..c266ed8 100644 --- a/serverless.yml +++ b/serverless.yml @@ -21,6 +21,16 @@ provider: name: aws runtime: nodejs8.10 region: us-east-2 + iamRoleStatements: + - Effect: Allow + Action: + - dynamodb:Query + - dynamodb:Scan + - dynamodb:GetItem + - dynamodb:PutItem + - dynamodb:UpdateItem + - dynamodb:DeleteItem + Resource: "*" # you can overwrite defaults here # stage: dev @@ -56,7 +66,7 @@ provider: # - exclude-me-dir/** functions: - hello: + courses: handler: handlers/courses/get.default events: - http: @@ -109,19 +119,23 @@ functions: # Description: "Description for the output" # Value: "Some output value" resources: - coursesTable: - Type: AWS::DynamoDB::Table - Properties: - TableName: eg_courses - AttributeDefinitions: - - AttributeName: name - AttributeType: s - KeySchema: - - AttributeName: name - KeyType: HASH - Tags: - - Key: app - Value: ecs-grader + Resources: + coursesTable: + Type: AWS::DynamoDB::Table + Properties: + TableName: eg_courses + AttributeDefinitions: + - AttributeName: name + AttributeType: S + KeySchema: + - AttributeName: name + KeyType: HASH + Tags: + - Key: app + Value: ecs-grader + ProvisionedThroughput: + ReadCapacityUnits: 1 + WriteCapacityUnits: 1 plugins: - serverless-offline \ No newline at end of file diff --git a/services/db.js b/services/db.js index a398104..7dc1e53 100644 --- a/services/db.js +++ b/services/db.js @@ -21,6 +21,12 @@ const get = async (tableName, keyMap) => { return res && res.Item; }; +const scan = async (tableName) => { + const res = await dynamoClient.scan({ + TableName: tableName + }).promise(); +}; + const queryByID = async (tableName, idKeyName, id) => { // querying by id can be used when we are querying a table // that has a sortKey, but we don't need to use the sortKey