名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。

serverlessでとりあえずHelloWorldくらいのAPIを立ててみる

IAMとか理解してないので引っかかりまくったゾ。。。

やったこと

この記事を参考にした。

Serverless Frameworkの使い方まとめ - Qiita

ただ、最終的にデプロイしたいのはGoのコードだったので、Goの方はこれを参考に、 aws-go-mod テンプレートを使用した。

ServerlessFrameworkにてaws-go-modテンプレートのサービスをデプロイしてみる - Qiita

事前にnpm系統の何かをアップデートしていた。(この手順については割愛)

AWS周りの設定

デプロイ用のユーザーが必要なのでIAMを作成した。初めてでよくわからなかったのだが、頑張ってこれを見ながらすすめる…。

Serverless Dashboard - Access Roles

やったこととしては、こんな感じ。ちなみにOrganization的なやつでやってる場合はよくわからないです。僕は個人で遊んでいるだけなので。。。。

  • AWSのIAMを作る画面に移動する
  • ユーザーあたりをクリックして、ユーザーを追加
  • プログラムの実行ユーザーとかで選ぶ
  • 操作権限は雑にAdministratorAccessとかにした(真面目に管理する場合はもう少しちゃんとした権限にする)
  • あとはポチポチしてたのであんまり記憶にない、最後にアクセスキーとかが表示されるのでコピるなりCSVをダウンロードするなりしておく

で、awsのconfigにつっこんどく。きーとしーくれっとはいい感じに置換する。

serverless config credentials --provider aws --key きー --secret しーくれっと

(ここでローカルの ~/.aws/credential みたいなファイルを見たら、デフォルトユーザーになっていたので、後でしれっとserverless_deployみたいなユーザー名にした)

ここまででやっとAWSにつなぐための設定ができた。

Serverlessでデプロイしてみる

npm のグローバルインストールで serverless を入れておく。(あんまりグローバルには入れたくないのだが、まあこれは使い回すかなあと思って入れておく)

npm install -g serverless

そのあと雑なフォルダで下記を実行した。

sls create --template aws-go-mod --path test-func

ビルドしてデプロイ。それなりに時間がかかった。

make build
serverless deploy -v --aws-profile serverless_deploy

その後Curlで表示されてるAPI叩いたら動いた。

f:id:MireiMixin:20200112144951p:plain

まとめ

取りあえず動くところまで行けたので良かったです。あとserverless.yml をもう少し設定変えてあげれば色々できるのかなーと思いつつ、色々知らないので調べないと・・・ という気持ちになりました。いちいち発行されるドメイン覚えておくのもあれだし、ドメインなんか取ろうかな…。

手軽に小さいAPIがデプロイできるようになったので、もう少し勉強して活用できるようになれば、と思います。