こちらのページでは、本ポートフォリオサイトを支えるAWSインフラ構成と、それを自動化するバックエンドの仕組み(IaC、サーバーレスアーキテクチャ)について解説しています。
本サイトの構築に使用した各種技術(HTML、CSS、JavaScript、Python、Terraform)およびAWSの各マネージドサービスに関する知識は、すべてオンライン教材の活用や生成AIを用いたプロンプトエンジニアリングにより、独学で習得・実装いたしました。
本サイトのインフラ構成図はこちらになります。
本ポートフォリオサイトは、Amazon S3に配置した静的ファイルを、Amazon CloudFrontおよびRoute 53を介してセキュアに配信しています。
また、S3とAWS Lambda(Python)を連携させた自動化パイプラインを構築しており、S3バケットへ新規イラスト画像を追加するだけで、HTMLが動的に更新され、自動でデプロイされる仕組みを実装し、 同時に、一連の処理完了/失敗のステータスを、Amazon SNS(Simple Notification Service)経由でリアルタイムで通知されます。
1. Infrastructure as Code (IaC) の実践:
すべてのインフラリソースをTerraformで定義・管理。設定漏れを防ぎ、構成の可視化を行っています。
2. Lambdaによるイベント駆動型自動化パイプライン
S3への画像追加をイベントトリガーとしたHTML動的更新・自動デプロイ機能を実装。処理結果(成功・失敗)はAmazon SNSにより即時メール通知されます。
3. CloudFront + S3 によるセキュア配信(OAC構成)
Route 53での独自ドメイン運用、およびCloudFront経由のHTTPS通信による安全かつ低遅延な静的サイト配信環境を構築。
4. 完全マネージドサービスの採用
プロビジョニングやOS管理が不要なAWSマネージドサービスのみで構成し、インフラの運用負荷と稼働コストの大幅な削減を意識しています。
このインフラ環境(S3、Lambda、SNSなど)はすべてTerraformを用いてコード管理(Infrastructure as Code)しています。
# ここに main.tf などのTerraformコードを貼り付けてください
resource "aws_s3_bucket" "portfolio" {
bucket = "yuta-saito-portfolio"
}
resource "aws_sns_topic" "deploy_topic" {
name = "portfolio-deploy-topic"
}
S3への画像追加をトリガーに、HTMLを動的に生成し、SNSを通じてメール通知をパブリッシュするLambda関数のソースコードです。
# ここに boto3 等を使用したPython(Lambda)のコードを貼り付けてください
import boto3
def lambda_handler(event, context):
# HTMLの自動生成ロジック
# SNSでのメール通知処理
sns = boto3.client('sns')
sns.publish(
TopicArn='arn:aws:sns:...',
Message='ポートフォリオサイトの自動デプロイが完了しました。',
Subject='【通知】デプロイ完了'
)