0
0

More than 1 year has passed since last update.

GoとEC2で「Hello, World!」

Last updated at Posted at 2021-11-07

追記

この記事を書き終わってから、他の方々の記事を検索してみたのですが、AWS SDK for Goを使うのが一般的みたいです。
https://aws.amazon.com/jp/sdk-for-go/

この記事では、EC2を手動で作って、GoのコードをコンパイルしたバイナリファイルをEC2にアップロードする方法です。よろしくお願いします。

やりたいこと

GoとEC2を使って、ブラウザでHello, World!するだけです。
こちらの記事を大変参考にしました。
https://qiita.com/Dragon-taro/items/09a67b93093770348ce5

ローカルにGoは既にインストールされている前提です。
ちなみに、僕のGoのバージョンは1.16.6でした。

Goアプリの作成

ファイル構成

.
└── main.go
main.go
package main

import (
    "fmt"
    "log"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello, World!")
    })

    log.Fatal(http.ListenAndServe(":8080", nil))
}

EC2の作成

以下、コンソール画面をポチポチしてEC2を作成する。

項目
Amazonマシンイメージ Amazon Linux2 AMI
インスタンスタイプ t2.micro
ネットワーク (デフォルト)
サブネット 優先順位なし(デフォルト)
自動割り当てパブリックIP 有効
EBSサイズ(GiB) 20
タグ Name:app-ec2

セキュリティグループ

タイプ プロトコル ポート範囲 ソース
SSH TCP 22 0.0.0.0/0
HTTP TCP 80 0.0.0.0/0::/0
HTTPS TCP 443 0.0.0.0/0::/0

ターミナル作業

以下、ターミナルで作業していきます。
xxxxx.pemは、キーペアのダウンロードした秘密鍵ファイル、
xxx.xxx.xxx.xxxは、EC2のパブリックIPv4アドレスです。
適宜読み替えてください。

local
# 秘密鍵ファイルを移動、権限変更
$ mv ~/Downloads/xxxxx.pem ~/.ssh
$ chmod 700 ~/.ssh/xxxxx.pem

# linux形式でコンパイルする
$ GOOS=linux GOARCH=amd64 go build main.go

# ファイル転送モードでログイン
$ sftp -i ~/.ssh/xxxxxx.pem ec2-user@xxx.xxx.xxx.xxx
ec2
# ec2へ、localのmainバイナリファイルを転送
$ put main
$ exit
local
# sshでログイン
$ ssh -i ~/.ssh/xxxxxx.pem ec2-user@xxx.xxx.xxx.xxx
ec2
# nginxをインストール
$ sudo amazon-linux-extras install nginx1.12

# nginx設定ファイルを編集
$ sudo vim /etc/nginx/nginx.conf
nginx.conf
http {
    server {
        location / {
            # 追記箇所
            proxy_pass    http://localhost:8080;
        }
    }
}
ec2
# nginx起動
$ sudo service nginx start

# goアプリ起動
$ ./main```

xxx.xxx.xxx.xxxをブラウザで開くと、「Hello, World!」が見れるはず!
ご覧いただき、ありがとうございました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0