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ソリューションのCFnで学ぶNaC
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
yamamototis1105
October 28, 2021
Technology
0
320
AWSソリューションのCFnで学ぶNaC
JAWS-UG朝会#26(2021年10月28日)の資料です。
yamamototis1105
October 28, 2021
Tweet
Share
More Decks by yamamototis1105
See All by yamamototis1105
AWS Interconnectによるマルチクラウド接続を検証して分かったことーマネージドによる設計簡素化ー
yamamototis1105
2
280
AWS Well-Architected Frameworkに基づくハイブリッドネットワーキング要点ガイド
yamamototis1105
3
340
AWS Networking RoadShow Gameday 2024 制覇に向けた学習のポイント
yamamototis1105
0
200
AWS Cloud WAN 最新のアップデートと今後のグローバルネットワーク
yamamototis1105
1
440
ハイブリッドクラウド接続検証環境をフル仮想化してみた
yamamototis1105
0
150
NetworkMonitorによるDirectConnect異常検知および対処
yamamototis1105
0
600
AWS DirectConnectパートナー選定時のチェックポイント
yamamototis1105
0
670
Site-to-Site VPNトンネルエンドポイントのライフサイクル制御機能の使いどころ
yamamototis1105
0
1k
DirectConnect上でSite to Site VPNでのプライベート接続に乗り換えてみた
yamamototis1105
1
1.2k
Other Decks in Technology
See All in Technology
Phase02_AI座学_応用
overflowinc
0
2.9k
夢の無限スパゲッティ製造機 #phperkaigi
o0h
PRO
0
370
VSCode中心だった自分がターミナル沼に入門した話
sanogemaru
0
690
MCPで決済に楽にする
mu7889yoon
0
110
事例から紐解くSHIFT流QA支援 ~大規模プロジェクトの品質管理支援、QA組織立ち上げ~ / 20260320 Nozomu Koketsu
shift_evolve
PRO
0
140
スケールアップ企業でQA組織が機能し続けるための組織設計と仕組み〜ボトムアップとトップダウンを両輪としたアプローチ〜
qa
0
300
形式手法特論:SMT ソルバで解く認可ポリシの静的解析 #kernelvm / Kernel VM Study Tsukuba No3
ytaka23
1
800
TUNA Camp 2026 京都Stage ヒューリスティックアルゴリズム入門
terryu16
0
460
Blue/Green Deployment を用いた PostgreSQL のメジャーバージョンアップ
kkato1
0
130
PostgreSQL 18のNOT ENFORCEDな制約とDEFERRABLEの関係
yahonda
0
120
Windows ファイル共有(SMB)を再確認する
murachiakira
PRO
0
280
20260323_データ分析基盤でGeminiを使う話
1210yuichi0
0
180
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
How GitHub (no longer) Works
holman
316
150k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
210
The browser strikes back
jonoalderson
0
840
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
180
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
220
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
Scaling GitHub
holman
464
140k
RailsConf 2023
tenderlove
30
1.4k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
830
WENDY [Excerpt]
tessaabrams
9
37k
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