$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWS Outposts 上のリソースを CDK する
Search
[email protected]
April 15, 2022
Programming
0
1.2k
AWS Outposts 上のリソースを CDK する
AWS Outposts 上のリソースを CDK で管理する話です
[email protected]
April 15, 2022
Tweet
Share
More Decks by
[email protected]
See All by
[email protected]
NetBox をオンプレミスから AWS へ移してみた
moba
0
1k
AWS CDKでもMacを 管理したい
moba
0
560
AWS Outposts を AWS CDK で管理する話
moba
0
510
Other Decks in Programming
See All in Programming
非同期処理の迷宮を抜ける: 初学者がつまづく構造的な原因
pd1xx
1
700
手が足りない!兼業データエンジニアに必要だったアーキテクチャと立ち回り
zinkosuke
0
630
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
790
複数人でのCLI/Infrastructure as Codeの暮らしを良くする
shmokmt
5
2.3k
TypeScriptで設計する 堅牢さとUXを両立した非同期ワークフローの実現
moeka__c
6
3k
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
140
AIコーディングエージェント(skywork)
kondai24
0
160
Cap'n Webについて
yusukebe
0
130
宅宅自以為的浪漫:跟 AI 一起為自己辦的研討會寫一個售票系統
eddie
0
500
新卒エンジニアのプルリクエスト with AI駆動
fukunaga2025
0
200
20 years of Symfony, what's next?
fabpot
2
350
WebRTC、 綺麗に見るか滑らかに見るか
sublimer
1
160
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Designing for humans not robots
tammielis
254
26k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
The Cost Of JavaScript in 2023
addyosmani
55
9.3k
Typedesign – Prime Four
hannesfritz
42
2.9k
A better future with KSS
kneath
240
18k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Leading Effective Engineering Teams in the AI Era
addyosmani
8
1.3k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
How to Ace a Technical Interview
jacobian
280
24k
Transcript
© NTT Communications Corporation All Rights Reserved. AWS Outposts 上のリソースを
CDK する 2022/4/9 NTT Communications 株式会社 福田優真
© NTT Communications Corporation All Rights Reserved. 2 目次 •
自己紹介 • AWS Outposts について • AWS Outposts のリソースを CDK する方法 • まとめ
© NTT Communications Corporation All Rights Reserved. 3 自己紹介 •
名前: 福田優真 • 所属: NTT Com イノベーションセンター ◦ 主にクラウドまわりをやってます ▪ マルチクラウド ▪ ハイブリッドクラウド
© NTT Communications Corporation All Rights Reserved. 4 取り扱い元 •
ニュースリリース出てます ◦ 国内初、「AWS Outposts」に 自社データ分析ツールを組み 込んだソリューションを開発 • 発表で取り扱う内容についての ブログ書きました
© NTT Communications Corporation All Rights Reserved. 5 本題
© NTT Communications Corporation All Rights Reserved. 6 要約 AWS
Outposts で動くリソースを CDK する話
© NTT Communications Corporation All Rights Reserved. 7 苦労した点 •
とにかく CFn がサポートしてなくて、 カスタムリソースでガリガリ ◦ サポートしても L1 ◦ フィードバックはしてるので、もしかしたら状況 変わるかも • 一部リソースが別のリソースを利用するのに必要だが、 特にそれらに依存性がないことによるデプロイ単位を 決めるのに最初は困った • レファレンスがないので、ドキュメントや API レファレンス、エラーメッセージと睨めっこして ひたすら解析 • etc…
© NTT Communications Corporation All Rights Reserved. 8 AWS Outposts
© NTT Communications Corporation All Rights Reserved. 9 AWS Outposts
AWS の出すハイブリッドクラウド製品
© NTT Communications Corporation All Rights Reserved. 10 ハイブリッドクラウド •
オンプレミスにクラウドサービスを導入するための ソリューション • Azure/GCP/AWS 各社が展開中 ◦ Azure Stack Hub/HCI ◦ GCP Anthos/Distributed Cloud ◦ AWS Outposts • データを Public な場所に流さなくても クラウドサービスを利用できるようになる
© NTT Communications Corporation All Rights Reserved. 11 従来のクラウドサービス
© NTT Communications Corporation All Rights Reserved. 12 ハイブリッドクラウドサービス
© NTT Communications Corporation All Rights Reserved. 13 AWS Outposts
詳解 • AWS のサブセットが提供される ◦ EC2, EKS, ALB, S3, … • Public な AWS と変わらない体験を提供 ◦ Public な AWS のリソースともシームレスに連携 • 42U ラックまたは 1U/2U サーバータイプを販売 ◦ 今回は 42U ラックで試した結果について解説
© NTT Communications Corporation All Rights Reserved. 14 AWS Outposts
詳解 管理もマネジメントコンソールからできる
© NTT Communications Corporation All Rights Reserved. 15 AWS Outposts
詳解 Outpost 上の subnet 等もマネジメントコンソールから管理可能
© NTT Communications Corporation All Rights Reserved. 16 AWS Outposts
のデプロイイメージ Outposts は AZ に紐付く
© NTT Communications Corporation All Rights Reserved. 17 AWS Outposts
のイメージ 42U タイプ (ref: https://aws.amazon.com/jp/blogs/news/outposts-osaka/)
© NTT Communications Corporation All Rights Reserved. 18 AWS Outposts
のユースケース • 低レイテンシーなコンピューティング ◦ Public AWS よりも近くでやりとりするため、 レイテンシーの要件が厳しいところでも導入可能 • ローカルなデータ処理 ◦ データが外出しできないような場所でも 外にデータが出ないため導入可能 • データレジデンシー ◦ データを特定の地域に留めおかなければならない 場所でもその地域にデプロイするだけ • オンプレミス環境のモダナイズ ◦ クラウド移行の前段として
© NTT Communications Corporation All Rights Reserved. 19 AWS Outposts
with CDK
© NTT Communications Corporation All Rights Reserved. 20 やりたいこと AWS
Outposts 上で動くリソースを CDK で管理する
© NTT Communications Corporation All Rights Reserved. 21 試した Outposts
リソース • subnet • EBS Volume • S3 on Outposts ◦ Outposts に載せるものは S3 on Outposts と 呼ばれる • ALB
© NTT Communications Corporation All Rights Reserved. 22 試した結果 •
一部カスタムリソースを使わなくてはならない • L2 サポートがまだ
© NTT Communications Corporation All Rights Reserved. 23 カスタムリソース •
CloudFormation が対応してないリソースを 管理する仕組み • 作成/更新/削除のライフサイクルを Lambda で管理 • CDK でやる場合は provider framework という AWS が提供するフレームワークに則って ボイラープレートとライフサイクルを担当する Lambda を用意するだけ
© NTT Communications Corporation All Rights Reserved. 24 Lambda 実装例
© NTT Communications Corporation All Rights Reserved. 25 Lambda 実装例
どんなライフサイクルでフックされた のかの状態を示す
© NTT Communications Corporation All Rights Reserved. 26 Lambda 実装例
各ライフサイクルに合わせて リソース操作
© NTT Communications Corporation All Rights Reserved. 27 ボイラープレート
© NTT Communications Corporation All Rights Reserved. 28 ボイラープレート ライフサイクルをハンドルする
Lambda を用意する
© NTT Communications Corporation All Rights Reserved. 29 ボイラープレート Provider
Framework お決まりのコード
© NTT Communications Corporation All Rights Reserved. 30 ボイラープレート ハンドラに追加で渡したいものは
この properties に オブジェクトで指定
© NTT Communications Corporation All Rights Reserved. 31 カスタムリソース使用先 •
subnet ◦ 顧客所有の IP をリソースにつける操作が未サポート ▪ 顧客所有の IP: オンプレ環境から AWS に 接続する IP アドレス • ALB ◦ Outposts へのデプロイ自体が未サポート
© NTT Communications Corporation All Rights Reserved. 32 カスタムリソースがいらないもの •
S3 on Outposts ◦ L1 はサポートされているが、プレビュー段階 • EBS Volume ◦ L1 サポート済み
© NTT Communications Corporation All Rights Reserved. 33 Outposts resources
with CDK
© NTT Communications Corporation All Rights Reserved. 34 EBS Volume
デプロイ先 Outpost を指定するだけ
© NTT Communications Corporation All Rights Reserved. 35 EBS Volume
© NTT Communications Corporation All Rights Reserved. 36 EBS Volume
デプロイ先を指定するだけ
© NTT Communications Corporation All Rights Reserved. 37 S3 on
Outposts • バケットとは別に次の2つをデプロイする必要がある ◦ Outposts エンドポイント ▪ VPC から S3 on Outposts へ接続するための ネットワークインターフェースコレクション ◦ アクセスポイント ▪ バケットポリシーを管理を簡素化してくれる機能 • バケットは aws-cdk-lib/aws-s3outposts に あるものを利用して管理する必要がある ◦ v1 なら @aws-cdk/aws-s3outposts • 現在プレビュー段階
© NTT Communications Corporation All Rights Reserved. 38 S3 on
Outposts(Outposts エンドポイント) • サブネット内に Outpost 毎に用意する ◦ 同じサブネットに2つつくろうとするとエラー ◦ サブネット内で共有して利用される • バケットに紐付いてないので、サブネットと一緒に 管理した方が良さそう • 443(HTTPS) inboud ルールを持つ セキュリティグループを割り当てなければならない • 最近サポートされた?(昨年10月あたりは CLI か マネジメントコンソールからしか操作できなかったはず)
© NTT Communications Corporation All Rights Reserved. 39 S3 on
Outposts(Outposts エンドポイント) S3 のマネジメントコンソール内にあるが、直接 S3 on Outposts に 結び付いてるわけではない
© NTT Communications Corporation All Rights Reserved. 40 S3 on
Outposts(Outposts エンドポイント)
© NTT Communications Corporation All Rights Reserved. 41 S3 on
Outposts(Outposts エンドポイント) デプロイ先の情報と エンポイントにつける SG の 情報を設定する
© NTT Communications Corporation All Rights Reserved. 42 S3 on
Outposts(バケット) • aws-cdk-lib/aws-s3outpost に専用の コンポーネントがある • Outpost 毎に分離されているため、デプロイ先 Outpost を指定する必要がある ◦ Public 上の S3 とも分離されている
© NTT Communications Corporation All Rights Reserved. 43 S3 on
Outposts(バケット)
© NTT Communications Corporation All Rights Reserved. 44 S3 on
Outposts(バケット) バケット名の他に デプロイ先 Outpost を指定する
© NTT Communications Corporation All Rights Reserved. 45 S3 on
Outposts(アクセスポイント) • S3 の機能の1つでありバケットに紐付くので、 S3 on Outposts バケットと一緒に管理した方が 良さそう • VPC 単位でデプロイ • 実はアクセスポイントをデプロイすると、デプロイ先 サブネットに Outposts エンドポイントがなければ 勝手にデプロイしてくれる ◦ 共有設定も勝手にしてくれるので、実はこれを コードで定義しておけば OK だったり
© NTT Communications Corporation All Rights Reserved. 46 S3 on
Outposts(アクセスポイント)
© NTT Communications Corporation All Rights Reserved. 47 S3 on
Outposts(アクセスポイント) アクセスポイント名や接続先 バケット、 デプロイ先 VPC を 指定する ★ aws-cdk-lib/aws-s3 のアクセスポイントでは bucket にバケット名を取る が、 aws-cdk-lib/aws-s3outposts はバケットARN をとる
© NTT Communications Corporation All Rights Reserved. 48 subnet •
Outpost 上へのデプロイはサポート済み • 顧客所有の IP アドレスをサブネット上のリソースに つける設定(mapCustomerOwnedIpOnLaunch)を 入れるにはカスタムリソースを使う
© NTT Communications Corporation All Rights Reserved. 49 subnet
© NTT Communications Corporation All Rights Reserved. 50 subnet デプロイ先
Outpost を指定できる プロパティが追加されている
© NTT Communications Corporation All Rights Reserved. 51 subnet(MapOnCustomerOwnedIpOnLaunch) •
ModifySubnetAttribute API に MapOnCustomerOwnedIpOnLaunch の設定がある ◦ これを利用 ◦ ちなみに、 CreateSubnet API にはこの設定がない
© NTT Communications Corporation All Rights Reserved. 52 subnet(MapOnCustomerOwnedIpOnLaunch)
© NTT Communications Corporation All Rights Reserved. 53 subnet(MapOnCustomerOwnedIpOnLaunch) 参照先顧客所有
IP のプール ID を設 定し、 map するようにする
© NTT Communications Corporation All Rights Reserved. 54 ALB •
Outposts 上へのデプロイもできないので、 カスタムリソースで自前管理する必要がある • もちろん、顧客所有の IP をつける場合も同じで カスタムリソースによるリソース作成時に設定する 必要がある ◦ subnet と違って CreateLoadBalancer API では 設定できるが、 ModifyLoadBalancerAttributes API では 設定不可
© NTT Communications Corporation All Rights Reserved. 55 ALB(作成/更新) ★
更新時はリソースを作っておけば、古いものは自動削除される
© NTT Communications Corporation All Rights Reserved. 56 ALB(作成/更新) 参照先顧客所有
IP のプール ID を設 定し、 map するようにする ★ 更新時はリソースを作っておけば、古いものは自動削除される
© NTT Communications Corporation All Rights Reserved. 57 ALB(削除)
© NTT Communications Corporation All Rights Reserved. 58 ALB(削除) デプロイしたロードバランサーを
指定する
© NTT Communications Corporation All Rights Reserved. 59 まとめ
© NTT Communications Corporation All Rights Reserved. 60 サポート状況 •
L2 はなく、 L1 サポートのみ • Outposts へのサポート状況にバラつきあり ◦ サポート済: ELB Volume, S3 on Outposts ▪ ただし、 S3 on Outposts はプレビュー段階 ◦ 一部サポート済: subnet ◦ 未サポート: ALB
© NTT Communications Corporation All Rights Reserved. 61 まとめ •
オンプレでもクラウドの恩恵を預かれるハイブリッド クラウド製品が登場してきた ◦ AWS Outposts • AWS Outposts に展開するリソースを CDK する 方法について紹介 • Outposts を CDK でやるにはカスタムリソースの 知識が必要 ◦ CDK で設定できない項目がある
© NTT Communications Corporation All Rights Reserved. 62 NTT Communciations
株式会社