https://github.com/erikbernard/dio-aws-project
https://github.com/erikbernard/dio-aws-project
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/erikbernard/dio-aws-project
- Owner: erikbernard
- License: apache-2.0
- Created: 2023-01-07T02:10:50.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-01-07T02:22:17.000Z (over 2 years ago)
- Last Synced: 2025-01-06T11:44:24.371Z (4 months ago)
- Language: JavaScript
- Size: 10.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
AWS Projeto
![]()
# API Node.js com Serverless Framework em ambiente AWS
Neste projeto vamos criar uma infraestrutra em nuvem AWS com API Gateway, DynamoDB, AWS Lambda e AWS CloudFormation utilizando o framework Serverless para o desenvolvimento baseada em Infraestrutura as a Code.
## Etapas
Pré requisitos:
- possuir uma conta na AWS e instalar Node.js na máquina.
- Instalar o AWS CLI: [link](http://https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html "link")### Setup Inicial
#### Credenciais AWS
- Criar usuário: AWS Management Console -> IAM Dashboard -> Create New User -> -> Permissions "Administrator Access" -> Programmatic Access -> Dowload Keys
- No terminal: ```$ aws configure``` -> colar as credenciais geradas anteriormente#### Configurar o framework Serverless
```$ npm i -g serverless```### Desenvolvimento do projeto
```
$ serverless
Login/Register: No
Update: No
Type: Node.js REST API
Name: dio-aws
```
```
$ cd dio-aws
$ code .
```
- No arquivo ```serverless.yml``` adicionar a região ```region: us-east-1``` dentro do escopo de ```provider:```
- Salvar e realizar o deploy ```$ serverless deploy -v```#### Estruturar o código
- Criar o diretório "src" e mover o arquivo "handler.js" para dentro dele
- Renomear o arquivo "handler.js" para "hello.js"
- Atualizar o código
```
const hello = async (event) => {
/////
module.exports = {
handler:hello
}
```
- Atualizar o arquivo "serverless.yml "
```
handler: src/hello.handler
```
```$ serverless deploy -v ```#### DynamoDB
Atualizar o arquivo serverless.yml
```
resources:
Resources:
ItemTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: ItemTable
BillingMode: PAY_PER_REQUEST
AttributeDefinitions:
- AttributeName: id
AttributeType: S
KeySchema:
- AttributeName: id
KeyType: HASH
```
#### Desenvolver funções lambda- Pasta /src do repositório
- Obter arn da tabela no DynamoDB AWS Console -> DynamoDB -> Overview -> Amazon Resource Name (ARN)
- Atualizar arquivo serverless.yml com o código a seguir, abaixo do ```region:```
```
iam:
role:
statements:
- Effect: Allow
Action:
- dynamodb:PutItem
- dynamodb:UpdateItem
- dynamodb:GetItem
- dynamodb:Scan
Resource:
- arn:aws:dynamodb:us-east-1:167880115321:table/ItemTable
```
- Instalar dependências```npm init```
```npm i uuid aws-sdk```
- Atualizar lista de funções no arquivo serverless.yml
```
functions:
hello:
handler: src/hello.handler
events:
- http:
path: /
method: get
insertItem:
handler: src/insertItem.handler
events:
- http:
path: /item
method: post
fetchItems:
handler: src/fetchItems.handler
events:
- http:
path: /items
method: get
fetchItem:
handler: src/fetchItem.handler
events:
- http:
path: /items/{id}
method: get
updateItem:
handler: src/updateItem.handler
events:
- http:
path: /items/{id}
method: put
```