🐍

mise入門(3) Pythonバックエンド開発環境の移行 AWS SAM CLIでデプロイまでの動作確認

に公開

はじめに

これまでWSL2上でPython/Node.jsの開発環境を構築していたが、mise/uv/nodeへと移行することにした。
Zennの記事執筆環境、viteフロントエンド開発環境に引き続きPythonバックエンド開発環境を移行する。

移行前後の開発環境

ここでは、aws-sam-cliでデプロイまでの動作確認を行う。

aws-cliのインストール

MacOSやLinuxでは、以下のコマンドでaws-cliをインストールできる。

mise use --global aws-cli
# またはmise use --global aqua:aws/aws-cli、mise use --global asdf:MetricMike/asdf-awscli

Registry | mise-en-place

しかし、今回はWindows環境であるため、以下の手順でインストールする。

msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi
aws --version

awsコマンドが実行できない場合は再起動してみる。

AWS CLI の最新バージョンのインストールまたは更新 - AWS Command Line Interface

インストール完了したら、コントロールパネルまたはコマンドで環境変数を登録する。デフォルトのパスはC:\Program Files\Amazon\AWSCLIV2である。

パスを登録しておかないと、以下のエラーが発生する。

Error: Unable to upload artifact {...} referenced by CodeUri parameter of {...} resource.
Unable to locate credentials

uv、AWS SAM CLIのインストール

mise install uv@0.7
mise use uv@0.7

mise install aws-sam@1.140
mise use aws-sam@1.140

※現時点でuv@latest、aws-sam@latestと同等。

mise.tomlファイルに以下の通り追記する。

[tools]
uv = "0.7"

; ここから下
[tasks.setup]
run = "uv sync"

[tasks.aws_configure]
run = "aws configure --profile {プロジェクト名}"

[tasks.deploy]
run = 'sam build && sam deploy --config-env {{arg(name="env")}}'

pyproject.tomlファイルを以下の通り作成する。

[project]
name = "{プロジェクト名}"
version = "{バージョン情報}"
requires-python = "==3.11.*"
dependencies = [
    ...
]

[dependency-groups]
dev = [
    "pip==25.1.1", ; latest
    ...
]

※Pythonのバージョンが古いが、追々3.13(または11月を過ぎてしまったら3.14)へのアップグレードをしたい。

以下のコマンドでPythonをインストールし、.venvディレクトリに仮想環境を作成して依存関係をインストールする。

mise run setup

仮想環境が作成され、.venvディレクトリができるので、、コントロールパネルまたはコマンドで環境変数を登録する。パスは...\.venv\Scriptsである。

パスを登録しておかないと、以下のエラーが発生する。

Build Failed Error: PythonPipBuilder:Validation - Binary validation failed for python, searched for python in following locations : [...] which did not satisfy constraints for runtime: python3.11. Do you have python for runtime: python3.11 on your PATH?

AWS CLIの設定

Lambdaをデプロイする

以下のコマンドでLambdaをデプロイする。devはmise.tomlファイルの[tasks.deploy]で指定した環境名である。

mise run deploy dev

おわりに

これで、Windows上でPythonバックエンド開発環境をmise/uv/nodeを使って構築し、AWS SAM CLIでデプロイまでの動作確認ができた。
aws-sam-cliのプラグインがあるのを知り、人気の高まりを感じた。
aws-cliもwindowsでインストールできるようになればとも思う。
pyproject.tomlとrequirements.txtの二重管理になっているのが今後改善できればと思うことである。

Discussion