Como utilizar recursos AWS fora da conta AWS

Eldius
Bemobi
Published in
2 min readFeb 24, 2021

Problema inicial

Tivemos a necessidade de acessar um recurso da AWS (mais específicamente uma tabela do DynamoDB), que estava na conta do time à partir de uma aplicação rodando dentro do System Lake (um PaaS interno da empresa), que fica em outra conta da AWS.

Explicando melhor a situação, alguns serviços da AWS, como Secrets Manager, DynamoDB, S3, entre alguns outros, necessitam que a aplicação se autentique na API da AWS para que possa acessar o recurso.

Quando executamos a aplicação em uma instância EC2 na mesma conta, basta que a role desta instância tenha a permissão de acesso ao recurso. Porém quando a aplicação é executada fora desta conta (ou dentro de outra conta) essa solução não é tão simples.

Solução encontrada

Foi criado um usuário que teria acesso à tabela do DynamoDB, com credenciais (secret key e access id), para ser utilizado pela aplicação.

Código da criação do recurso e do usuário da aplicação

Abaixo, segue um resumo do código para a criação da tabela em si:

Aqui criamos o usuário da nossa aplicação

Já aqui, criamos as credenciais (access key e secret key) para o usuário criado:

E por último concedemos as permissões necessárias ao usuário da aplicação, que no caso eram referentes apenas ao acesso a uma tabela específica do DynamoDB

E para exibir as credenciais do usuário da aplicação:

Configuração da aplicação

Todo os SDKs da AWS utilizam algumas por padrão variáveis de ambiente específicas para sua configuração, caso elas existam, como é o caso das variáveis `AWS_SECRET_KEY`, `AWS_SECRET_ID` e `AWS_REGION`, que configuram as credenciais de acesso e a região onde os recursos utilizados se encontram. Referências para o SDK Java (os links a seguir são específicos para Java, mas pelo que pude observar parece ser um padrão para os SDKs em qualquer linguagem) estão aqui Working with AWS Credentials e aqui Set up AWS Credentials and Region for Development .

A aplicação em questão utiliza o Spring Data DynamoDB (referências em derjust/spring-data-dynamodb e DynamoDB in a Spring Boot Application Using Spring Data), que não foge à regra de configuração citada anteriormente, pois foi criado por cima do SDK da AWS.

Para configurar a aplicação propriamente dita, foi necessário apenas adicionar as variáveis de ambiente no container da aplicação.

--

--