Quantcast
Channel: かずきのBlog@hatena
Viewing all articles
Browse latest Browse all 1387

Go 言語で学ぶ AWS Lambda の学習用環境構築メモ

$
0
0

技術書典 7 で Goで学ぶAWS Lambda を見て BOOTH で購入しました。

booth.pm

さくっとみてみると macOS 上に Python, aws cli, go, docker などを入れてます…

う~ん、どれも普段使わない関係のものなので PC に直接入れたくない…!?ということで最近試してみてる Visual Studio Code のリモート開発で環境を作ってみようと思います。

docker on docker しないといけなくなったら、その時にまた頑張ろう。ということでとりあえず AWS の CLI と go が入ってる状態を目指します。

ベースとなるテンプレート

単一コンテナーだけで済まなくなるケースも考えて docker-compose を使っていて AWS CLI に必要な Python が入ってるものということで、Python 3 & PostgreSQLを選びました。

f:id:okazuki:20190923144657p:plain

.devcontainerフォルダーに Dockerfileがあるので Python 以外にも Go 言語も入れます。元ネタは Go 言語の公式イメージの Dockerfile

github.com

これとマージしつつ AWS CLI も pip でインストールするようにして以下のような Dockerfile になりました。 無駄はありそうなものの、まぁ動くのでとりあえずよしとしよう。

LearningAWSLambda/Dockerfile at 2079fb87aca270eba075fbd509ab76c3e2a042b1 · runceel/LearningAWSLambda · GitHub

.devcontainer/docker-compose.ymlは DB 環境がいらないのですっきりさせましょう。

version: '3'

services:
  app:
    build: 
      context: ..
      dockerfile: .devcontainer/Dockerfile

    volumes:
      - ..:/go/src
    
    command: sleep infinity

.devcontainer/docker-compose.secret.ymlファイルを作って AIM の ID と KEY を環境変数に入れておきます。

version: '3'

services: 
  app:
    environment: 
      - AWS_ACCESS_KEY_ID=xxxxxx
      - AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxx
      - AWS_DEFAULT_REGION=ap-northeast-1
      - AWS_DEFAULT_OUTPUT=json

この .devcontainer/docker-compose.secret.yml.gitignoreでリポジトリーには上がらないようにしておきました。

.devcontainer/devcontainer.jsonは、とりあえず /go/srcを作業用のフォルダーにして Go と AWS の拡張機能を入れておく感じにしておきました

{"name": "Learning for AWS Lambda using Golang",
    "dockerComposeFile": ["docker-compose.yml",
        "docker-compose.secret.yml"
    ],
    "service": "app",
    "workspaceFolder": "/go/src",
    "extensions": ["ms-vscode.go",
        "amazonwebservices.aws-toolkit-vscode"
    ]}

この状態でリモート開発機能でオープンすると…

f:id:okazuki:20190923155626p:plain

goコマンドも叩けて awsコマンドも叩けて aws s3 lsもエラーが出なかったので、ちゃんと S3 作れば結果が返ってくると信じたい。

適当に Go の Hello world を書いて F5 を押してみたらちゃんとデバッグもできた。

f:id:okazuki:20190923155904p:plain

そろそろ、本を読み始めてもいいかな??ということでゲームしよう。

時刻がずれてた

コンテナー上のイメージの時刻がずれてて aws s3 lsが失敗してたので、以下のページを参考にしました。

qiita.com

私の場合は最初からチェックが入ってたので、一度オフにして適用したあとに、またオンにしたら時刻がちゃんとなりました。


Viewing all articles
Browse latest Browse all 1387

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>