Submit Search
Upload
AWS社員による怒涛のLTチャレンジ! Infrastructure as Codeに疲れたのでなんとかできないかCDKで色々やってみる
•
Download as PPTX, PDF
•
0 likes
•
951 views
Amazon Web Services Japan
Follow
大村 幸敬 / Yukitaka Ohmura JAWS DAYS 2021 [Track_E][17:00-18:00]AWS社員による怒涛のLTチャレンジ! で使用した資料です。
Read less
Read more
Internet
Report
Share
Report
Share
1 of 21
Download now
Recommended
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
Amazon Web Services Japan
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
Amazon Web Services Japan
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
Amazon Web Services Japan
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
Amazon Web Services Japan
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
Amazon Web Services Japan
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
Amazon Web Services Japan
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Web Services Japan
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと
Amazon Web Services Japan
Recommended
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
Amazon Web Services Japan
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
Amazon Web Services Japan
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
Amazon Web Services Japan
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
Amazon Web Services Japan
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
Amazon Web Services Japan
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
Amazon Web Services Japan
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Web Services Japan
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと
Amazon Web Services Japan
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
Amazon Web Services Japan
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
Amazon Web Services Japan
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
Amazon Web Services Japan
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon Web Services Japan
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
Amazon Web Services Japan
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
Amazon Web Services Japan
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
Amazon Web Services Japan
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Web Services Japan
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
Amazon Web Services Japan
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
Amazon Web Services Japan
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
Amazon Web Services Japan
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
Amazon Web Services Japan
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
Amazon Web Services Japan
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
Amazon Web Services Japan
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
Amazon Web Services Japan
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
Amazon Web Services Japan
20211109 JAWS-UG SRE keynotes
20211109 JAWS-UG SRE keynotes
Amazon Web Services Japan
20211109 bleaの使い方(基本編)
20211109 bleaの使い方(基本編)
Amazon Web Services Japan
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
Amazon Web Services Japan
More Related Content
More from Amazon Web Services Japan
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
Amazon Web Services Japan
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
Amazon Web Services Japan
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
Amazon Web Services Japan
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon Web Services Japan
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
Amazon Web Services Japan
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
Amazon Web Services Japan
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
Amazon Web Services Japan
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Web Services Japan
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
Amazon Web Services Japan
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
Amazon Web Services Japan
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
Amazon Web Services Japan
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
Amazon Web Services Japan
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
Amazon Web Services Japan
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
Amazon Web Services Japan
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
Amazon Web Services Japan
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
Amazon Web Services Japan
20211109 JAWS-UG SRE keynotes
20211109 JAWS-UG SRE keynotes
Amazon Web Services Japan
20211109 bleaの使い方(基本編)
20211109 bleaの使い方(基本編)
Amazon Web Services Japan
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
Amazon Web Services Japan
More from Amazon Web Services Japan
(20)
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDD
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
20211109 JAWS-UG SRE keynotes
20211109 JAWS-UG SRE keynotes
20211109 bleaの使い方(基本編)
20211109 bleaの使い方(基本編)
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
AWS社員による怒涛のLTチャレンジ! Infrastructure as Codeに疲れたのでなんとかできないかCDKで色々やってみる
1.
© 2021, Amazon
Web Services, Inc. or its Affiliates. All rights reserved. Amazon Web Services Japan Solutions Architect 大村幸敬 2021/03/20 Infrastructure as Code に疲れたので なんとかできないかCDKで色々やってみる JAWS DAYS 2021 AWS社員による怒涛のLTチャレンジ!
2.
© 2021, Amazon
Web Services, Inc. or its Affiliates. All rights reserved. 大村 幸敬 (おおむら ゆきたか) Twitter: yktko@ ソリューションアーキテクト • これからクラウドを使いはじめる エンタープライズ企業をサポート • 運用系サービス & DevOps系サービス 好きなAWSのサービス: AWS CLI, AWS CDK
3.
© 2021, Amazon
Web Services, Inc. or its Affiliates. All rights reserved. 発端:村主さんのJAWS DAYS 2019/2020の発表 「Infrastructure as Codeに疲れた」でググってください とても共感しました https://jawsdays2019.jaws-ug.jp/session/1119/ Mediumへのリンク
4.
© 2021, Amazon
Web Services, Inc. or its Affiliates. All rights reserved. 「僕たちが本来やりたかったこと」を改めて考えてみる • やりたいことはビジネス • やらなければいけなかったのは… • 無→IAMユーザ作成→基本のセキュリティ設定 →NW作成→APサーバ作成→DB作成 →監視作成→部分的な変更→部分的な変更→..... • この一連の変更作業を速く正確に行いたい • why遅い> 変更にかかる事前確認の時間が長い+作業自体が遅い • why確認> 変更して壊れるのが怖い • why怖い> 変更の影響がわからない • why影響> 設定の詳細がわからない+設定をテストできない • whyテストできない> 同じ環境を速く正確に作れない • 加えて • 速く、にはドキュメントやコードを書く時間も含む • 自分以外の人でも早く、速くやれるようにしたい
5.
© 2021, Amazon
Web Services, Inc. or its Affiliates. All rights reserved. 「僕たちが本来やりたかったこと」のために • Working Backwards • ツールやプラクティスに固執しない • 実現したいことから考える • そのために適切な時に適切な手段を都度選択して使う • 「実現したいこと」は状況によって変わるので注意 • たとえば : デフォルトではなくベストプラクティスな設計を、 速く、正確に展開したい。 かつその構成情報を他の人が理解できるように
6.
© 2021, Amazon
Web Services, Inc. or its Affiliates. All rights reserved. どんな手段があるか • 特性に合わせて選択 • 状態を 記述&実行する CDK / CFn / Terraform.... • 手順を 記述&実行する CLI / API(SDK) / 手順書... • 記述…できるだけ少なくシンプルに • コードも文章も書けば書くほど理解しにくくなる • 条件によって動きが変わるコードは 構成情報の把握を難しくする(構成と1:1のほうがよい) • 自社固有の考え方は部外者への説明が大変 社外で一般的に使われている情報でできるだけ済ます
7.
© 2021, Amazon
Web Services, Inc. or its Affiliates. All rights reserved. CDKでなんとかできないか
8.
© 2021, Amazon
Web Services, Inc. or its Affiliates. All rights reserved. 開発を高速に • リファレンスの参照回数と試行錯誤が格段に少なくなる • 型定義(TypeScript)とエディタによるサジェスト • リソース間の依存関係把握が楽(オブジェクト指向) • CDK diffとテストによるチェック • 記述の絶対量が小さい • 最低限のパラメータ指定でリソースを作れる • つまり他人のコードを読むのも楽 • 一括タグ付けとかの便利機能 • 開発者を集めやすい • アプリ開発者もとっつきやすい
9.
© 2021, Amazon
Web Services, Inc. or its Affiliates. All rights reserved. S3バケットのコード サジェスト: 必須プロパティ(?なし) オプションプロパティ(?あり) サジェスト: 型がわかる 文字列でなくEnumsで指定 L2 Constructは 少ないプロパティで 複数のリソースを まとめて構成可能 VPC作成のコード 複雑なものは コンストラクタでなく メソッドで追加する
10.
© 2021, Amazon
Web Services, Inc. or its Affiliates. All rights reserved. CDKで作成したリソース全てに決まったタグをつけるコード (CFnで対応しているもののみ) たとえばこの環境では93個の リソースに"Environment" タグを一括セットできた
11.
© 2021, Amazon
Web Services, Inc. or its Affiliates. All rights reserved. 小ネタ: AWS SSOでログインして CDKをデプロイ $ aws sso login --profile=sso-ct-dev1 Attempting to automatically open the SSO authorization page in your default browser. If the browser does not open or you wish to use a different device to authorize this request, open the following URL: https://device.sso.us-east-1.amazonaws.com/ Then enter the code: XXXX-XXXX (ここで下記の手順をブラウザで操作) Successully logged into Start URL: https://d-XXXXXXXXX.awsapps.com/start#/ $ cdk bootstrap -c environment=dev --profile ct-dev1 ⏳ Bootstrapping environment aws://xxxxxxxxx/ap-northeast-1... ✅ Environment aws://xxxxxxxx/ap-northeast-1 bootstrapped (no changes). 参考(https://chariosan.com/2021/03/14/aws-sso_aws2-wrap_cdk/) • アクセスキー/シークレットキーを手元に保存しなくてよい • AWS CLIv2とaws2-wrapを使う
12.
© 2021, Amazon
Web Services, Inc. or its Affiliates. All rights reserved. 記述をわかりやすく • 設定値と使う場所の見通しをよくする • Constructの定義とパラメータ値を離さない、過度にコンフィグ化しない、条件分岐し ない • 本当に同じもの以外はコードを使いまわさない • 独自コードの再利用は必ずしも善ではない • 開発と本番で「全く同じでなければいけない」場合のみ同じインスタンスにする • 今は同じだが変わる可能性があるならコピペでもいいじゃない • 抽象化、条件分岐、ループは極力使わない • コードが実装をそのまま表現しているようにする • 「CDKコードをみてWell-Architectedレビューできるか?」 • 実装の詳細は生成したCFnテンプレートで確認 • CDKは「CFnテンプレートを、少ない記述でエディタサポートをフルに使って実装する ためのツール」と割り切る
13.
© 2021, Amazon
Web Services, Inc. or its Affiliates. All rights reserved. Contextを指定して環境ごとに違う パラメータを渡す例(やりすぎ注意) -c でContextを指定 cdk.json 参照のしかた デプロイのしかた SecretsManagerにパスワード を生成しつつRDSに設定 Aurora PostgreSQLを作るコード デプロイ後も動的に変化させたいものは ParameterStore/SecretsManagerを使う
14.
© 2021, Amazon
Web Services, Inc. or its Affiliates. All rights reserved. 手で触ってしまってもいい • CDK/CFn管理対象リソースを触ったら 1. CFn Drift Detectionで検出 2. パラメータをCDKに反映(サジェスト使えば楽) 3. cdk diffで差分を確認⇨適用 • 手で作ったリソースはどうするか • Former2でテンプレート生成 https://former2.com/ • CfnInclude or CDKコード書き起こしてリソース再作成 (既存リソースをインポートするより確実で結果的に楽) https://aws.amazon.com/jp/blogs/news/migrating-cloudformation-templates-to-the-aws-cloud-development-kit/ • CDKで書く方が大変なものもある • StepFunctionsとか • マネコンで作ってJSONそのまま持ってくるでもいいじゃない
15.
© 2021, Amazon
Web Services, Inc. or its Affiliates. All rights reserved. CDKにこだわらない • CDK L2(ハイレベル)ライブラリで無理に頑張らない • grant() は便利だけど、スタックまたいでると依存関係が更新されないとか • 普通にポリシーを指定でもいいじゃない。ARN参照でもいいじゃない。 • 無理にオブジェクト指向っぽく汎用的に作らなくていい。再利用性よりわかりやすさ。 • CDK L1(ローレベル)ライブラリの利用を躊躇しない • CFnと同じ設定が必要だが、それでも型定義やエディタサジェストがあるのは強力 • 構成ではなく手続きが必要ならCDKの一発構築は諦めてCLI+手順書でもいい • バックアップ取得作業とかデプロイ作業とかってCDKでやるもんじゃないし • マネコンのほうが楽なら手動操作でもいい • 手順書を作ればいい。せいぜい2-3クリック。 • SecurityHubやSSM QuickSetupをOrganizations全体に適用する場合など • DNS設定とかACMの証明書。開発と本番でどうせ違うし、世の中に1個しか作れない。 • 手で作ったものをCDKのfromLookup()メソッドで引っ張れば普通に使える
16.
© 2021, Amazon
Web Services, Inc. or its Affiliates. All rights reserved. L1(CFn)リソースをCDKで作る例 CFnと同様全てのプロパティの 指定が必要 サジェストに必須パラメータが 出てくる
17.
© 2021, Amazon
Web Services, Inc. or its Affiliates. All rights reserved. 使えるのはCFnだけじゃない • cdktf • Define infrastructure resources using programming constructs and provision them using HashiCorp Terraform. • cdk8s • Define Kubernetes native apps and abstractions using object-oriented programming.
18.
© 2021, Amazon
Web Services, Inc. or its Affiliates. All rights reserved. まとめ:CDKでなんとかなりそうなこと • 開発を高速に • 記述をわかりやすく • 手で触ってもフィードバックしやすい • CDKにこだわらない • CFnだけじゃない
19.
© 2021, Amazon
Web Services, Inc. or its Affiliates. All rights reserved. まだ疲れることはあるけどね • AWSサービスの知識とCFnの理解は結局必要 • 新しくプログラミング言語覚えるの大変 • リファレンス英語だけ… • OSレイヤの管理は結局Ansible?
20.
© 2021, Amazon
Web Services, Inc. or its Affiliates. All rights reserved. IaCに疲れても Happy coding with CDK!
21.
© 2021, Amazon
Web Services, Inc. or its Affiliates. All rights reserved.
Download now