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 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
900
AWS CDKでもMacを 管理したい
moba
0
540
AWS Outposts を AWS CDK で管理する話
moba
0
500
Other Decks in Programming
See All in Programming
Go言語での実装を通して学ぶLLMファインチューニングの仕組み / fukuokago22-llm-peft
monochromegane
0
120
Testing Trophyは叫ばない
toms74209200
0
860
Cache Me If You Can
ryunen344
2
680
Vue・React マルチプロダクト開発を支える Vite
andpad
0
110
Introducing ReActionView: A new ActionView-compatible ERB Engine @ Rails World 2025, Amsterdam
marcoroth
0
670
How Android Uses Data Structures Behind The Scenes
l2hyunwoo
0
420
今だからこそ入門する Server-Sent Events (SSE)
nearme_tech
PRO
2
120
CJK and Unicode From a PHP Committer
youkidearitai
PRO
0
110
Putting The Genie in the Bottle - A Crash Course on running LLMs on Android
iurysza
0
140
Namespace and Its Future
tagomoris
6
700
Navigation 2 を 3 に移行する(予定)ためにやったこと
yokomii
0
140
アプリの "かわいい" を支えるアニメーションツールRiveについて
uetyo
0
230
Featured
See All Featured
Designing for humans not robots
tammielis
253
25k
The Language of Interfaces
destraynor
161
25k
Designing for Performance
lara
610
69k
GraphQLの誤解/rethinking-graphql
sonatard
72
11k
Site-Speed That Sticks
csswizardry
10
810
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
920
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Why Our Code Smells
bkeepers
PRO
339
57k
Docker and Python
trallard
45
3.6k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
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
株式会社