AWSを活用してPythonプログラムをWebサイト上で公開する手順について説明します。具体的には、AWS Lambda、API Gateway、およびS3などのサービスを使うことで、Pythonプログラムをサーバーレスで公開できます。
1. AWSアカウントの作成
もしまだAWSアカウントをお持ちでない場合、まずは AWSの公式サイト にアクセスして、アカウントを作成してください。
2. AWS CLIおよびBoto3の設定
Python SDKである boto3
を使ってAWSと連携します。また、AWS CLIを設定しておくとローカルでAWSサービスをコマンドラインから操作できて便利です。
- AWS CLIのインストールbashコードをコピーする
pip install awscli
- AWS CLIの設定bashコードをコピーする
aws configure
このコマンドを実行すると、AWSのアクセスキーやリージョンの設定を行います。 - Boto3のインストールbashコードをコピーする
pip install boto3
3. AWS Lambda関数の作成
PythonプログラムをAWS Lambda上で実行するには、まずLambda関数を作成します。
- Lambda関数の作成
- AWS Management Consoleにログインし、Lambdaのコンソールを開きます。
- 「関数の作成」を選択し、「一から作成」を選びます。
- 名前を付け、ランタイムで「Python 3.x」を選びます。
- 既存のロールを選択するか、新しいロールを作成します(後でIAMポリシーを設定)。
- コードのアップロード Lambda関数にPythonコードを直接記述するか、ローカルで開発したコードをzipファイルでアップロードします。
- APIからリクエストが送信され、Lambda関数内のPythonコードが実行される流れです。
- テスト
- Lambdaコンソールから、テストイベントを設定して動作確認をします。
4. API Gatewayを使ったエンドポイントの作成
WebサイトからLambda関数を呼び出すためには、API Gatewayを使ってエンドポイントを作成します。
- APIの作成
- API Gatewayのコンソールに移動し、「APIを作成」を選択。
- HTTP APIまたはREST APIを選びます(シンプルなHTTP APIで十分)。
- 新しいAPIを作成し、ルート(エンドポイントのパス)を設定。
- Lambda関数との統合
- API Gatewayで作成したエンドポイントと先ほど作成したLambda関数を統合します。
- 統合タイプで「Lambda関数」を選び、関数名を指定します。
- デプロイ
- APIをデプロイして、URLを取得します。
- このURLがWebサイトからアクセス可能なエンドポイントとなります。
5. S3を使ったフロントエンドのホスティング(オプション)
フロントエンドのページも同時に公開したい場合、AWS S3を使って静的ウェブサイトをホスティングできます。
- S3バケットの作成
- S3のコンソールに移動し、新しいバケットを作成します。
- バケット名を指定し、「パブリックアクセスを無効化」する設定を無効にして公開できるようにします。
- 静的ウェブサイトホスティングの有効化
- バケット設定の「静的ウェブサイトホスティング」を有効化します。
- インデックスファイル(例:
index.html
)をアップロードします。
- ウェブサイトのURLでアクセス可能
- S3バケットのエンドポイントURLを使用して、Webサイトを公開できます。
6. PythonコードをAWSサービスと連携
Python SDK(Boto3)を使うことで、LambdaやS3などのAWSサービスとPythonコードを連携させることができます。
例: S3にファイルをアップロードする
import boto3
s3 = boto3.client('s3')
s3.upload_file('local-file.txt', 'my-bucket', 's3-object-name.txt')
7. ドメイン名の設定(オプション)
API GatewayやS3で公開したサービスに独自のドメイン名を設定するには、Route 53などのサービスを使ってドメイン名を登録し、エンドポイントに割り当てることができます。
この流れでPythonプログラムをAWS上でホストし、公開することができます。
コメント