ローカルに環境をインストールせずに SAM CLI でビルド・デプロイをおこなう。
コンテナイメージの作成
必要なランタイムおよび SAM CLI がインストールされたイメージを作成する Dockerfile を作成する。(以下は Python 3.7 の例)
FROM python:3.7-alpine
# Install awscli and aws-sam-cli
RUN apk update && \
apk upgrade && \
apk add bash && \
apk add --no-cache --virtual build-deps build-base gcc && \
pip install awscli && \
pip install aws-sam-cli && \
apk del build-deps
RUN mkdir /app
WORKDIR /app
イメージをビルドして適当なタグをつけておく。
docker build -t sam-python37 .
SAM CLI 実行
基本
コンテナ内から AWS リソースにアクセスするため、認証情報を含む ${HOME}/.aws をマッピングして実行する。
$ docker run \
-v $(pwd):/app \
-v ${HOME}/.aws:/root/.aws \
sam-python37 sam ...
認証プロファイルを指定する場合
$ docker run \
-v $(pwd):/app \
-v ${HOME}/.aws:/root/.aws \
-e AWS_PROFILE=${AWS_PROFILE} \
sam-python37 sam ...
認証情報を直接指定する場合
直接指定する場合は ${HOME}/.aws のマッピングは不要。
$ docker run \
-v $(pwd):/app \
-e AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} \
-e AWS_SERCET_ACCESS_KEY=${AWS_SERCET_ACCESS_KEY} \
sam-python37 sam ...
alias 設定
お好みのコマンドを alias に設定しておくと楽です。
$ alias sam-python37='docker run ... sam-python37 sam'