はじめに
前回に引き続き、VSCodeのRemote - Containersを使って開発環境を構築していきます。
Remote - Containersでは標準で、Go, Python, PHP, Ruby, Node, Java, Rust, C, swift など、多くの開発環境が用意されています。
提供されている環境のリストは以下リンクから確認することができます。
https://github.com/microsoft/vscode-dev-containers/tree/master/containers
今回はこのリストに載ってない AWS SAM(SAM、Serverless Application Model)の開発環境を構築してみます。
構築手順
適当なディレクトリ(今回は
dev-sam
)を作成しVSCodeで開きます。
(このディレクトリの中に開発用コンテナ情報とソースコードが格納されます。)VSCodeからコマンドパレットを開き、
Remote-Containers: Add Development Container Configuration Files
と入力する。開発環境として使用するベースのコンテナとして、
Docker in Docker
を選択する。Dockerfile
を編集する。.devcontainer/Dockerfile
の末尾に以下を追記する。
RUN apt-get update &&\
apt-get install -y gcc build-essential curl file git vim
USER vscode
WORKDIR /home/vscode
ENV LANG=en_US.UTF-8 \
PATH=/home/vscode/.linuxbrew/bin:/home/vscode/.linuxbrew/sbin:$PATH \
SHELL=/bin/bash
RUN git clone https://github.com/Homebrew/brew /home/vscode/.linuxbrew/Homebrew \
&& mkdir /home/vscode/.linuxbrew/bin \
&& ln -s ../Homebrew/bin/brew /home/vscode/.linuxbrew/bin/ \
&& brew config
RUN git config --global http.postBuffer 2M &&\
brew tap aws/tap &&\
brew install aws-sam-cli &&\
brew install node
- 右下の通知アイコンから、
Reopen in Container
を選択する。
linux brew を使って色々インストールしているので初回は時間がかかります。 (数時間かかるので寝る前にでもやっておきましょう)
SAM プロジェクト作成
とりあえずnode.jsのサンプルプロジェクトを実行してみます。
オプションは初期設定でポチポチしていきます。
vscode ➜ /workspaces/sam-container $ sam init
Which template source would you like to use?
1 - AWS Quick Start Templates
2 - Custom Template Location
Choice: 1
What package type would you like to use?
1 - Zip (artifact is a zip uploaded to S3)
2 - Image (artifact is an image uploaded to an ECR image repository)
Package type: 1
Which runtime would you like to use?
1 - nodejs14.x
2 - python3.8
3 - ruby2.7
4 - go1.x
5 - java11
6 - dotnetcore3.1
7 - nodejs12.x
8 - nodejs10.x
9 - python3.7
10 - python3.6
11 - python2.7
12 - ruby2.5
13 - java8.al2
14 - java8
15 - dotnetcore2.1
Runtime: 1
Project name [sam-app]:
Cloning app templates from https://github.com/aws/aws-sam-cli-app-templates
AWS quick start application templates:
1 - Hello World Example
2 - Step Functions Sample App (Stock Trader)
3 - Quick Start: From Scratch
4 - Quick Start: Scheduled Events
5 - Quick Start: S3
6 - Quick Start: SNS
7 - Quick Start: SQS
8 - Quick Start: Web Backend
Template selection: 1
-----------------------
Generating application:
-----------------------
Name: sam-app
Runtime: nodejs14.x
Dependency Manager: npm
Application Template: hello-world
Output Directory: .
Next steps can be found in the README file at ./sam-app/README.md
ビルドして、ローカル(DevContainer内)で実行します。
cd sam-app
sam build
sam local start-api
ローカル環境から、ブラウザやcurl
で http://127.0.0.1:3000/hello にアクセスすると、{"message":"hello world"}
が返ってきます。
まとめ
時間はかかりましたが、SAM環境を構築することができました。
他のコンテナをベースにすればもっとスマートに環境を構築できるかもしれません。
もっといい方法があれば教えてください(´・ω・`)