├── Model └── Model.json ├── PT1 ├── DIOGetItem.js ├── DIOListItems.js ├── DIOPutIem.js ├── DIOUpdateItem.js └── DioDeleteItem.js ├── PT2-API ├── DIOGetItem.js ├── DIOListItems.js ├── DIOPutIem.js ├── DIOUptadeItem.js └── DioDeleteItem.js └── Roteiro da aula.txt /Model/Model.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "ItemsInputModel", 4 | "type": "object", 5 | "properties": { 6 | "id":{"type": "string"}, 7 | "itemName":{"type": "string"}, 8 | "itemPrice":{"type": "number"} 9 | } 10 | } -------------------------------------------------------------------------------- /PT1/DIOGetItem.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const AWS = require('aws-sdk'); 4 | 5 | exports.handler = async (event, context) => { 6 | 7 | const documentClient = new AWS.DynamoDB.DocumentClient(); 8 | 9 | let responseBody = ""; 10 | let statusCode = 0; 11 | 12 | //const {id, itemName, itemPrice} = JSON.parse(event.body); 13 | 14 | const params = { 15 | TableName: "Items", 16 | Key:{ 17 | id: 'item-01' 18 | } 19 | } 20 | 21 | try { 22 | 23 | const data = await documentClient.get(params).promise(); 24 | responseBody = JSON.stringify(data); 25 | statusCode = 204; 26 | 27 | } catch (err) { 28 | 29 | responseBody = `Falha ao obter item: ${err}`; 30 | statusCode = 403; 31 | 32 | } 33 | 34 | const response = { 35 | statusCode: statusCode, 36 | headers: { 37 | "Content-Type": "application/json" 38 | }, 39 | body:responseBody 40 | }; 41 | 42 | return response; 43 | } -------------------------------------------------------------------------------- /PT1/DIOListItems.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const AWS = require('aws-sdk'); 4 | 5 | exports.handler = async (event, context) => { 6 | 7 | const documentClient = new AWS.DynamoDB.DocumentClient(); 8 | 9 | let responseBody = ""; 10 | let statusCode = 0; 11 | 12 | //const {id, itemName, itemPrice} = JSON.parse(event.body); 13 | 14 | const params = { 15 | TableName: "Items" 16 | } 17 | 18 | try { 19 | 20 | const data = await documentClient.scan(params).promise(); 21 | responseBody = JSON.stringify(data.Items); 22 | statusCode = 200; 23 | 24 | } catch (err) { 25 | 26 | responseBody = `Falha ao listar itens: ${err}`; 27 | statusCode = 403; 28 | 29 | } 30 | 31 | const response = { 32 | statusCode: statusCode, 33 | headers: { 34 | "Content-Type": "application/json" 35 | }, 36 | body:responseBody 37 | }; 38 | 39 | return response; 40 | } -------------------------------------------------------------------------------- /PT1/DIOPutIem.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const AWS = require('aws-sdk'); 4 | 5 | exports.handler = async (event, context) => { 6 | 7 | const documentClient = new AWS.DynamoDB.DocumentClient(); 8 | 9 | let responseBody = ""; 10 | let statusCode = 0; 11 | 12 | //const {id, itemName, itemPrice} = JSON.parse(event.body); 13 | 14 | const params = { 15 | TableName: "Items", 16 | Item:{ 17 | id: 'item-01', 18 | itemName: 'item01', 19 | itemPrice: 15 20 | } 21 | } 22 | 23 | try { 24 | 25 | const data = await documentClient.put(params).promise(); 26 | responseBody = JSON.stringify(data); 27 | statusCode = 201; 28 | 29 | } catch (err) { 30 | 31 | responseBody = `Falha ao inserir item: ${err}`; 32 | statusCode = 403; 33 | 34 | } 35 | 36 | const response = { 37 | statusCode: statusCode, 38 | headers: { 39 | "Content-Type": "application/json" 40 | }, 41 | body:responseBody 42 | }; 43 | 44 | return response; 45 | } -------------------------------------------------------------------------------- /PT1/DIOUpdateItem.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | const AWS = require('aws-sdk'); 3 | 4 | exports.handler = async (event, context) => { 5 | const documentClient = new AWS.DynamoDB.DocumentClient(); 6 | 7 | let responseBody = ""; 8 | let statusCode = 0; 9 | 10 | //const { id, productname } = JSON.parse(event.body); 11 | 12 | const params = { 13 | TableName: "Items", 14 | Key: { 15 | id: "item-01" 16 | }, 17 | UpdateExpression: "set itemName = :n, itemPrice = :p", 18 | ExpressionAttributeValues: { 19 | ":n": "item-0100", 20 | ":p": 150 21 | }, 22 | ReturnValues: "UPDATED_NEW" 23 | }; 24 | 25 | try { 26 | const data = await documentClient.update(params).promise(); 27 | responseBody = JSON.stringify(data); 28 | statusCode = 204; 29 | } catch(err) { 30 | responseBody = `Unable to update product: ${err}`; 31 | statusCode = 403; 32 | } 33 | 34 | const response = { 35 | statusCode: statusCode, 36 | headers: { 37 | "Content-Type": "application/json" 38 | }, 39 | body: responseBody 40 | }; 41 | 42 | return response; 43 | }; -------------------------------------------------------------------------------- /PT1/DioDeleteItem.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const AWS = require('aws-sdk'); 4 | 5 | exports.handler = async (event, context) => { 6 | 7 | const documentClient = new AWS.DynamoDB.DocumentClient(); 8 | 9 | let responseBody = ""; 10 | let statusCode = 0; 11 | 12 | //const {id, itemName, itemPrice} = JSON.parse(event.body); 13 | 14 | const params = { 15 | TableName: "Items", 16 | Key:{ 17 | id: 'item-01' 18 | } 19 | } 20 | 21 | try { 22 | 23 | const data = await documentClient.delete(params).promise(); 24 | responseBody = JSON.stringify(data); 25 | statusCode = 204; 26 | 27 | } catch (err) { 28 | 29 | responseBody = `Falha ao excluir item: ${err}`; 30 | statusCode = 403; 31 | 32 | } 33 | 34 | const response = { 35 | statusCode: statusCode, 36 | headers: { 37 | "Content-Type": "application/json" 38 | }, 39 | body:responseBody 40 | }; 41 | 42 | return response; 43 | } -------------------------------------------------------------------------------- /PT2-API/DIOGetItem.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const AWS = require('aws-sdk'); 4 | 5 | exports.handler = async (event, context) => { 6 | 7 | const documentClient = new AWS.DynamoDB.DocumentClient(); 8 | 9 | let responseBody = ""; 10 | let statusCode = 0; 11 | 12 | const {id} =event.pathParameters; 13 | 14 | const params = { 15 | TableName: "Items", 16 | Key:{ 17 | id: id 18 | } 19 | } 20 | 21 | try { 22 | 23 | const data = await documentClient.get(params).promise(); 24 | responseBody = JSON.stringify(data); 25 | statusCode = 204; 26 | 27 | } catch (err) { 28 | 29 | responseBody = `Falha ao obter item: ${err}`; 30 | statusCode = 403; 31 | 32 | } 33 | 34 | const response = { 35 | statusCode: statusCode, 36 | headers: { 37 | "Content-Type": "application/json" 38 | }, 39 | body:responseBody 40 | }; 41 | 42 | return response; 43 | } -------------------------------------------------------------------------------- /PT2-API/DIOListItems.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const AWS = require('aws-sdk'); 4 | 5 | exports.handler = async (event, context) => { 6 | 7 | const documentClient = new AWS.DynamoDB.DocumentClient(); 8 | 9 | let responseBody = ""; 10 | let statusCode = 0; 11 | 12 | //const {id, itemName, itemPrice} = JSON.parse(event.body); 13 | 14 | const params = { 15 | TableName: "Items" 16 | } 17 | 18 | try { 19 | 20 | const data = await documentClient.scan(params).promise(); 21 | responseBody = JSON.stringify(data.Items); 22 | statusCode = 200; 23 | 24 | } catch (err) { 25 | 26 | responseBody = `Falha ao listar itens: ${err}`; 27 | statusCode = 403; 28 | 29 | } 30 | 31 | const response = { 32 | statusCode: statusCode, 33 | headers: { 34 | "Content-Type": "application/json" 35 | }, 36 | body:responseBody 37 | }; 38 | 39 | return response; 40 | } -------------------------------------------------------------------------------- /PT2-API/DIOPutIem.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const AWS = require('aws-sdk'); 4 | 5 | exports.handler = async (event, context) => { 6 | 7 | const documentClient = new AWS.DynamoDB.DocumentClient(); 8 | 9 | let responseBody = ""; 10 | let statusCode = 0; 11 | 12 | const {id, itemName, itemPrice} = JSON.parse(event.body); 13 | 14 | const params = { 15 | TableName: "Items", 16 | Item:{ 17 | id: id, 18 | itemName: itemName, 19 | itemPrice: itemPrice 20 | } 21 | } 22 | 23 | try { 24 | 25 | const data = await documentClient.put(params).promise(); 26 | responseBody = JSON.stringify(data); 27 | statusCode = 201; 28 | 29 | } catch (err) { 30 | 31 | responseBody = `Falha ao inserir item: ${err}`; 32 | statusCode = 403; 33 | 34 | } 35 | 36 | const response = { 37 | statusCode: statusCode, 38 | headers: { 39 | "Content-Type": "application/json" 40 | }, 41 | body:responseBody 42 | }; 43 | 44 | return response; 45 | } -------------------------------------------------------------------------------- /PT2-API/DIOUptadeItem.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | const AWS = require('aws-sdk'); 3 | 4 | exports.handler = async (event, context) => { 5 | const documentClient = new AWS.DynamoDB.DocumentClient(); 6 | 7 | let responseBody = ""; 8 | let statusCode = 0; 9 | 10 | const { id } = event.pathParameters; 11 | const { itemName, itemPrice } = JSON.parse(event.body); 12 | 13 | const params = { 14 | TableName: "Items", 15 | Key: { 16 | id: id 17 | }, 18 | UpdateExpression: "set itemName = :n, itemPrice = :p", 19 | ExpressionAttributeValues: { 20 | ":n": itemName, 21 | ":p": itemPrice 22 | }, 23 | ReturnValues: "UPDATED_NEW" 24 | }; 25 | 26 | try { 27 | const data = await documentClient.update(params).promise(); 28 | responseBody = JSON.stringify(data); 29 | statusCode = 204; 30 | } catch(err) { 31 | responseBody = `Falha ao atualizar produto: ${err}`; 32 | statusCode = 403; 33 | } 34 | 35 | const response = { 36 | statusCode: statusCode, 37 | headers: { 38 | "Content-Type": "application/json" 39 | }, 40 | body: responseBody 41 | }; 42 | 43 | return response; 44 | }; -------------------------------------------------------------------------------- /PT2-API/DioDeleteItem.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | const AWS = require('aws-sdk'); 3 | 4 | exports.handler = async (event, context) => { 5 | const documentClient = new AWS.DynamoDB.DocumentClient(); 6 | 7 | let responseBody = ""; 8 | let statusCode = 0; 9 | 10 | const { id } = event.pathParameters; 11 | 12 | const params = { 13 | TableName: "Items", 14 | Key: { 15 | id: id 16 | } 17 | }; 18 | 19 | try { 20 | const data = await documentClient.delete(params).promise(); 21 | responseBody = JSON.stringify(data); 22 | statusCode = 204; 23 | } catch(err) { 24 | responseBody = `Erro ao excluir item: ${err}`; 25 | statusCode = 403; 26 | } 27 | 28 | const response = { 29 | statusCode: statusCode, 30 | headers: { 31 | "Content-Type": "application/json" 32 | }, 33 | body: responseBody 34 | }; 35 | 36 | return response; 37 | }; -------------------------------------------------------------------------------- /Roteiro da aula.txt: -------------------------------------------------------------------------------- 1 | Roteiro da aula 2 | 3 | ->Configurações IAM 4 | -Criar role 5 | -Adicionar manualmente actions 6 | -Add inline policy 7 | -Choose service - dynamodb 8 | -Manual actions 9 | "dynamodb:getItem", 10 | "dynamodb:deleteItem", 11 | "dynamodb:scan", 12 | "dynamodb:putItem", 13 | "dynamodb:updateItem" 14 | 15 | ->Configurações da API 16 | 17 | -Habilitar CORS no root resource 18 | -Integrar com lambda proxy -> eventos 19 | -Method request - put 20 | Auth IAM 21 | Request validator - body 22 | http request header - Content-Type 23 | -Models 24 | -Create model 25 | -Content Type: application/json 26 | 27 | Request body - add model - application/json 28 | 29 | -Test Method 30 | -Headers - "Content-Type":"application/json" 31 | -Request body 32 | ------JSON 33 | { 34 | "id":"item004", 35 | "itemName": "Item005", 36 | "itemPrice": 1200 37 | } 38 | 39 | -Method request - List 40 | - Method request - Delete 41 | -Request validator - headers 42 | -http request header - Content-Type 43 | 44 | 45 | --------------------------------------------------------------------------------