Serverless Framework: Gerenciando recursos com AWS Resource Groups
Tags: ptbr, aws, serverless, webdev
Published: 2019-09-03 07:52:08

Se você trabalha com projetos serverless, como deve estar ciente de que um projeto serverless pode terminar com centenas de funções Lambda, o que definitivamente aumenta a complexidade do seu aplicativo, uma boa novidade é que o **AWS Resource Groups** anunciou recentemente seu suporte para mais tipos de recursos, especialmente para grupos baseados em uma **stacks** do **AWS CloudFormation**.

Ao usar **Resource Groups**, é muito mais fácil agrupar todos os recursos correspondentes como um serviço, ao invés de ficar acessando cada parte separadamente.

Neste artigo, vou criar um projeto de API RESTful usando o **Serverless Framework** e criar um **Resource Groups** que contém uma coleção de serviços da AWS relacionados ao nosso projeto de API.

# Pré-requisitos

O seguinte deve ser feito antes de seguir este guia:

- Configurar uma [conta da AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
- Instalar o [**Serverless Framework**](https://serverless.com/framework/docs/getting-started)

# Construindo uma API RESTful com Serverless Framework

Primeiro, precisamos instalar ou atualizar o serverless framework para a versão mais recente:

```bash
$ npm install -g serverless
```

Em seguida, vamos criar um novo projeto:

```bash
$ sls create --template aws-nodejs --path myapp
```

O diretório criado inclui dois arquivos: **handler.js**, que é uma função Lambda, o arquivo **serverless.yml**, que contém as configurações do backend, adicione a seguinte configuração ao **serverless.yml**:

```yml
service: myapp
provider:
  name: aws
  runtime: nodejs8.10
  region: ap-southeast-2
  tags:
    serverless: myapp
functions:
  hello:
    handler: handler.hello
    events:
      - http:
          path: hello
          method: get
```

Vamos atualizar nosso **handler.js**, criar uma função lambda para cuidar da solicitação do API Gateway:

```js
module.exports.hello = async (event, context) => {
  return {
    statusCode: 200,
    body: JSON.stringify({
      message: "Go Serverless v1.0! Your function executed successfully!",
      input: event
    })
  };
};
```

Em seguida, vamos fazer o deploy da API:

```bash
$ sls deploy --stage dev
```

O resultado é parecido com o seguinte:

![](https://miro.medium.com/max/1122/1*pwXc-rrXOz0D9jWbz7wJYw.png)

Agora temos nossa API funcionando, é aqui que a diversão começa! Vamos criar um **Resource Groups** para gerenciar nossos recursos de API.

# Criando um Resource Groups

Vamos abrir o [console do AWS Resource Groups](https://ap-southeast-2.console.aws.amazon.com/resource-groups/home?region=ap-southeast-2) na AWS, no painel de navegação, em **"Resource Groups"**, escolha **"Create Resource Group"**.

Selecione **"CloudFormation stack based"** e em seguida, escolha uma stack do CloudFormation. Nesse exemplo, temos a stack **"myapp-dev"** implantada.

![](https://miro.medium.com/max/2456/1*h2YHOQ_LYbUIhE0XbsaFQg.png)

Clique no botão **"View group resources"** para ver todos os serviços relacionados incluídos nessa pilha.

![](https://miro.medium.com/max/2478/1*hqIkFAdBC9lKRQysOxnPbA.png)

Em **"Group Details"**, digite o nome e a descrição do grupo.

![](https://miro.medium.com/max/2482/1*WHGbYk96h2lx-K1HWe2nLg.png)

Tudo está configurado, escolha **"Create group"**. Podemos ir em **"Saved resource groups"** para visualizar o grupo de recursos que acabamos de criar.

![](https://miro.medium.com/max/2464/1*zalPpyPa3Ww_y-faCfVMMA.png)

Navegando em **"group resource"**, podemos ver que nosso projeto serverless inclui recursos de função S3, ApiGateway RestApi, lambda, Cloudwatch Logs e IAM Roles.

# Visualizando eventos do CloudTrail do AWS Resource Group

AWS System Managers mostram informações detalhadas sobre os recursos em nossos grupos, como logs de configuração e do AWS CloudTrail.

Vamos abrir o [console do AWS Systems Manager](https://ap-southeast-2.console.aws.amazon.com/systems-manager/resource-groups/groups?region=ap-southeast-2), escolha **"Resource Groups"** no painel de navegação esquerdo em **"Operations Management"**. Podemos ver todos os dados do log de eventos do CloudTrail.

![](https://miro.medium.com/max/2526/1*RbAdZ5-rs4u0waHjFbUENw.png)

---

Obrigado pela leitura, espero que você tenha achado este artigo útil. Pode me seguir se você deseja ver mais conteúdo como esse no futuro!


# Créditos

- [An easy way to manage Serverless project resources by using AWS Resource Groups](https://medium.com/the-cloud-builders-guild/an-easy-way-to-manage-serverless-project-resources-by-using-aws-resource-groups-68475cc19d35), escrito originalmente por @yia333