Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWS Organizations下でのカスタムリソースの使い方
Search
西内渓太
April 16, 2025
300
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWS Organizations下でのカスタムリソースの使い方
西内渓太
April 16, 2025
More Decks by 西内渓太
See All by 西内渓太
CCoEって何?AWSでは何をするべき?
knishiuchi
1
1.1k
組織統制に欠かせない!CloudFormationStackSetsのお話
knishiuchi
0
160
Featured
See All Featured
Evolving SEO for Evolving Search Engines
ryanjones
0
250
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
460
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Ruling the World: When Life Gets Gamed
codingconduct
0
290
Unsuck your backbone
ammeep
672
58k
Prompt Engineering for Job Search
mfonobong
0
390
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.7k
Why Our Code Smells
bkeepers
PRO
340
58k
It's Worth the Effort
3n
188
29k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Faster Mobile Websites
deanohume
310
32k
Transcript
AWS Organizations下での カスタムリソースの使い方 NRIネットコム株式会社 デジタルソリューション事業本部 クラウド事業推進部 〒105-7114 東京都港区東新橋1-5-2 汐留シティセンター14F 〒530-0005
大阪府大阪市北区中之島3-2-4 中之島フェスティバルタワー・ウエスト24F
1 Copyright(C) NRI Netcom, Ltd. All rights reserved. 目次 AWS
Organizations下でのカスタムリソースの使い方 はじめに 01 自己紹介 02 AWS CloudFormation カスタムリソースとは 03 Organizations下におけるカスタムリソースのユースケース 04 注意点 05 まとめ 05
2 Copyright(C) NRI Netcom, Ltd. All rights reserved. 目次 AWS
Organizations下でのカスタムリソースの使い方 はじめに 01 自己紹介 02 AWS CloudFormation カスタムリソースとは 03 Organizations下におけるカスタムリソースのユースケース 04 注意点 05 まとめ 05
3 Copyright(C) NRI Netcom, Ltd. All rights reserved. はじめに ◼
本日の勉強会ではOrganizations下でのCloudFormation カスタムリソースについてお話しします ◼ Organizations下ではCloudFormation StackSetsでリソースを展開することも多々あるかと思います ◼ StackSetsと合わせ技でカスタムリソースの使い方も知ると、より効率的なマルチアカウントの統制を利かせることが できます ◼ カスタムリソースの活用法・注意点を今回の勉強会で学んでいただけると幸いです ◼ 資料作ったら思いの外、カスタムリソースDiveDeepになってしましたので、Organizations自体の深掘は他登壇者の 皆さんにお任せします… AWS Organizations下でのカスタムリソースの使い方
4 Copyright(C) NRI Netcom, Ltd. All rights reserved. 目次 AWS
Organizations下でのカスタムリソースの使い方 はじめに 01 自己紹介 02 AWS CloudFormation カスタムリソースとは 03 Organizations下におけるカスタムリソースのユースケース 04 注意点 05 まとめ 05
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 Copyright(C) NRI Netcom, Ltd. All rights reserved. 目次 AWS
Organizations下でのカスタムリソースの使い方 はじめに 01 自己紹介 02 AWS CloudFormation カスタムリソースとは 03 Organizations下におけるカスタムリソースのユースケース 04 注意点 05 まとめ 05
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 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 Copyright(C) NRI Netcom, Ltd. All rights reserved. 目次 AWS
Organizations下でのカスタムリソースの使い方 はじめに 01 自己紹介 02 AWS CloudFormation カスタムリソースとは 03 Organizations下におけるカスタムリソースのユースケース 04 注意点 05 まとめ 05
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 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 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 Copyright(C) NRI Netcom, Ltd. All rights reserved. 目次 AWS
Organizations下でのカスタムリソースの使い方 はじめに 01 自己紹介 02 AWS CloudFormation カスタムリソースとは 03 Organizations下におけるカスタムリソースのユースケース 04 注意点 05 まとめ 05
14 Copyright(C) NRI Netcom, Ltd. All rights reserved. 注意点 ◼
IAM Access Analyzerから削除を行う場合 AWS Organizations下でのカスタムリソースの使い方 ①削除時の依存関係を考慮する
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 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 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 Copyright(C) NRI Netcom, Ltd. All rights reserved. 注意点 ◼
「作成・更新・削除時に実行」と先述したが、カスタムリソース部分のプロパティを更新しないと実行されない AWS Organizations下でのカスタムリソースの使い方 ②更新時に動作するかを考慮する
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 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 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 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 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 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 Copyright(C) NRI Netcom, Ltd. All rights reserved. 目次 AWS
Organizations下でのカスタムリソースの使い方 はじめに 01 自己紹介 02 AWS CloudFormation カスタムリソースとは 03 Organizations下におけるカスタムリソースのユースケース 04 注意点 05 まとめ 05
26 Copyright(C) NRI Netcom, Ltd. All rights reserved. まとめ AWS
Organizations下でのカスタムリソースの使い方 ◼ 本日の勉強会ではOrganizations下でのCloudFormation カスタムリソースについてお話ししました ◼ カスタムリソースは柔軟性があるため非常に便利ですが、一方で注意点もあります ◼ 今回お話しした注意点を踏まえてカスタムリソースの活用をぜひご検討ください