AWS Docker

ServerlessFrameworkをローカルで立ち上げるためのDockerコンテナ作成手順

どーも、シローだ

ServerlessFramework(通称:sls)ってご存知ですか?
どうやら、AWSのApiGatewayだのLambdaだのDynamoDBといったものを組み合わせたアーキテクチャを作成してくれるもんらしいんだ(公式:https://www.serverless.com/framework/docs/getting-started/

これだとCloudFormationとあまり変わらないと思うだろうけど、slsはローカルでそのアーキテクチャを実行することができるんだと(厳密には違うところがあるって公式さんいってたが)
チーム開発では、他の人でも検証できるようにすることを一応心がけておりまして、僕はこういうのでもDocker化したいなぁと思っちゃうんです。

てなわけで今回は、ローカルでApiGateway+Lambdaの環境を立ち上げるための手順をまとめようと思います。

環境

OS macOS Big Sur 11.3.1
Docker v20.10.6

最終的に出来上がるファイル群

作成手順

初期ファイルとディレクトリを作成

空っぽのファイルとディレクトリをとりあえず作成、あとから埋めるから

docker-compose.ymlの記述

 

docker-compose.ymlファイルと同じ階層にAWSアクセスキー、シークレットキーを持つ.envファイルを作成

slsを実行するときにAWSアクセスキー、シークレットキーを読み込むので

環境変数として.envファイルを作成し中にそれらの情報を書き込んどく必要がある

Dockerfileの記述(docker/serverless/Dockerfile)

上のファイルのコピペでOkなんですが、要点的なものを下にまとめる

awscliのインストール

このコンテナに入って、なんだかんだAWSコマンドを叩くかもしれないのでインストール

手順としてはpipでインストールした後、aptでまたインストールしないとコマンドが使えないみたいだった

serverlessとserverless-offlineをnpmでインストール

slsコマンドとしてserverlessとローカル環境で実行するためのserverless-offlinenpmでインストール

どのプロジェクトでも使用できるように-gつけるのを忘れないこと

コンテナを立ちあげて、内部に入りslsコマンドでプロジェクトを作成

でコンテナを立ち上げて

でコンテナに入る

そのあと、slsコマンドでプロジェクトを作成

serverless/src配下にhandler.jsserverless.ymlファイルが作成されればOk

ローカルで実行できるようserverless.ymlを編集

serverless.ymlの一番下に以下を追加

これでsls offlineと打てばローカルでサーバレスアーキテクチャを実行できるってわけだぁ

コンテナ立ち上げ時に自動でsls offlineが起動している状態にする

今の状態だとコンテナ内部に入らないとローカルで動く状態にできないので、どうせならdocker-compose upすれば自動で立ち上がるようにしたい

Dockerfileに以下を追加

docker/serverless/Dockerfileの一番下に以下を追加

startup.shの記述

sls offline --host 0.0.0.0がローカルで実行している部分です。(--host 0.0.0.0が重要)

あとはローカルで確認するだけ

http://localhost:3333をブラウザで開くと

こんな画面になればめでたしめでたし〜

今回は手短に、以上!

 

Docker実践ガイド 第2版 impress top gearシリーズ
本書では、技術者だけでなく、IT基盤の方向性の検討や戦略の立案、意思決定を行う立場の方が、導入前の検討を実践できる内容を盛り込みました。具体的には、コンテナの特徴、導入時の検討項目、注意点などのチェックリストを設け、システム構成例などを解説図にまとめ、要点を把握しやすいようにしました。また、大規模データセンター向けのコンテナ基盤構築の経験がない技術者でも、その基礎を理解できるよう、Dockerのインストール手順、使用法などを具体的に記載しています。

-AWS, Docker

© 2021 Shiro's secret base