Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
AWSソリューションのCFnで学ぶNaC
Search
yamamototis1105
October 28, 2021
Technology
350
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWSソリューションのCFnで学ぶNaC
JAWS-UG朝会#26(2021年10月28日)の資料です。
yamamototis1105
October 28, 2021
More Decks by yamamototis1105
See All by yamamototis1105
AWS Interconnectによるマルチクラウド接続を検証して分かったことーマネージドによる設計簡素化ー
yamamototis1105
2
350
AWS Well-Architected Frameworkに基づくハイブリッドネットワーキング要点ガイド
yamamototis1105
3
390
AWS Networking RoadShow Gameday 2024 制覇に向けた学習のポイント
yamamototis1105
0
230
AWS Cloud WAN 最新のアップデートと今後のグローバルネットワーク
yamamototis1105
2
500
ハイブリッドクラウド接続検証環境をフル仮想化してみた
yamamototis1105
0
170
NetworkMonitorによるDirectConnect異常検知および対処
yamamototis1105
1
670
AWS DirectConnectパートナー選定時のチェックポイント
yamamototis1105
0
740
Site-to-Site VPNトンネルエンドポイントのライフサイクル制御機能の使いどころ
yamamototis1105
0
1.1k
DirectConnect上でSite to Site VPNでのプライベート接続に乗り換えてみた
yamamototis1105
1
1.3k
Other Decks in Technology
See All in Technology
品質と信頼性を地続きにする
grimoh
0
380
AI de Idea
kawaguti
PRO
2
110
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
12k
生成AIエージェントを用いた、 手動テスト手順書から自動テストへの 変換手法の検討
magicpod
0
160
AIネイティブプロダクトで顧客価値を最大化するプロダクトエンジニアとFDEの協働
righttouch
PRO
0
310
Railsのように考える: See through the Master
snoozer05
PRO
3
820
2026_devsumi_ozono.pdf
o3
3
500
安心して変更できるWebフロントエンドの作り方
pirosikick
4
2.5k
Deployment の 先にある AI Agent 基盤 - kagent vNext、Agent Substrate、Hermes から読み解く Agent Runtime の現在地 / k8s-matsuri-2-ai-agent-platform-amsy810
masayaaoyama
3
560
TinyGo 開発サイクルを高速化する:Go で作るエミュレータ入門
zozotech
PRO
1
740
技術的負債から考える、AI時代のエンジニアリング投資 — ビズリーチの技術的負債と向き合った経験から、変更し続けられるソフトウェアを考える/ technical-debt-con2026
visional_engineering_and_design
3
2.9k
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
810
Featured
See All Featured
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
YesSQL, Process and Tooling at Scale
rocio
174
15k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Facilitating Awesome Meetings
lara
57
7.1k
Test your architecture with Archunit
thirion
2
2.4k
The Limits of Empathy - UXLibs8
cassininazir
1
670
Build your cross-platform service in a week with App Engine
jlugia
234
19k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
Code Reviewing Like a Champion
maltzj
528
40k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Transcript
© 2021 NTT DATA Corporation JAWS-UG朝会 #26 「AWSソリューションのCFnで学ぶNaC」 2021年10月28日 NTTデータ
山本 泰士
© 2021 NTT DATA Corporation 2 1. 自己紹介 2. はじめに
3. TransitVPCとは? 4. TransitVPCのCloudFormation 5. カスタムリソースとは? 6. TransitVPCのカスタムリソース 7. コード理解の不足による失敗談 8. まとめ
© 2021 NTT DATA Corporation 3 1. 自己紹介 2. はじめに
3. TransitVPCとは? 4. TransitVPCのCloudFormation 5. カスタムリソースとは? 6. TransitVPCのカスタムリソース 7. コード理解の不足による失敗談 8. まとめ
© 2021 NTT DATA Corporation 4 1. 自己紹介 NTTデータ ネットワークソリューション事業部
やまもと たいし 山本 泰士 金融・法人系のネットワーク提案~構築(ネットワークエンジニア一筋) 2018年10月~ DirectConnect + TransitVPC 構築 2019年 9月~ インターン生向けに API Gateway + Lambda 課題作成 2020年10月~ DirectConnect + TransitGateway 構築 2021年 9月~ DirectConnect + TransitVPC + TransitGateway 構築予定 AWS CloudFormation、AWS Lambda、TransitVPC 経歴 主なAWS歴 好きなAWSサービス
© 2021 NTT DATA Corporation 5 1. 自己紹介 2. はじめに
3. TransitVPCとは? 4. TransitVPCのCloudFormation 5. カスタムリソースとは? 6. TransitVPCのカスタムリソース 7. コード理解の不足による失敗談 8. まとめ
© 2021 NTT DATA Corporation 6 2. はじめに 昨今、ネットワークエンジニアもInfrastructure as
Code (Network as Code)への対応が迫られる中どんなことができるだろう? AWSはガイドやサンプルが充実してて、誰でも簡単にインフラを構築できてしまう。 より面白いことをできるようにするにはどうすればいいだろう? AWSソリューションなら、AWSサービスを組み合わせて面白い機能を 提供しているので、それを参考にしよう! 本枠では、ネットワーク系のAWSソリューション 「TransitVPC」 を題材にし、 どのようなことが出来るのか、ネットワークの観点でご紹介します。
© 2021 NTT DATA Corporation 7 1. 自己紹介 2. はじめに
3. TransitVPCとは? 4. TransitVPCのCloudFormation 5. カスタムリソースとは? 6. TransitVPCのカスタムリソース 7. コード理解の不足による失敗談 8. まとめ
© 2021 NTT DATA Corporation 8 Ompremise 中継デバイスを経由し、VPCやオンプレミス間を中継するHubネットワークです。 (昨今はTGW等のサービスでカバーできますが、オンプレミス向けのQoS要件等次第で利用されたりしてます。) 3.
TransitVPC とは?(1) AWS Spoke VPC1 Spoke VPC2 Transit VPC CSR1000v CSR1000v VGW Poller Cisco Configurator Cloud Watch S3 S2S VPN S2S VPN DirectConnect DirectConnect 通信フロー 凡例
© 2021 NTT DATA Corporation 9 Ompremise 3. TransitVPC とは?(2)
AWS Spoke VPC1 Spoke VPC2 Transit VPC 最大の特徴としては、SpokeVPCのVGWにタグを追加するだけで、自動的にTransitVPC~ SpokeVPC間のIPsecトンネルを確立・接続する点です。 CSR1000v CSR1000v VGW Poller Cisco Configurator Cloud Watch S3 S2S VPN DirectConnect DirectConnect VGW ⑥ Transit~SpokeVPC の間でトンネル確立 ③ 特定タグ付きVGWを検索し、 VPN設定をS3に保存 VGW Poller ② CloudWatchEventで 定期的にVGW Pollerを実行 Cloud Watch ④ S3イベント通知で Cisco Configuratorを実行 S3 ① VGWに 特定のタグを付与 VGW CSR1000v CSR1000v ⑤ S3バケットの設定を取得し、 CSR1000vの設定変更 Cisco Configurator 凡例 手動実行 自動実行 VGW
© 2021 NTT DATA Corporation 10 3. TransitVPC とは?(3) CSR1000v
CSR1000v CSR1000v CSR1000v TGW S2S VPN Catalyst8000v TGW GRE over TGW Connect Attachment 構成としては、TransitGatewayやAutoScalingなどのサービスを組み合わせたパターンや、 Juniper社のvSRXやFortinet社のFortiGate VMなどのCISCO以外の機器を利用するパターンもあります。 S2S VPN Auto Scaling TGW SpokeVPC追加時に CSR~TGW間のVPN追加が不要。 トラフィックに応じ、CSR自動増減。 スケーラビリティを向上。 Site to Site VPNを利用しないため、 インターネット経由しなくて済む。 Catalyst8000v TransitVPC with TransitGateway TransitVPC / Autoscaling SDWAN TransitVPC
© 2021 NTT DATA Corporation 11 1. 自己紹介 2. はじめに
3. TransitVPCとは? 4. TransitVPCのCloudFormation 5. カスタムリソースとは? 6. TransitVPCのカスタムリソース 7. コード理解の不足による失敗談 8. まとめ
© 2021 NTT DATA Corporation 12 4. TransitVPC の CloudFormation(1)
Templateファイル(.json) Parameters セクション Metadata セクション Conditions セクション Mappings セクション Resource セクション Output セクション TransitVPCのCloudFormationで定義されているセクションは以下の通りです。 スタック作成時にユーザ指定させる可変パラメータを定義します。 パラメータを表示する順序やカテゴリを定義します。 他セクションから参照する条件(TrueもしくはFalseを返す)を定義します。 他セクションから参照するマップ(キーを指定してバリューを取得する)を定義します。 スタックを構成するコンポーネントやその設定などを定義します。 CloudFormation上で最終的に出力されるパラメータを定義します。 本枠では主要なParametersセクションおよびResouceセクションをご紹介します。 本枠で紹介する セクション
© 2021 NTT DATA Corporation 13 Spoke VPC1 Spoke VPC2
VGW Cisco Configurator VGW Poller Cloud Watch 4. TransitVPC の CloudFormation(2) Templateファイル(.json) Parameters セクション Metadata セクション Conditions セクション Mappings セクション Resource セクション Output セクション パラメータでは、スタック作成時にユーザが自由にパラメータを設定できます(デフォルト値付き)。 VGW Transit VPC CSR1000v CSR1000v S3 Transit VPC CSR1000v CSR1000v ① VPC CIDR ② AZ番号 ③ サブネット Transit VPC VGW ⑧ 検索タグ名 ⑨ 検索タグ値 ⑩ 優先パスタグ名 VGW ④ スループット (インスタンスタイプ用) ⑤ キーペア ⑥ 削除保護 ⑦ BGP AS番号 CSR1000v S3 ⑪ S3プレフィクス ⑫ 別アカウントID (クロスアカウント用) S3 既存スタック・リソースのパラメータとの重複等は十分なケアが必要。
© 2021 NTT DATA Corporation 14 Spoke VPC1 Spoke VPC2
VGW Cisco Configurator VGW Poller Cloud Watch 4. TransitVPC の CloudFormation(3) Templateファイル(.json) Parameters セクション Metadata セクション Conditions セクション Mappings セクション Resource セクション Output セクション リソースでは、中継機能やSpokeVPC接続自動化機能を具備するコンポーネントが定義されています。 VGW Transit VPC CSR1000v CSR1000v S3 Transit VPC CSR1000v CSR1000v ① VPC ② サブネット ③ ルートテーブル ④ ルートエントリ ⑤ サブネット関連付け ⑥ IGW ⑦ IGWアタッチメント ⑧ VPCエンドポイント Transit VPC ⑨ CSR1000v ⑩ セキュリティグループ ⑪ CloudWatchアラーム (Auto Recovery) ⑫ Elastic IP CSR1000v ㉑ Poller関数 ㉓ Pollerポリシー ㉒ Pollerロール VGW Poller VGW Poller S3 ⑰ S3バケット ⑲ KMSキー ⑱ S3バケットポリシー ⑳ KMSキーエイリアス S3 & KMS Cisco Configurator ⑬ Configurator関数 ⑭ Configuratorロール ⑮ Configuratorポリシー ⑯ セキュリティグループ Cisco Configurator Cloud Watch ㉔ CloudWatchイベント (Poller関数定期実行) Cloud Watch
© 2021 NTT DATA Corporation 15 4. TransitVPC の CloudFormation(4)
Templateファイル(.json) Parameters セクション Metadata セクション Conditions セクション Mappings セクション Resource セクション Output セクション その他、コンポーネントの一部設定や事前処理はカスタムリソースとして定義されています。 Spoke VPC1 Spoke VPC2 VGW Cisco Configurator VGW Poller Cloud Watch VGW Transit VPC CSR1000v CSR1000v S3 ⑦ SolutionHelper関数 ⑧ SolutionHelperロール ⑨ SolutionHelperポリシー Lambda関数 ① RSAキー作成 ② パスワード作成 ③ S3イベント作成 ④ S3コンフィグ出力 ⑤ UUID作成 ⑥ AWS送信 カスタムリソース リクエスト レスポンス カスタムリソース+Lambda関数により、標準リソースでは実現できない様々な処理が可能となる。
© 2021 NTT DATA Corporation 16 1. 自己紹介 2. はじめに
3. TransitVPCとは? 4. TransitVPCのCloudFormation 5. カスタムリソースとは? 6. TransitVPCのカスタムリソース 7. コード理解の不足による失敗談 8. まとめ
© 2021 NTT DATA Corporation 17 所定の書式でリソースを定義することで、関連付けられたLambda等を呼び出し、自由度の高いロジックを 実装することが可能です(呼び出し先はLambdaのほか、SNSも可)。 5. カスタムリソースとは?
Lamda関数(.py) Resources : { (任意のリソース名) : { Type : Custom::(任意のリソースタイプ名) Properties : { ServiceToken : (Lambda関数のARN) (任意のキー) : (任意のパラメータ), (任意のキー) : (任意のパラメータ), (任意のキー) : (任意のパラメータ) } } } Templateファイル(.json) 1 import cfnresponse 2 def lambda_handler(event, context): 3 # (リクエストに応じた処理) 4 cfnresponse.send( 5 event, 6 context, 7 cfnresponse.SUCCESS, 8 {‘(任意のキー)’:‘(任意のパラメータ)’, 9 ‘(任意のキー)’:‘(任意のパラメータ)’, 10 ‘(任意のキー)’:‘(任意のパラメータ)’} 11 ) リクエスト レスポンス
© 2021 NTT DATA Corporation 18 1. 自己紹介 2. はじめに
3. TransitVPCとは? 4. TransitVPCのCloudFormation 5. カスタムリソースとは? 6. TransitVPCのカスタムリソース 7. コード理解の不足による失敗談 8. まとめ
© 2021 NTT DATA Corporation 19 6. TransitVPC のカスタムリソース(1) CloudFormationでタイプ指定できない一例として、S3イベント作成の流れを以下に示します。
S3バケットにパラメータが格納されたことをトリガーとしてLambda送信するように、S3にイベント通知を設定。 リソース名: CiscoConfigS3Event(S3イベント作成) SolutionHelper関数 S3 パラメータ格納 Configurator関数 CSR1000v リソースベースポリシー設定 (S3→Lambda許可) ログイン設定 VGW Poller関数 Lambda送信 イベント通知設定 (Lambda送信) 凡例 カスタムリソース スコープ
© 2021 NTT DATA Corporation 20 秘密鍵・公開鍵・フィンガープリントを生成・格納・設定し、Configurator関数がCSR1000vにアクセスできるよう設定 6. TransitVPC のカスタムリソース(2)
CloudFormationテンプレートだけで実装できない一例として、RSAキー作成の流れを以下に示します。 リソース名: CreateSshKey(RSAキー作成) SolutionHelper関数 Paramikoモジュール S3 KMS private key finger print public key 生成 公開鍵・秘密鍵 格納 秘密鍵 取得 Configurator関数 CSR1000v 設定 ログイン 設定 暗号化キー 取得 複合化キー 取得 凡例 カスタムリソース スコープ
© 2021 NTT DATA Corporation 21 1. 自己紹介 2. はじめに
3. TransitVPCとは? 4. TransitVPCのCloudFormation 5. カスタムリソースとは? 6. TransitVPCのカスタムリソース 7. コード理解の不足による失敗談 8. まとめ
© 2021 NTT DATA Corporation 22 7. コード理解の不足に関わる失敗談(1) 別のTransitVPCと同じタグを設定し、別のTransitVPC~SpokeVPC間で接続した。 AWS
Spoke VPC1 Spoke VPC2 Transit VPC(既存) Spoke VPC Transit VPC(新規) VGW Poller VGW VGW Tag Value transitvpc:spoke true CSR1000v CSR1000v CSR1000v CSR1000v VGW VGW Poller Tag Value transitvpc:spoke true ① 既存TransitVPCの VGW Pollerが先に検知 意図しないTransitVPC~SpokeVPC間の接続 ② 既存TransitVPCの CSR1000v接続
© 2021 NTT DATA Corporation 23 AWS 7. コード理解の不足に関わる失敗談(2) ステージング環境ではプロビジョニング成功したものの、本番環境でプロビジョニング失敗した。
Transit VPC (ステージング) CSR1000v CSR1000v AMI ID差異によるプロビジョニング失敗 ① ステージング環境は プロビジョニング成功 Transit VPC (本番) CSR1000v CSR1000v ③ 本番環境は プロビジョニング失敗 AWS Marketplace CroudFormation Template AMI更新 AMI未更新 ② MarketPlace内のAMIは 更新されていたが、 CloudFormationテンプレートが 更新されておらず
© 2021 NTT DATA Corporation 24 1. 自己紹介 2. はじめに
3. TransitVPCとは? 4. TransitVPCのCloudFormation 5. カスタムリソースとは? 6. TransitVPCのカスタムリソース 7. コード理解の不足による失敗談 8. まとめ
© 2021 NTT DATA Corporation 25 • CloudFormationとLambdaの組み合わせによって、 単なるリソースの作成だけでなく、詳細な設定も可能となる。 •
なんでもかんでもLambdaに書くと可読性と保守性の良さが無くなるので、 CloudFormationテンプレートに書くか、もしくはLambdaに書くかのバランスが重要。 • CloudFormationとLambdaの内容を理解しておくことで、 有事の際に何が起きているかを切り分けるうえでも有効である。 8. まとめ
© 2021 NTT DATA Corporation