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

るおん

るおん
January 19, 2025
98

 るおん

るおん

January 19, 2025
Tweet

Transcript

  1. ⾃⼰紹介 2 • 2019年 4⽉ ⼤阪⼤学⼊学 ◦ 外国語学部中国語専攻 • 2022~2024年3⽉

    アパレル系⾃社開発企業(イン ターン) ◦ toC向けLIFFアプリ ◦ 社内アプリ開発 • 2024年4⽉ クラスメソッド株式会社⼊社 ◦ LINEミニアプリ運⽤保守‧追加開発 • 実績 • 部署 ◦ クラスメソッド株式会社 ◦ リテールアプリ共創部 ◦ 24新卒 • 名前(ニックネーム) ◦ Takagaki Ryuhei ◦ X:るおん(@ruonp24) • 担当業務 ◦ LINEミニアプリ ◦ フロントエンド(React/Next.js) ◦ バックエンド(Node.js/Lambda) ◦ サーバレス構築(AWS CDK)
  2. AWS CDKとは 3 • インフラストラクチャをプログラミング⾔語で定義できるIaCツール • TypeScript, Python, Java, C#などの⼀般的なプログラミング⾔語でAWSリ

    ソースを定義可能 • 最終的にCloudFormationテンプレートに変換される 【主なメリット】 ✅ TypeScriptやPythonなどの親しいプログラミング⾔語でインフラ定義可能。 ループ処理や条件分岐などプログラミング⾔語特有の書き⽅ができる。 ✅ 環境構築の⾃動化と標準化。 ✅再利⽤性が⾼く素早い作成と破棄。 【主なコマンド】 デプロイ:cdk deploy リソース削除:cdk destroy
  3. • cdk deployで復旧を試みる → 予想外の事態発⽣... • cdk deploy しても以下の理由で失敗 ◦

    Retain属性を有効にしていたリソースが、destroy時に残って しまっており、同じ名前のS3バケットやDynamoDBテーブ ル、CloudWatchロググループをデプロイしようとして競合 発⽣。 ◦ Parameter storeに保存していたリソースのarnなどが変更さ れて依存関係が崩壊 AWS CDKならすぐ復元できるのでは? 7
  4. 1. Retain属性を持つリソースの⼿動削除 • 対象: DynamoDBテーブル、S3バケットやCloudWatchロググ ループ 2. SSMパラメータ更新 • Parameter

    Storeに保存し、参照していたリソースのarnなどを 設定し直す 3. 設定ファイルの更新 • アプリケーションの環境変数を設定するconfigファイル修正 • CognitoユーザープールIDや AppSyncのapiUrlなども変更 復旧作業 8
  5. • 追加開発においてDynamoDBの新しいテーブルを作成 ◦ 実装段階でパーティションキーを変更したくなった ◦ 既存のテーブルのパーティションキーは変更できないため、⼀度 テーブルを削除する必要があった。 ◦ cdk destory

    -all • 原因分析: ◦ CDKコマンドの影響範囲の理解不⾜。 ◦ 開発環境をチームで共有しているという認識が薄かった。 そもそも何故destroyコマンドを打とうと思ったのか 9 → チームで再発防⽌策を模索
  6. • のんピ 「AWS CDKで管理しているスタックの削除保護を有効化してみた」, Developers.IO, 2022年3月12日, https://dev.classmethod.jp/articles/enable-delete-protection-for-stacks-managed- by-aws-cdk/ • AWS

    Documentation 「CloudFormation スタックの削除を防⽌する」, AWS CloudFormation ユーザーガイド, https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide /using-cfn-protect-stacks.html 参考資料 16