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

AWS Organizations下でのカスタムリソースの使い方

Avatar for 西内渓太 西内渓太
April 16, 2025
230

AWS Organizations下でのカスタムリソースの使い方

Avatar for 西内渓太

西内渓太

April 16, 2025
Tweet

Transcript

  1. 1 Copyright(C) NRI Netcom, Ltd. All rights reserved. 目次 AWS

    Organizations下でのカスタムリソースの使い方 はじめに 01 自己紹介 02 AWS CloudFormation カスタムリソースとは 03 Organizations下におけるカスタムリソースのユースケース 04 注意点 05 まとめ 05
  2. 2 Copyright(C) NRI Netcom, Ltd. All rights reserved. 目次 AWS

    Organizations下でのカスタムリソースの使い方 はじめに 01 自己紹介 02 AWS CloudFormation カスタムリソースとは 03 Organizations下におけるカスタムリソースのユースケース 04 注意点 05 まとめ 05
  3. 3 Copyright(C) NRI Netcom, Ltd. All rights reserved. はじめに ◼

    本日の勉強会ではOrganizations下でのCloudFormation カスタムリソースについてお話しします ◼ Organizations下ではCloudFormation StackSetsでリソースを展開することも多々あるかと思います ◼ StackSetsと合わせ技でカスタムリソースの使い方も知ると、より効率的なマルチアカウントの統制を利かせることが できます ◼ カスタムリソースの活用法・注意点を今回の勉強会で学んでいただけると幸いです ◼ 資料作ったら思いの外、カスタムリソースDiveDeepになってしましたので、Organizations自体の深掘は他登壇者の 皆さんにお任せします… AWS Organizations下でのカスタムリソースの使い方
  4. 4 Copyright(C) NRI Netcom, Ltd. All rights reserved. 目次 AWS

    Organizations下でのカスタムリソースの使い方 はじめに 01 自己紹介 02 AWS CloudFormation カスタムリソースとは 03 Organizations下におけるカスタムリソースのユースケース 04 注意点 05 まとめ 05
  5. 5 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ 氏名:西内

    渓太 ◼ 経歴 • 兵庫県出身 • 2017年4月~ 日系SIer企業 新卒入社 機械学習でのデータ分析・新規サービス事業立ち上げ(PMO、運用保守)etc. 幅広い業務に従事 • 2022年11月~ NRIネットコム入社 クラウド(AWS)を活用した顧客システムの構築支援やCCoE向け支援業務に従事 • 2024 Japan AWS All Certifications Engineers ◼ 好きなAWSサービス AWS Organizations、AWS CloudFormation(特にStackSets) ◼ 保有AWS資格 自己紹介 AWS Organizations下でのカスタムリソースの使い方
  6. 6 Copyright(C) NRI Netcom, Ltd. All rights reserved. 目次 AWS

    Organizations下でのカスタムリソースの使い方 はじめに 01 自己紹介 02 AWS CloudFormation カスタムリソースとは 03 Organizations下におけるカスタムリソースのユースケース 04 注意点 05 まとめ 05
  7. 7 Copyright(C) NRI Netcom, Ltd. All rights reserved. AWS CloudFormation

    カスタムリソースとは カスタムリソースを使用すると、CloudFormation テンプレートにカスタムプロビジョニングロジックを記述し、スタックを作成、 更新 (カスタムリソースを変更した場合)、または削除するたびに CloudFormation にそのロジックを実行させることが できます。これは、プロビジョニング要件に、CloudFormation の組み込みリソースタイプでは表現できない複雑なロジック やワークフローが含まれる場合に役立ちます。 引用元:カスタムリソースを使用してカスタムプロビジョニングロジックを作成する https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/template-custom- resources.html AWS Organizations下でのカスタムリソースの使い方 公式ドキュメントによると
  8. 8 Copyright(C) NRI Netcom, Ltd. All rights reserved. AWS CloudFormation

    カスタムリソースとは ◼ CloudFormation Stackを作成、更新(※後述)、削除のたびに実行される特殊なリソース ◼ リソースの種類としてはAmazon SNSまたはAWS Lambdaを使用することが可能 ◼ リソースタイプ AWS::CloudFormation::CustomResource または Custom::<任意の名前> で作成 ◼ 実際に使われるのはLambdaの方が多い…? AWS Organizations下でのカスタムリソースの使い方 かみ砕いて解説すると・・・ AWS CloudFormation Stack AWS Lambda Amazon Simple Notification Service (Amazon SNS)
  9. 9 Copyright(C) NRI Netcom, Ltd. All rights reserved. 目次 AWS

    Organizations下でのカスタムリソースの使い方 はじめに 01 自己紹介 02 AWS CloudFormation カスタムリソースとは 03 Organizations下におけるカスタムリソースのユースケース 04 注意点 05 まとめ 05
  10. 10 Copyright(C) NRI Netcom, Ltd. All rights reserved. Organizations下におけるカスタムリソースのユースケース ◼

    カスタムリソースLambdaからCloudFormation未対応のリソースに対して、API実行でリソース作成等が可能 ◼ StackSetsとして展開することで、StackSetsのようにリソースを作成することが可能 AWS Organizations下でのカスタムリソースの使い方 ①CloudFormation未対応のリソースをCloudFormation StackSets的に作成する AWS CloudFormation Stack AWS Lambda AWS account AWS Organizations AWS account AWS account Stack ・・・ 同上 AWS Security Hub EnableSecurityHub のAPIを実行 ※Security HubがCloudFormation未対応の場合
  11. 11 Copyright(C) NRI Netcom, Ltd. All rights reserved. Organizations下におけるカスタムリソースのユースケース ◼

    リソースの更新後、APIの実行が必要な場合にカスタムリソースを実行できる(※ただし後述の工夫が必要) AWS Organizations下でのカスタムリソースの使い方 ②リソースに対してAPIの実行を併せて行う AWS CloudFormation Stack AWS account AWS Organizations AWS account IAM Access Analyzer Template テンプレート内のIAM Access Analyzer のアーカイブルールを更新 ApplyArchiveRuleを実行しないと、 既存の検知結果はアーカイブされない! ※StackSetsでIAM Access Analyzerを展開しているケースを想定
  12. 12 Copyright(C) NRI Netcom, Ltd. All rights reserved. Organizations下におけるカスタムリソースのユースケース ◼

    リソースの更新後、APIの実行が必要な場合にカスタムリソースを実行できる(※後述の工夫が必要) AWS Organizations下でのカスタムリソースの使い方 ②リソースに対してAPIの実行を併せて行う AWS CloudFormation Stack AWS account AWS Organizations AWS account IAM Access Analyzer Template テンプレート内のIAM Access Analyzer のアーカイブルールを更新 AWS Lambda カスタムリソースLambdaから ApplyArchiveRuleを実行
  13. 13 Copyright(C) NRI Netcom, Ltd. All rights reserved. 目次 AWS

    Organizations下でのカスタムリソースの使い方 はじめに 01 自己紹介 02 AWS CloudFormation カスタムリソースとは 03 Organizations下におけるカスタムリソースのユースケース 04 注意点 05 まとめ 05
  14. 14 Copyright(C) NRI Netcom, Ltd. All rights reserved. 注意点 ◼

    IAM Access Analyzerから削除を行う場合 AWS Organizations下でのカスタムリソースの使い方 ①削除時の依存関係を考慮する
  15. 15 Copyright(C) NRI Netcom, Ltd. All rights reserved. 注意点 ◼

    IAM Access Analyzerから削除を行う場合 AWS Organizations下でのカスタムリソースの使い方 ①削除時の依存関係を考慮する AWS CloudFormation Stack AWS account AWS Organizations AWS account IAM Access Analyzer Template AWS Lambda
  16. 16 Copyright(C) NRI Netcom, Ltd. All rights reserved. 注意点 ◼

    IAM Access Analyzerから削除を行う場合 AWS Organizations下でのカスタムリソースの使い方 ①削除時の依存関係を考慮する AWS CloudFormation Stack AWS account AWS Organizations AWS account Template AWS Lambda IAM Access Analyzerを削除
  17. 17 Copyright(C) NRI Netcom, Ltd. All rights reserved. 注意点 ◼

    IAM Access Analyzerから削除を行う場合 AWS Organizations下でのカスタムリソースの使い方 ①削除時の依存関係を考慮する AWS CloudFormation Stack AWS account AWS Organizations AWS account Template AWS Lambda Stackの削除操作のためカスタムリソースが作動 しかし、IAM Access Analyzerが存在しないためエラー。 結果、Stackの削除自体も失敗する。 DependsOnでLambdaから削除すればStack削除が成功する。
  18. 18 Copyright(C) NRI Netcom, Ltd. All rights reserved. 注意点 ◼

    「作成・更新・削除時に実行」と先述したが、カスタムリソース部分のプロパティを更新しないと実行されない AWS Organizations下でのカスタムリソースの使い方 ②更新時に動作するかを考慮する
  19. 19 Copyright(C) NRI Netcom, Ltd. All rights reserved. 注意点 ◼

    「作成・更新・削除時に実行」と先述したが、カスタムリソース部分のプロパティを更新しないと実行されない AWS Organizations下でのカスタムリソースの使い方 ②更新時に動作するかを考慮する ~前略~ MyResource: Type: Custom::MyResource Properties: ServiceToken: !GetAtt HogeLambda.Arn Region: !Ref "AWS::Region“ HogeLambda: Type: AWS::Lambda::Function Properties: ~中略~ Code: (Lambdaのコード) ~後略~ カスタムリソースの記述例 カスタムリソースの記述ブロック カスタムリソースが動かすリソース (Lambda)の記述ブロック
  20. 20 Copyright(C) NRI Netcom, Ltd. All rights reserved. 注意点 ◼

    「作成・更新・削除時に実行」と先述したが、カスタムリソース部分のプロパティを更新しないと実行されない AWS Organizations下でのカスタムリソースの使い方 ②更新時に動作するかを考慮する ~前略~ MyResource: Type: Custom::MyResource Properties: ServiceToken: !GetAtt HogeLambda.Arn Region: !Ref "AWS::Region“ HogeLambda: Type: AWS::Lambda::Function Properties: ~中略~ Code: (Lambdaのコード) ~後略~ カスタムリソースの記述例 カスタムリソースの記述ブロック カスタムリソースが動かすリソース (Lambda)の記述ブロック カスタムリソースの記述部分を 更新しなければカスタムリソースは実行されない カスタムリソースが呼び出すLambdaや 他リソースの更新ではカスタムリソースは実行されない
  21. 21 Copyright(C) NRI Netcom, Ltd. All rights reserved. 注意点 ◼

    先ほどのユースケースの場合 AWS Organizations下でのカスタムリソースの使い方 ②更新時に動作するかを考慮する AWS CloudFormation Stack AWS account AWS Organizations AWS account IAM Access Analyzer Template テンプレート内のIAM Access Analyzer のアーカイブルールのみを更新 AWS Lambda カスタムリソース記述ブロックが 更新されないため実行されない
  22. 22 Copyright(C) NRI Netcom, Ltd. All rights reserved. 注意点 ◼

    適宜更新可能なパラメータをカスタムリソース側に設定する AWS Organizations下でのカスタムリソースの使い方 ②更新時に動作するかを考慮する ~前略~ MyResource: Type: Custom::MyResource Properties: VersionNumber: 0 ServiceToken: !GetAtt HogeLambda.Arn Region: !Ref "AWS::Region“ HogeLambda: Type: AWS::Lambda::Function Properties: ~中略~ Code: (Lambdaのコード) ~後略~ カスタムリソースの記述例 カスタムリソースの記述ブロック カスタムリソースが動かすリソース (Lambda)の記述ブロック カスタムリソースのPropertiesに 適当なパラメータ(日付・バージョンetc.)を設定。 他リソース更新時に併せて書き換えてやることで、 カスタムリソースの実行が可能になる。
  23. 23 Copyright(C) NRI Netcom, Ltd. All rights reserved. 注意点 ◼

    カスタムリソースの存在するCloudFormationは、カスタムリソースの結果が分からないとStackが実行中のままになる ◼ カスタムリソース独自の返却メソッドを実装して、成功 or 例外をLambdaからカスタムリソースへ送るようにする ◼ 結果が返らない場合のデフォルトタイムアウトは1時間 ◼ プロパティでタイムアウト時間を設定できるので、5分等の短い時間に設定する AWS Organizations下でのカスタムリソースの使い方 ③レスポンスの設定またはタイムアウト設定を必ず行う AWS CloudFormation Stack AWS Lambda AWS account AWS Organizations AWS account ・・・ create_in_progress (Max 1時間)
  24. 24 Copyright(C) NRI Netcom, Ltd. All rights reserved. 注意点 ◼

    Organizations環境でカスタムリソースを使う場合、デプロイする対象アカウントと機能に適したLambdaの実行ロール を付与して、意図しない実行を防ぐ AWS Organizations下でのカスタムリソースの使い方 ④クロスアカウントでのセキュリティを考慮する AWS CloudFormation Stack AWS Lambda AWS account AWS Organizations AWS account AWS account Role
  25. 25 Copyright(C) NRI Netcom, Ltd. All rights reserved. 目次 AWS

    Organizations下でのカスタムリソースの使い方 はじめに 01 自己紹介 02 AWS CloudFormation カスタムリソースとは 03 Organizations下におけるカスタムリソースのユースケース 04 注意点 05 まとめ 05
  26. 26 Copyright(C) NRI Netcom, Ltd. All rights reserved. まとめ AWS

    Organizations下でのカスタムリソースの使い方 ◼ 本日の勉強会ではOrganizations下でのCloudFormation カスタムリソースについてお話ししました ◼ カスタムリソースは柔軟性があるため非常に便利ですが、一方で注意点もあります ◼ 今回お話しした注意点を踏まえてカスタムリソースの活用をぜひご検討ください