AWS Lambda、Python、Dockerを活用する実践的なチュートリアル
はじめに: AWS Lambda, Python, Dockerを使用した開発の効果
近年、クラウドコンピューティングが益々普及し、アプリケーション開発においても効率的かつ柔軟な方法が求められています。その中で、AWS Lambda、Python、およびDockerは、開発者にとって非常に有用な技術として注目されています。
AWS Lambdaは、サーバーレスコンピューティングサービスであり、コードの実行とスケーリングを自動的に行います。これにより、開発者はインフラ管理の負担を軽減し、コードの開発に集中できます。
Pythonは、読みやすく、書きやすいプログラミング言語であり、多くのライブラリやフレームワークが利用できます。これにより、開発者は迅速にプロトタイプを作成し、プロダクションコードを効率的に開発することができます。
Dockerは、コンテナ化技術であり、アプリケーションとその依存関係を統一された形式でパッケージ化します。これにより、環境の一貫性が向上し、開発、テスト、本番環境での問題が減少します。
この記事では、これらの技術を手軽に試すための方法として、AWS Lambda、Python、およびDockerを使って簡単なLambda関数を作成し、デプロイする手順を紹介します。これを試すことで、効率的で柔軟なアプリケーション開発の感覚を掴み、開発者の仕事での生産性向上に繋げられるでしょう。
目次
- 必要なツールのインストール
- Pythonコードの作成
- Dockerfileの作成
- Dockerイメージのビルド
- ローカルでのテスト
- DockerイメージをAWS Lambdaにデプロイ
- Lambda関数のテスト
- まとめ
必要なツールのインストール
AWS CLI
AWS CLIは、コマンドラインからAWSサービスを操作するためのツールです。公式ドキュメントを参考にして、AWS CLIをインストールし、aws configureコマンドで認証情報を設定してください。
Docker
Dockerは、アプリケーションをコンテナ化するためのツールです。公式ドキュメントを参考にして、Dockerをインストールしてください。
Pythonコードの作成
lambda_function.pyという名前のファイルを作成し、以下のPythonコードを記述します。
def lambda_handler(event, context):
message = "Hello from Lambda and Docker!"
print(message)
return message
このコードは、Lambda関数が実行されると"Hello from Lambda and Docker!"というメッセージを出力するだけの簡単な関数です。
Dockerfileの作成
Lambda関数のDockerイメージを作成するために、Dockerfileという名前のファイルを作成し、以下の内容を記述します。
FROM public.ecr.aws/lambda/python:3.8
COPY lambda_function.py ${LAMBDA_TASK_ROOT}
CMD ["lambda_function.lambda_handler"]
このDockerfileは、公式のAWS Lambda Python 3.8ベースイメージを使用し、lambda_function.pyをコピーし、lambda_function.lambda_handler
関数を実行するように設定されています。
Dockerイメージのビルド
作成したDockerfileを使用して、Dockerイメージをビルドします。ターミナルで、Dockerfileがあるディレクトリに移動し、以下のコマンドを実行してイメージをビルドします。
docker build -t my-lambda-image .
このコマンドは、カレントディレクトリ(.)にあるDockerfileを使用して、my-lambda-imageという名前のDockerイメージを作成します。
ローカルでのテスト
Dockerイメージが正しく作成されたことを確認するために、ローカル環境でテストしてみましょう。以下のコマンドを実行して、Lambda関数をエミュレートした環境でDockerイメージを実行します。
docker run -p 9000:8080 my-lambda-image:latest
別のターミナルを開いて、以下のコマンドを実行して、ローカルで実行中のLambda関数にリクエストを送信します。
curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'
正しく実行されると、"Hello from Lambda and Docker!"というメッセージが表示されます。
DockerイメージをAWS Lambdaにデプロイ
Amazon ECRリポジトリの作成
まず、Dockerイメージを保存するためのAmazon Elastic Container Registry(ECR)リポジトリを作成します。AWS Management ConsoleでECRに移動し、新しいリポジトリを作成します。
DockerイメージをAmazon ECRにプッシュ
次に、ビルドしたDockerイメージをECRにプッシュします。ターミナルで、以下のコマンドを実行して、ECRにログインします。
aws ecr get-login-password --region {region} | docker login --username AWS --password-stdin {account_id}.dkr.ecr.{region}.amazonaws.com
{region}と{account_id}を適切な値に置き換えてください。
次に、ECRリポジトリにイメージをプッシュします。
docker tag my-lambda-image:latest {account_id}.dkr.ecr.{region}.amazonaws.com/{repository_name}:latest
docker push {account_id}.dkr.ecr.{region}.amazonaws.com/{repository_name}:latest
{account_id}、{region}、および{repository_name}を適切な値に置き換えてください。
Lambda関数の作成
AWS Management Consoleで、Lambdaコンソールに移動し、新しいLambda関数を作成します。関数の作成方法を選択し、「コンテナイメージ」を選択します。コンテナイメージURIに先ほどプッシュしたECRリポジトリのURIを入力します。そして、関数名を入力し、適切な実行ロールを選択または作成して、関数を作成します。
Lambda関数のテスト
Lambdaコンソールから、作成したLambda関数を選択し、「テスト」タブを開きます。新しいテストイベントを作成し、任意のイベントデータを入力して(今回の例では影響はありませんが)、「テスト」ボタンをクリックします。テストが成功すると、「実行結果」に"Hello from Lambda and Docker!"というメッセージが表示されます。
まとめ
この記事では、AWS Lambda、Python、およびDockerを使用して簡単なLambda関数を作成し、デプロイする方法を学びました。これにより、Lambda関数をDockerコンテナで実行し、環境に依存しない開発とデプロイが可能になります。これは、本番環境でのトラブルシューティングや、新しいプラットフォームへの移行を容易にします。これらの技術を活用して従来の業務改善を行い、より効率的で柔軟なアプリケーション開発を行いましょう。
Discussion