0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

chalice入門

Last updated at Posted at 2025-03-28

はじめに

AWSの基本的な知識や操作方法、Dockerの知識については解説しません。


chaliceとは

サーバレスアプリケーションを作成できるフレームワークで、簡単にLambda+APIGatewayを使ってREST APIを作成できます。

公式のクイックスタートではpython3.7で説明されてますが、python3.12までサポートしているようです。

公式ドキュメント


動作環境

M2 macmini(MacOS Sequoia)


私はpython3.12をインストールしているので3.12で進めます。

仮想環境の作成

python3 -m venv venv
cd venv
source bin/activate

chalice install

python3 -m pip install chalice

Credentials(AWS認証情報)

AWS コンソールにサインインしてIAMでポリシーを作成する(最低限の権限)

公式ドキュメント


アクセスキーの作成

アクセスキーidとシークレットアクセスキーが必要です。
作成時にcsvでダウンロードするかweb上から情報をコピペするか選べます。

公式ドキュメント


認証情報の更新

アクセスキーidとシークレットアクセスキーを設定する

aws configure

プロジェクトの作成

chalice new-project helloworld

デプロイ

cd helloworld
chalice deploy
Creating deployment package.
Creating IAM role: helloworld-dev
Creating lambda function: helloworld-dev
Creating Rest API
Resources deployed:
  - Lambda ARN: arn:aws:lambda:us-west-2:12345:function:helloworld-dev
  - Rest API URL: https://abcd.execute-api.us-west-2.amazonaws.com/api/

curlコマンドで確認

curl https://qxea58oupc.execute-api.us-west-2.amazonaws.com/api/

URLの確認

chalice url

エラー情報

An error occurred (InvalidClientTokenId) when calling the GetCallerIdentity operation: The security token included in the request is invalid.

認証情報が古いか間違っている可能性があるので、認証情報を更新して再設定してみる。

AWSコンソールから確認(編集中)

  1. IAMロールが作成れているか確認

Dockerによる環境構築

VSCode + Dockerでの環境構築

  1. dockerfileの作成
# ベースイメージとしてUbuntuの最新安定版を使用
FROM ubuntu:22.04

# 環境変数を設定: ビルド中のインタラクティブなプロンプトを無効化
ENV DEBIAN_FRONTEND=noninteractive

# システムを更新し、必要なパッケージをインストール
RUN apt-get update && apt-get install -y \
    software-properties-common \
    curl \
    build-essential \
    libssl-dev \
    zlib1g-dev \
    libbz2-dev \
    libreadline-dev \
    libsqlite3-dev \
    wget \
    llvm \
    libncurses5-dev \
    libncursesw5-dev \
    xz-utils \
    tk-dev \
    libffi-dev \
    liblzma-dev \
    git \
    --no-install-recommends \
    && rm -rf /var/lib/apt/lists/* \
    && apt-get update && apt-get install -y net-tools

# Python 3.12のソースコードをダウンロードしてビルド
WORKDIR /tmp
RUN wget https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tgz \
    && tar -xf Python-3.12.1.tgz \
    && cd Python-3.12.1 \
    && ./configure --enable-optimizations \
    && make -j$(nproc) \
    && make altinstall \
    && cd .. \
    && rm -rf Python-3.12.1 Python-3.12.1.tgz

# シンボリックリンクを作成して「python」と「python3」コマンドをPython 3.12に設定
RUN ln -s /usr/local/bin/python3.12 /usr/local/bin/python \
    && ln -s /usr/local/bin/python3.12 /usr/local/bin/python3 \
    && ln -s /usr/local/bin/pip3.12 /usr/local/bin/pip \
    && ln -s /usr/local/bin/pip3.12 /usr/local/bin/pip3

# pipをアップグレード
RUN pip install --upgrade pip

# 作業ディレクトリを設定
WORKDIR /app

# Chaliceをインストール
RUN pip install chalice \
    && chalice new-project blog

# デフォルトコマンドを設定
CMD ["/bin/bash"]
  1. docker-compose.ymlの作成
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      # ホストのカレントディレクトリを/appにマウント
      # ./ホスト側相対パス:/コンテナ側のパス
      - ./app:/app
    ports:
      - "8000:8000"
    environment:
      - DEBIAN_FRONTEND=noninteractive
    working_dir: /app/blog
    # Chaliceローカルサーバーを起動
    command: chalice local --host=0.0.0.0 --port=8000
    tty: true
    stdin_open: true
  1. docker compose upの実行
docker compose up
  1. 実行結果
[+] Running 2/1o docker.io/library/chalice-app                                                                                    0.0s
 ✔ Service app              Built                                                                                                 2.2s
 ✔ Container chalice-app-1  Recreated                                                                                             0.1s
Attaching to app-1
app-1  | Serving on http://0.0.0.0:8000
  1. コンテナに入る

chalice/で実行する

docker-compose exec app bash

AWS認証情報の更新

aws configure

デプロイ

chalice deploy
Creating deployment package.
Creating IAM role: blog-dev
Creating lambda function: blog-dev
Creating Rest API
Resources deployed:
  - Lambda ARN: arn:aws:lambda:us-west-2:12345:function:blog-dev
  - Rest API URL: https://abcd.execute-api.us-west-2.amazonaws.com/api/
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?