LoginSignup
4
7

More than 3 years have passed since last update.

Docker コンテナで SAM CLI を使用する

Last updated at Posted at 2019-10-06

ローカルに環境をインストールせずに 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'
4
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
7