Configurando credenciais de acesso a APK da AWS em servidores Apache e NGINX utilizando sistemas Linux
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.