🍒

運用保守しかやったことないのにTerraformにてAWS環境を構築してみた

に公開1

はじめに

こんにちは、インフラエンジニアのPayです。
今回は、運用保守しか経験がなかった自分が、個人で AWS 環境を Terraform を使って構築してみた話をまとめてみます。

「AWSの構築をこれから学びたい方」「AWS初学者の方」
「上流工程に挑戦したい」「自分の市場価値を高めたい」
そんな方に、少しでも参考になれば嬉しいです。

背景:なぜ構築に挑戦したのか?

私は入社して、現場で約1年間、運用保守を担当していました。

今は次の案件待機中。待機時間はSAA取得を目標に励んでいます。
業務外でも「キャリアアップにつながる行動」に使いたいと思い、AWS環境構築にチャレンジしました。

理由はシンプルです:

  • 運用保守だけではキャリアの幅が狭くなる

  • 経験- 実績を“自分で”作りたかった

Terraformとは何か

AWSをこれから学ぶ人や初学者の方はまず、「Terraformとは?」と疑問を持たれることでしょう

Terraformとは

IaC(Infrastructure as Code)という考え方に基づき、
AWSなどのクラウドリソースを ソースコードで 管理します。

なぜ Terraform を選んだのか?

AWS には CloudFormation もありますが、自分は Terraform を選択しました。

理由は以下の通りです:

  • マルチクラウド対応:Azure や GCP にも応用可能

  • IaC の市場ニーズ:Infrastructure as Code は今後ますます求められるスキル

  • Git と相性が良い:構成のバージョン管理がしやすい

構築した環境と構成

構築対象:グループ向けの「収支管理アプリ」

目的は、なるべくコストを抑えて「フルマネージド+セキュア」な構成にすること。

  • 運用人数が少ない為、メンテナンス等が最小限で済む為にフルマネージドな構成にする必要がある

  • 決済情報等を取り扱うため、情報漏洩を防ぐため高いセキュリティ性が必要

使用サービス一覧(無料枠中心)

  • Lambda

  • IAM

  • VPC / Security Groups / NAT Gateway

  • ALB(Application Load Balancer)

  • Route 53

  • DynamoDB

  • S3

  • CloudWatch Logs

  • AWS WAF

  • Cognito

  • Secrets Manager

一部サービス(NAT Gateway や ALB)は有料なので、稼働時間- トラフィックを制限することでコストを抑えました。

処理フロー

【処理の流れ】

モバイルアプリ(React Native)
↓ HTTPS通信(/api/register など)
ALB(Application Load Balancer)

Lambda 関数群(Python)
├─ cashamp-api-register(支払い登録)
└─ cashamp-api-calendar(集計処理)
- VPC内 Private Subnet に配置
- IAM Role:DynamoDB・ENI・Logs にアクセス許可

DynamoDB テーブル群
├─ Payments:tour_id, timestamp, amountなど
└─ Participants:user_id, tours, 名前など

【外部API連携(Slack通知など)】

NAT Gateway(Public Subnet)

  • Elastic IPで外部通信を許可
  • LambdaがSlack連携時に使用

セキュリティ設計

コンポーネントと対策内容
ALB

  • HTTPS (443) のみ許可
  • ACMでSSL証明書を利用

Security Group

  • ALB→Lambda:特定ポートで通信許可
  • Lambda→NAT:外部通信を許可

DynamoDB

  • IAM Roleでアクセス制御
  • VPC内アクセス限定(Publicアクセスなし)

Lambda

  • Private Subnet配置で直接外部通信不可
  • NAT経由でのみ外部連携可
  • IAMで最小権限の原則に従う

Terraform に大苦戦した話

正直、かなり苦労しました。
研修で少し触った程度では太刀打ちできず、何度もエラーに悩まされました。

ハマりポイントの一例:

  • 依存関係による謎のエラー

  • モジュール化によって関数- 変数が激増 → 混乱

  • terraform plan で何度も怒られる

  • エラー文の意味が全然わからない

でもその分、「調べる-試す-壊す」の繰り返しで、確実に力がつきました。

Terraform を用いた構築のメリット

Terraform は試行錯誤に向いているツールだと実感しました。

  • apply までは料金がかからない → 思い切って試せる

  • モジュール単位で整理 → サービス単位で深掘りできた

  • Git 管理 → 変更履歴の安心感

  • ドキュメント読みまくる習慣がついた(意外と大事)

今後やりたいこと

これで満足せず、さらに実践的なスキルを身につけたいです!

  • AWS-SAA の取得(学習中)

  • CloudFront や Step Functions などの高度サービス導入

  • コスト最適化を本格的に学ぶ

  • 構成のドキュメント化と他者への説明力を鍛える

最後に

「運用保守しかやってこなかった自分でも、Terraform を使って AWS 環境を構築できた」

これは本当に、自信につながる経験でした。

もしこの記事が少しでも参考になった方は、ぜひ「いいね」やコメントで教えてください!

まとめ

運用保守経験だけでも、構築はできる!

Terraform は難しいけど、やる価値あり!

自主的な挑戦がキャリアを前に進める!

ネイバーズ東京

Discussion

PayPay

グループ向けの「収支管理アプリ」が完成したらそれも別途記事にしますのであしからず