魚とお茶と富士山と車と新しいもの好きエンジニアのポートフォリオサイトです。
- フロントエンド: Nuxt.js 3 (SPA)
- スタイリング: TailwindCSS v3
- インフラ: AWS (S3 + CloudFront + Route53)
- IaC: AWS CDK (TypeScript)
- CI/CD: GitHub Actions (OIDC認証)
- Node.js 18以上
- npm
# 依存関係のインストール
npm install
# 開発サーバーの起動
npm run dev開発サーバーは http://localhost:3000 で起動します。
npm run generate生成された静的ファイルは dist/public/ ディレクトリに出力されます。
- AWS CLI がインストールされ、設定済みであること
- AWS CDK CLI がインストールされていること (
npm install -g aws-cdk) - tomohiko.io のRoute53ホストゾーンが存在すること
-
CDKディレクトリに移動
cd infra -
依存関係のインストール
npm install
-
CDKのブートストラップ(初回のみ)
npx aws-cdk bootstrap --region us-east-1
-
インフラのデプロイ
npx aws-cdk deploy --require-approval never
デプロイされるリソース:
- S3バケット(www.tomohiko.io)
- CloudFront ディストリビューション
- SSL証明書(AWS Certificate Manager)
- Route53 Aレコード(www.tomohiko.io, tomohiko.io)
- GitHub Actions用OIDCプロバイダーとIAMロール
このプロジェクトではGitHub ActionsのOIDC(OpenID Connect)を使用してAWSリソースにアクセスします。IAMアクセスキーは不要で、よりセキュアです。
リポジトリの Settings > Secrets and variables > Actions > Variables で以下のVariableを設定してください:
AWS_ROLE_ARN: CDKデプロイ後に出力されるGitHub Actions用IAMロールのARN
CDKデプロイ後、以下のコマンドでロールARNを取得できます:
cd infra
aws cloudformation describe-stacks --stack-name PortfolioSiteStack --query 'Stacks[0].Outputs[?OutputKey==`GitHubActionsRoleArn`].OutputValue' --output text出力例:
arn:aws:iam::848738341109:role/PortfolioSiteGitHubActionsRole
CDKスタックでは以下のリポジトリを想定しています:
- リポジトリ:
kter/portfolio-cms-site - ブランチ:
main
異なるリポジトリ名を使用する場合は、infra/lib/infra-stack.ts の以下の部分を修正してください:
StringLike: {
'token.actions.githubusercontent.com:sub': 'repo:YOUR_USERNAME/YOUR_REPO_NAME:ref:refs/heads/main',
},main ブランチにプッシュすると、GitHub Actionsが自動的に:
- Nuxtアプリケーションをビルド
- 静的ファイルをS3にアップロード
- CloudFrontのキャッシュを無効化
- OIDC認証: IAMアクセスキー不要のセキュアな認証
- 最小権限の原則: GitHub Actionsロールには必要最小限の権限のみ付与
- CloudFront OAC: S3バケットへの直接アクセスを防止
- HTTPS強制: すべてのトラフィックをHTTPSにリダイレクト
- Hero: プロフィール情報とギャラリー画像のスライドショー
- Work Experience: 技術経験年数
- Links: 各種SNS・技術サイトへのリンク
- 自作サービス: 開発したアプリケーション
- Certifications: 国家資格とAWS認定資格(14資格)
- Contact: 連絡先情報
- レスポンシブデザイン
- AWS認定資格ロゴの表示
- 自動画像スライドショー
- モダンなUI/UX
- GitHubリポジトリ名がCDKスタックの設定と一致しているか確認
mainブランチからのプッシュか確認- IAMロールARNが正しく設定されているか確認
- GitHub VariablesにAWS_ROLE_ARNが設定されているか確認
- us-east-1 リージョンでデプロイしているか確認
- tomohiko.io のホストゾーンが存在するか確認
- 既存のS3バケットが削除されているか確認
このプロジェクトは個人のポートフォリオサイトです。
© 2025 高橋智彦 (Takahashi Tomohiko)