AWS APIGateway Lambda DynamoDB Docker

ローカル環境でAPIGateway+Lambda+DynamoDBでチャットサービスを作成する【1】:Docker環境の作成まで

こんにちは、シローです。

ここ最近新しいことばかり、吸収します。(NginxやShellScriptなどいじっていた頃と比べて)

ということで、ServerlessFrameworkでAPIGatewayのWebsocketを使ったチャットサービスの作成方法をまとめました。

前回の記事(https://shiro-secret-base.com/?p=987)をより本格的にしたものとなります。

今回はDockerの環境構築までです。(全体だと長くなっちゃうので分割しますw)

環境など

OS macOS Big Sur 11.3.1
docker version 3.3.3
docker-compose version 1.29.1

最終的な成果物のディレクトリ構成

docker-compose.ymlでserverlessとdynamodbのサービスをコンテナを立ち上げて、

dockerディレクトリ配下にそれぞれのサービスごとにディレクトリを切っています。

serverlessディレクトリではServerlessFrameworkを使った、WebSocketでのチャットサービスのプロジェクトのソースを管理しています。

また、ServerlessFrameworkの設定を行うために、aws-cliを利用するためのアクセスキー、シークレットキーが必要になります。(ローカルにも関わらず)

Docker環境の作成

このチャットサービスはDockerのコンテナ上で動くことを前提としています。

他の人でもコマンド一発で立ち上げられることでチーム開発のスピードをあげれる点で便利です。

今回はServerlessFrameworkのサービスを立ち上げるためのserverlessコンテナ、チャットで扱うデータを管理するためのdynamodbコンテナを作成します。

まずはプロジェクトのディレクトリ直下に以下の構成でファイル、フォルダを作成します。

docker-compose.ymlの記述

./docker-compose.yml

dynamodbコンテナはdynamodb-localというイメージを利用しています。(https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html)

ポートフォワードについてはWebSocketは"3334"、dynamodbは"8889"です。

.envの記述

slsコマンドで必要になるためAWSコンソールのIAMの認証情報から作成したアクセスキー、シークレットキーとリージョン名を記載します。

./.env

Dockerfileの記述

serverlessコンテナではslsコマンドのインストールやLambda関数をNode.jsを使って記述するため、node.jsのイメージを利用します。

そのイメージで扱うモジュールのインストールや、起動用スクリプトであるstartup.shを実行するための記述をDockerfileにします。

./docker/serverless/Dockerfile

下3行はコメントアウトします。理由はまだサーバレスのプロジェクトが./serverlessディレクトリに展開されていないためです。

startup.shの記述

./docker/serverless/startup.sh

今のところはこれだけです、理由は一旦slsコマンドでServerlessFrameworkの環境を構築していくためです。

サーバレス環境の下地が整ってきたら自動で起動するためのコマンドなどの記述をしていきます。

Docker環境の起動

起動自体はdocker-compose upコマンドで行います。

コンテナが起動しているのをdocker-compose psコマンドで確認します。

serverlessとdynamodbのポートフォワードがそれぞれ("3334" <=> "3000", "8889" <=> "8000")となっていれば成功です。

とりあえずはここまでとします、次回の投稿をお待ちください。

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

-AWS, APIGateway, Lambda, DynamoDB, Docker
-

© 2021 Shiro's secret base