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
880
AWS CDKでもMacを 管理したい
moba
0
540
AWS Outposts を AWS CDK で管理する話
moba
0
500
Other Decks in Programming
See All in Programming
AI時代のドメイン駆動設計-DDD実践におけるAI活用のあり方 / ddd-in-ai-era
minodriven
21
8.3k
UbieのAIパートナーを支えるコンテキストエンジニアリング実践
syucream
2
550
バイブコーディングの正体——AIエージェントはソフトウェア開発を変えるか?
stakaya
5
970
画像コンペでのベースラインモデルの育て方
tattaka
3
1.7k
GUI操作LLMの最新動向: UI-TARSと関連論文紹介
kfujikawa
0
980
オホーツクでコミュニティを立ち上げた理由―地方出身プログラマの挑戦 / TechRAMEN 2025 Conference
lemonade_37
2
480
自作OSでDOOMを動かしてみた
zakki0925224
1
1.4k
DockerからECSへ 〜 AWSの海に出る前に知っておきたいこと 〜
ota1022
5
1.7k
ライブ配信サービスの インフラのジレンマ -マルチクラウドに至ったワケ-
mirrativ
1
250
パスタの技術
yusukebe
1
390
tool ディレクティブを導入してみた感想
sgash708
1
150
AIに安心して任せるためにTypeScriptで一意な型を作ろう
arfes0e2b3c
0
380
Featured
See All Featured
The Cult of Friendly URLs
andyhume
79
6.5k
Git: the NoSQL Database
bkeepers
PRO
431
65k
It's Worth the Effort
3n
186
28k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
110
20k
The Pragmatic Product Professional
lauravandoore
36
6.8k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.5k
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
株式会社