Configurando credenciais de acesso a APK da AWS em servidores Apache e NGINX utilizando sistemas Linux

Marcelo Albuquerque
3 min readDec 5, 2021

--

Quando fazemos uma chamada a APK da AWS ela necessita das credenciais de acesso da sua conta na AWS com os devidos privilégios para que a consulta seja devidamente realizada. Pode ser uma dor de cabeça entender esse processo, então podemos adotar duas abordagens: definir as credenciais de acesso como variáveis de ambiente na aplicação ou defini-las diretamente no sistema.

Definindo como variáveis de ambiente

Se você desenvolve uma aplicação em PHP, sugiro fortemente a utilização da biblioteca PHP dotenv.

Vou partir da ideia que temos um arquivo chamado .env no root da nossa aplicação. Esse arquivo deve conter o seguinte conteúdo:

AWS_ACCESS_KEY_ID=<<your_access_key_id>>
AWS_SECRET_ACCESS_KEY=<<your_secret_access_key>>

Para que a chamada a APK funcione, basta que tais credenciais sejam carregadas.

Definindo as credencias de acesso diretamente no sistema

Tais credenciais precisam estar localizadas em um arquivo chamado credentials. que fica localizado dentro de uma pasta chamada .aws.

O caminho .aws/credentials deve estar devidamente configurado no diretório home do Servidor Web — seja Apache ou NGINX — , NÃO no diretório home do usuário logado.

Podemos verificar qual o diretório home do Servidor Web, executando echo getenv('HOME'); em um arquivo .php no servidor.

Importante ressaltar que o Apache e NGINX utilizam diretórios diferentes.

Configurando as credenciais de acesso no Apache

No Apache o caminho para a home do Servidor Web fica em: /usr/share/httpd/ .

Portanto, devemos criar dentro do diretório httpd uma pasta chamada .aws e dentro dela um arquivo chamado credentials. Para executar esses comandos precisamos ter acesso root ao sistema:

sudo mkdir /usr/share/httpd/.aws
sudo touch /usr/share/httpd/.aws/credentials

Agora precisamos editar o arquivo credentials:

sudo nano /usr/share/httpd/.aws/credentials

Com o arquivo aberto para edição, devemos adicionar o seguinte conteúdo:

[default]
aws_access_key_id = <<your_access_key_id>>
aws_secret_access_key = <<your_secret_access_key>>

Agora basta salvar e fechar o arquivo e reiniciar o Apache com o seguinte comando:

sudo systemctl restart httpd

Configurando as credenciais de acesso no NGINX

No NGINX o caminho para a home do Servidor Web fica em: /var/lib/nginx/ .

Portanto, devemos criar dentro do diretório nginx uma pasta chamada .aws e dentro dela um arquivo chamado credentials. Para executar esses comandos precisamos ter acesso root ao sistema:

sudo mkdir /var/lib/nginx/.aws
sudo touch /var/lib/nginx/.aws/credentials

Agora precisamos editar o arquivo credentials:

sudo nano /var/lib/nginx/.aws/credentials

Com o arquivo aberto para edição, devemos adicionar o seguinte conteúdo:

[default]
aws_access_key_id = <<your_access_key_id>>
aws_secret_access_key = <<your_secret_access_key>>

Agora basta salvar e fechar o arquivo e reiniciar o Apache com o seguinte comando:

sudo systemctl restart nginx

Analisando qual das duas formas seria a melhor, acredito que dependa exclusivamente da familiaridade que o desenvolvedor tenha com seu sistema operacional.

Definir as credenciais diretamente no sistema parece ser complexo, porém, essa forma nos trás muitas facilidades, pois definimos as credenciais em apenas um local: diretamente no sistema! Dessa forma, não havendo necessidade de defini-las em cada projeto.

--

--