DEV Community

Cover image for Subindo aplicação Go na AWS
Jhonatan Henkel
Jhonatan Henkel

Posted on

Subindo aplicação Go na AWS

Olá dev, ja faz temo que não nos falamos, não é mesmo?

Hoje a nossa conversa vai ser sobre hospedagem para aplicação em linguagem Go. Tentei algumas alternativas que não deram certo, como por exemplo:

  • Kinghost: Não aceitam hospedagem em Go.
  • Heroku: Consegui hospedar, porem não consegui usar devido ao Heroku não deixar eu configurar o .env, e não, não devemos comitar o .env.

Dando uma pesquisada e trocando ideia com algumas pessoas, cheguei a AWS, aqui da de usar, não sei como fica ao certo quanto a custos, mas acredito que não vamos ultrapassar o limite do plano gratuito. É desejável que você tenha um pouco de experiencia na AWS para compreender bem esse post.

Primeiramente acesse o serviço de EC2 da AWS, no menu lateral selecione a opção instances.

instances

Na tela que se abrir, clique no botão superior direito em amarelo escrito Launch instances, é aqui que vamos criar nossa instância na AWS para rodar nossa aplicação em Go.

Inicialmente, vamos definir um nome, selecionar a opção Amazon Linux, escolher a AMI Amazon Linux 2 AMI e por fim a arquitetura 64 bits.

initial config

Em tipo de instância, recomendo escolher a t2.micro, e em key pair clique em create new key pair, é aqui que vamos gerar o certificado para conexão via SSH.

key pair

Defina um nome, e o resto deixe nas opções padrão, ao criar, salve o arquivo em um local seguro e não perca, vamos precisar dele para acessar o SSH.

Em network settings, clique em Edit

network edit

Clique em Add security group rule e defina a porta que sua aplicação Go vai usar, se for a 8000 por exemplo, vai ficar mais ou menos assim:

security group

Agora é só clicar em launch instance e aguardar um pouco.

Agora com a instância criada e iniciada, acesse seu terminal, vá até a pasta que você salvou o certificado mencionado anteriormente, lembra? aquele que eu pedi para salvar e não perder.

O endereço para acessar sua instancia vai ser algo parecido com isso: ec2-XX-XXX-XX-XX.XX-XX-X.compute.amazonaws.com, onde os X's são equivalentes ao DNS da sua máquina.

para pegar o endereço correto, basta ir até os detalhes da sua instância na AWS e pegar o endereço contido no campo Public IPv4 DNS. Dica, esse endereço não é estático, ou seja, fica mudando.

O comando para acessar via SSH pelo terminal, o comando vai ser o seguinte:

sudo ssh -i chave.pem ec2-user@ec2-XX-XXX-XX-XX.XX-XX-X.compute.amazonaws.com
Enter fullscreen mode Exit fullscreen mode

Com isso, você já deve ver a tela inicial da sua maquina. Agora vamos a parte legal, configurar o Go.

Use os seguintes comandos:

sudo yum update -y
sudo yum install -y golang
Enter fullscreen mode Exit fullscreen mode

Para garantir que ficou certo, rode:

go version
Enter fullscreen mode Exit fullscreen mode

Você deve ter algo parecido com isso:

Go version

Caso precise atualizar o Go para uma versão mais recente, como eu por exemplo, precisava da 1.21, rode esses comandos:

wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
tar -xvf go1.21.0.linux-amd64.tar.gz
mv go /usr/local
Enter fullscreen mode Exit fullscreen mode

Configure as variáveis de ambiente do Go com os seguintes comandos:

export GOROOT=/usr/local/go
export GOPATH=$HOME/Apps/app1
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
Enter fullscreen mode Exit fullscreen mode

Com isso rode novamente o go version para ver se ficou conforme desejado.

Agora já temos tudo pronto para rodar a aplicação, basta clonar seu repo para a AWS via git clone no SSH, criar seu .env caso necessário, rodar o go mod tidy para atualizar as dependências do seu projeto e por fim rodar o go run main.go no diretório do seu main.

Caso tenha problemas de permissão, rode os comandos com o sudo.

para testar, basta usar a url, seguido pa porta, como por exemplo:

http://ec2-XX-XXX-XX-XXX.XX-XXX-X.compute.amazonaws.com:8080/mainPage

E por hoje é só pessoal, até a próxima ;)

Top comments (0)