Software Engineer Blog

エンジニアブログです。技術情報(Go/TypeScript/k8s)や趣味の話も書くかもです。

Serverless App作成ツール Up を利用してみた

概要

up と呼ばれるツールを利用してみました。
(Introductionをそのまま試してみただけです。)

github.com

upとは?

Serverless Applicationを簡単に作成、デブロイできるツールです。
現状の構築環境と方式は、下記のとおりです。

対応言語

個人的にはGolangに対応しているのが良いですね。
(Lambda自体はまだ、Golang対応していないので)

手順

こちらのサイト に記載のまんまです。

1. Install

curl直接 or npm

# curl版
% curl -sfL https://raw.githubusercontent.com/apex/up/master/install.sh | sh

# npm版 (内部で上記curlを叩いているだけです)
% npm i -g up

2. AWS Credenstialsの設定

~/.aws/credentials に追記が楽かと思います。

[go-up-test]
aws_access_key_id = xxxxxxxx
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxx

3. up.json(設定ファイル)作成

必須の項目は、profileのみです。
~/.aws/credentials で設定したprofile名と合わせてください。

{
    "profile": "go-up-test",
    "regions": ["ap-northeast-1"]
}

4. 好きな言語でサーバー側の処理を記載

package main

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

func main() {
        addr := ":" + os.Getenv("PORT")
        http.HandleFunc("/", hello)
        log.Fatal(http.ListenAndServe(addr, nil))
}

func hello(w http.ResponseWriter, r *http.Request) {
        fmt.Fprint(w, "Hello go-up-test")
}

5. Deploy

# develop環境へのDeploy
% up

# production環境へのDeploy
% up deploy production

6. 確認

# ブラウザでOpen
% up url --open

# ClipbordにCopy
% up url --copy
% curl "https://xxxxxxx.execute-api.ap-northeast-1.amazonaws.com/development/"
Hello go-up-test

補足

  • up.json に諸々の設定を加えることができそうです
  • up logs コマンドでログが見れます
# past 5 minutes
% up logs

# real time log
% up logs -f
  • up stack delete で作成したresourcesを全て削除できます

サンプルコード

github.com

所感

AWSの設定さえ終わっていれば、非常に簡単にServerless Appを作成できると感じました。Slack Commandが簡単に作れるようなので、試してみたいです。 (元々、SlackのSlash Commandを簡単に作れるという記事を見かけて、興味を持ちました。)

参考