Upgrade to Pro — share decks privately, control downloads, hide ads and more …

とあるチームの手動作業の多いCloudFormation運用とその改善

NaoyaYamamoto
October 27, 2024
140

 とあるチームの手動作業の多いCloudFormation運用とその改善

NaoyaYamamoto

October 27, 2024
Tweet

Transcript

  1. 自己紹介 名前:山本 直弥 所属:株式会社シーイーシー@名古屋 2023-2024 Japan AWS All Certifications Engineer

    JAWS登壇: オフラインは今回が初 好きなAWSサービス: AWS Lambda AWS Step Functions AWS CloudFormation 1 ※Xのアイコン X:@Nao_Engineer_AC
  2. テンプレート CloudFormation(Cfn)とは? 3 • YAML/JSONで記述されたテンプレートを元にAWS リソースをデプロイする • メリット ➢リソースをコードで管理するので各リソースの設定の確認、変更管理が容易 ➢一括で

    デプロイできるのでリリースの負荷や手動操作の設定ミスのリスク減少 ➢関連する機能やツールが多い リソース スタック 各リソースの状態を YAML/JSONで定義したもの テンプレートからプロビ ジョニングされるリソー スの集合 コード(YAML/JSON) → リソース
  3. CfnのPolicy as Code:AWS CloudFormation Guard • AWS CloudFormation Guard(Cfn-guard) •

    独自ルールを定義してテンプレート定義の正しさを検証 • 意図せぬ設定でデプロイされることを防ぐ Template <例> Lambda タイムアウト=◦◦ メモリサイズ=◦◦ など任意ポリシーを定義 ※単項演算子 (exists,is_string等)、二項 演算子(==,>=等)で評価 CloudFormation Stack ※Cfnテンプレートを元にルール ファイルを作成することも可能 Cfn-guard Template Cfn-guard 意図せぬ変更がないか 定義したルールに従っているか
  4. 過去のPJの概略図 DEVアカウント STG/PRD兼用アカウント EC2 instance contents AWS Step Functions workflow

    Stack (STG) Stack (PRD) AWS Step Functions workflow Template • DEVは各リソースを手動作成しているサーバレス系サービスが多いシステム • STG/PRDデプロイ時にFormer2で一連の機能ごとにCfnテンプレート作成 • Former2で出力したテンプレートをSTG/PRDにデプロイ AWS Step Functions workflow Management Console スキャン Former2のおかげでIaC運用が簡単に行えそう ノーコードでテンプレ出力
  5. 一括テンプレ化の課題 • 別環境用のパラメータ化の際に結局、手作業修正が発生 • 環境固有の設定値が固定値で出力されるので修正が必要 (リソース名、ARN、SfnステートマシンのJSON定義内のARN) • 一連の機能の大きなテンプレートを一括手修正するため、修正ミス発生 • 一度の手作業修正の範囲が大きい

    • DEV環境開発後にテンプレ化するため、 開発時に行った設定のテンプレ化忘れも発生しやすい 8 ①DEVをそのまま テンプレート化 ③手動修正による修正漏れや テンプレ化忘れ発見、再修正 ②環境に合わせるための手作業編集 めちゃ手作業 時間もかかる DEV_Function1 →${Env}_Function1 など各種変数化 <Former2を使った別環境デプロイ作業イメージ> Stack Template Template テンプレート化忘れの リスク有り
  6. 運用を改善:DEV開発時点からIaC管理 9 DEVアカウント STG/PRD兼用アカウント AWS Step Functions workflow Stack (STG)

    Stack (PRD) AWS Step Functions workflow Template AWS Step Functions workflow Stack (DEV) DEV開発の段階でテンプレ作成 →開発完了時点でテンプレの正しさは検証できているはず DEVで検証済みのテンプレを再利用 手作業のリスクを回避 リリースの準備負荷軽減