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
JAWS-UG 長野支部 勉強会 in 松本 IaC 関連最新情報
Search
Hiroki Uchida
July 07, 2023
Technology
490
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JAWS-UG 長野支部 勉強会 in 松本 IaC 関連最新情報
2023年7月7日に開催されたJAWS-UG 長野支部 勉強会の資料となります
https://jawsug-nagano.connpass.com/event/288961/
Hiroki Uchida
July 07, 2023
More Decks by Hiroki Uchida
See All by Hiroki Uchida
クラウド (AWS) と オンプレ (自宅) のテレメトリを 地球儀で可視化する Splunk Appを作ってみた
nikuyoshi
0
110
CloudTrailも、GuardDutyも、VPC Flow logsも… ログ多すぎ問題の整理術
nikuyoshi
5
1.8k
テクニカルな目線からみたAnsibleFest2018
nikuyoshi
0
130
Molecule入門
nikuyoshi
1
500
Other Decks in Technology
See All in Technology
品質と信頼性を地続きにする
grimoh
2
900
10Xに技術的負債をもたらした「2つの境界の歪み」その構造と解消への営み
10xinc
0
2.3k
Antigravity SDK for the Java Developer
glaforge
0
170
「どのログを見ればいい?」 から始めた サーバーレス障害解析
y_waka1
1
120
AIに賢く動いてもらうためのコンテキスト〜Snowflake女子会 vol.8
snowwmn0824
0
140
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
12k
Oracle Cloud Network Path Analyzerを試してみた/I Tried Out Oracle Cloud Network Path Analyzer
masakiokuda
1
110
AIは推し活である。
kurazuuuuuu
1
940
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
9
1.1k
山手線を徒歩で一周してわかった、 位置情報アプリは「足」が最強のデバッガー
hinakko
0
180
え、こんなに早く改修できるの?──新人エンジニアとスクラムマスターの2人が語る、AI×アジャイル開発の現場
ysasago
2
640
「ピッケル本」日本語版は4.0(第6版)が出版されるべき / pickaxe4-nagoyark05
kakutani
2
270
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
670
Music & Morning Musume
bryan
48
7.4k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
The untapped power of vector embeddings
frankvandijk
2
1.9k
Visualization
eitanlees
152
17k
Paper Plane (Part 1)
katiecoart
PRO
2
11k
ラッコキーワード サービス紹介資料
rakko
1
5M
Mobile First: as difficult as doing things right
swwweet
225
10k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Transcript
© 2023, Amazon Web Services, Inc. or its affiliates. ©
2023, Amazon Web Services, Inc. or its affiliates. Hiroki Uchida Solution Architect アマゾン ウェブ サービス ジャパン合同会社 IaC 関連最新情報 JAWS - UG ⻑野 ⽀ 部 勉 強会 IN 松 本
© 2023, Amazon Web Services, Inc. or its affiliates. 2
⾃⼰紹介 内⽥ ⼤樹 (うちだ ひろき) ソリューションアーキテクト @東京 主に⼤企業のお客様を担当し、お客様のAWS活⽤を 様々な形でご⽀援する役割。趣味は写真撮影。 好きなIaCのツール Ansible AWS CDK @nikuyoshi
© 2023, Amazon Web Services, Inc. or its affiliates. アジェンダ
•Infrastructure as Code とは •各種ツールのご紹介 •各種イベント
© 2023, Amazon Web Services, Inc. or its affiliates. ©
2023, Amazon Web Services, Inc. or its affiliates. Infrastructure as Code 4
© 2023, Amazon Web Services, Inc. or its affiliates. Infrastructure
as Codeとは︖ • IaC とは、インフラをコードで定義し運用するアプローチのこと。 そのようなアプローチを用いることで、 VCS※1 、CI/CD といった ソフトウェア開発手法もインフラストラクチャに適用できる。 開発者 Source Build Test Deploy Git git push • 構成定義 • 設定ファイル • ドキュメント ビルド ツール テスト ツール インフラストラクチャ 定義ツール ※1 VCS … Version Control Systemsの略。GitやSubversionといったバージョン管理のソフトウェアを指す • Terraform • CloudFormation • CDK サーバー構成 ツール • Ansible • Chef • Puppet 商用環境 開発環境
© 2023, Amazon Web Services, Inc. or its affiliates. なぜ
IaC なのか︖ • クラウドが台頭し、頻繁にリソースの作成、更新、削除が行われるようになり、 インフラストラクチャ、アプリケーションの変更管理を容易にするため。 開発者 作成、更新、削除 よくある悩み ・変更差分が分からず、リリースしづらい (or リリースできない) ・リリース準備、チェックに時間がかかり、 毎回1週間のリードタイムが発生 ・手作業によるヒューマンエラー 開発者 Source Build Test Deploy Git • 構成定義 • 設定ファイル • ドキュメント 構成差分の明確化 CI/CD、セキュリティ 自動監査ツール等を用い、 リードタイムの短縮 IaC適用前 IaC適用後 AWS Cloud AWS Cloud
© 2023, Amazon Web Services, Inc. or its affiliates. IaC
の歴史 2008 IaCと い う ⾔ 葉 の 初 出 Am azon EC2リ リ ー ス 1993 CFEngineリ リ ー ス 2005 Puppetリ リ ー ス 諸説ありますが、内⽥が調べた限りの情報を以下の図にまとめております。 APIでプログラマブルに扱えるサービスとしてAmazon EC2、⽇本のお客様に広く利⽤が加速した意味で東京リージョンのリリースも 含めて以下に記載しております。 2012 Ansibleリ リ ー ス 2006 2011 2009 Chefリ リ ー ス AW S 東 京 リ ー ジ ョ ン 開 設 日本でIaCが徐々に流行 2013 Dockerリ リ ー ス 2021 Terraform GA
© 2023, Amazon Web Services, Inc. or its affiliates.
© 2023, Amazon Web Services, Inc. or its affiliates. AWS
における IaC 関連サービス AWS CloudFormation AWS Cloud Development Kit (AWS CDK) テキスト形式 (YAML or JSON) で 宣言的に記述されたテンプレートから AWS リソースを作成 AWS の環境を一般のプログラミング言語*で 記述できるツールキット AWSTemplateFormatVersion: 2010-09-09 Description: Sample Parameters: KeyName: Description: "Sample key" Type: String Mappings: RegionMap: ap-northeast-1: "AMIC”: “ami-xxxxxxxxxx" Resources: Ec2Instance: Type: "AWS::EC2::Instance" Properties: SubnetId: "subnet-xxxxxxxxxx" SecurityGroupIds: - "sg-xxxxxxxxxx" KeyName: !Ref KeyName ImageId: !FindInMap [ RegionMap, !Ref "AWS::Region", AMI ]
© 2023, Amazon Web Services, Inc. or its affiliates. AWS
における IaC 関連サービス・ツール AWS CloudFormation AWS Cloud Development Kit (AWS CDK) テキスト形式 (YAML or JSON) で 宣言的に記述されたテンプレートから AWS リソースを作成 AWS の環境を一般のプログラミング言語*で 記述できるツールキット バックエンドでは CloudFormation を利用
© 2023, Amazon Web Services, Inc. or its affiliates. ©
2023, Amazon Web Services, Inc. or its affiliates. AWS Cloud Development Kit (CDK) 11
© 2023, Amazon Web Services, Inc. or its affiliates. AWS
Cloud Development Kit (CDK) プログラミング言語で AWSリソースを定義するフレームワーク 馴染みのある開発言語 オートコンプリート、 インラインドキュメント 再利用可能なクラスを 有効活用 Java
© 2023, Amazon Web Services, Inc. or its affiliates. 主な構成要素
• CDKはコアフレームワーク、コンストラクトライブラリ、CDK CLI の3つから構成 コアフレームワーク コンストラクトライブラリ AWS CDK CLI (AWS CDK Toolkit) App Stacks Resources Serverless App Integration / Foundational Services Containers CI/CD
© 2023, Amazon Web Services, Inc. or its affiliates. AWS
CDK の概念 https://docs.aws.amazon.com/cdk/v2/guide/home.html • アプリケーション全体 • 複数のAWSアカウント、リージョンに またがることが可能 App • CloudFormation スタックに対応 • デプロイ可能な最小単位 Stack • CDKの最も基本的なビルディングブロック • 1つまたは複数のAWSリソースを表現 • ユーザーにより定義・配布が可能 Construct
© 2023, Amazon Web Services, Inc. or its affiliates. AWS
Constructs Library • AWS CDK が標準で提供する Construct のライブラリ • Low-level constructs (L1) • CloudFormationリソースおよびプロパティと1:1で対応(自動生成される) • CfnXXX という名前 (例:s3.CfnBucket は AWS::S3::Bucket を意味) • 記載粒度はCloudFormationと同等 • High-level constructs (L2) • デフォルト値や便利なメソッドを定義したAWSリソースを表すクラス • 例)クラス s3 は メソッド s3.Bucket.addLifeCycleRule() を持つ • Patterns • 複数のリソースを含む一般的な構成パターンを事前に定義したもの • aws-ecs-patterns.LoadBalancedFargateService など
© 2023, Amazon Web Services, Inc. or its affiliates. CloudFormation
テンプレート Resources: MyBucket: Type: AWS::S3::Bucket MyUser: Type: AWS::IAM::User MyUserPolicy: Type: AWS::IAM::Policy Properties: PolicyDocument: Statement: - Action: - s3:GetObject* - s3:GetBucket* - s3:List* Effect: Allow Resource: - Fn::GetAtt: [ MyBucket, Arn ] - Fn::Sub: "${MyBucket.Arn}/*" Version: "2012-10-17" PolicyName: MyUserPolicy Users: - Ref: MyUser AWS CloudFormation template language 例: IAM User からの 読取専用アクセスを許可する S3 Bucket を作成
© 2023, Amazon Web Services, Inc. or its affiliates. L1
Constructs const bucket = new CfnBucket(this, 'MyBucket'); const user = new CfnUser(this, 'MyUser'); new CfnPolicy(this, 'MyUserPolicy', { policyName: 'MyUserPolicy', policyDocument: new PolicyDocument({ statements: [new PolicyStatement({ actions: [ 's3:GetObject*', 's3:GetBucket*', 's3:List*'], resources: [ bucket.bucketArn, `${bucket.bucketArn}/*`] })] }), users: [user.userName], }); AWS CloudFormation resources AWS CloudFormation template language ”L1” AWS CDK CloudFormation テンプレートとほぼ1:1対応 型チェックや補完、ループなどは使用可能 CloudFormation から 自動的に生成
© 2023, Amazon Web Services, Inc. or its affiliates. CloudFormation
から 自動的に生成 L2 Constructs const bucket = new s3.Bucket(this, 'MyBucket'); const user = new iam.User(this, 'MyUser'); bucket.grantRead(user); AWS CloudFormation resources AWS CloudFormation template language AWS Construct Library ”L1” ”L2” AWS CDK AWS CDK コントリビューターが作成 grant() メソッドにより IAM Policy を自動生成 コードから意図が明確に
© 2023, Amazon Web Services, Inc. or its affiliates. ©
2023, Amazon Web Services, Inc. or its affiliates. 各種イベント 19
© 2023, Amazon Web Services, Inc. or its affiliates. 日本のCDK界隈、盛り上がってます
AWS CDKのGitHubのリポジトリのスター数はGlobalで2番目 https://ossinsight.io/analyze/aws/aws-cdk#overview https://ossinsight.io/analyze/aws/aws-cdk#overview
© 2023, Amazon Web Services, Inc. or its affiliates. AWS
CDK Conference Japan 2023 1/2 2023年5月20日にAWS CDK Conference Japan 2023が開催されました。JAWS-UG CDK支部主催のイベントで、一年で一度のCDKの祭りです。物理で約100名、 リモートで約400名お集りいただきました。 https://jawsug-cdk.connpass.com/event/278205/presentation/
© 2023, Amazon Web Services, Inc. or its affiliates. AWS
CDK Conference Japan 2023 2/2 AWS社員として友岡さん、高野さんが登壇し、以下のセッションが大変好評 でした。実装時の参考情報としてご活用ください。 2023/05/20 AWS CDK CONFERENCE JAPAN ͋Δ͋Δ͓Έʹ͍͑ͨ © 2023, Amazon Web Services, Inc. or its affiliates. Twitter: #jawsug_cdk © 2023, Amazon Web Services, Inc. or its affiliates. AWS CDKͷ͋Δ͋Δ͓Έʹ͍͑ͨ ։ൃ࣌ͷҙࢥܾఆΛߴԽ͢ΔͨΊʹ ༑Ԭ խࢤ Prototyping Engineer Amazon Web Services Japan G.K. 実践 AWS CDK 〜 いろいろな参照のカタチと使い分け 〜 © 2023, Amazon Web Services, Inc. or its affiliates. < #jawsug_cdk © 2023, Amazon Web Services, Inc. or its affiliates. 実践 AWS CDK Kono, Kenji いろいろな参照のカタチと使い分け A W S C D K C O N F E R E N C E J A P A N 2 0 2 3 Solutions Architect Amazon Web Services Japan G.K. 2023/5/20 https://speakerdeck.com/konokenj/reference-patterns-in-aws-cdk https://speakerdeck.com/tmokmss/answering-cdk-faqs
© 2023, Amazon Web Services, Inc. or its affiliates. AWS
Summit Tokyo 2023 4年ぶりの物理開催。開発者ブースにてCDK、CloudFormation、 BLEA ( Baseline Environment on AWS ) 等、各種IaC関連のご質問、 ご意⾒を多くいただきました。
© 2023, Amazon Web Services, Inc. or its affiliates. AWS
Dev Day 2023 Tokyo 「BLEA 開発チームが学んだ AWS CDK の開発プラクティス 」と題して SA ⾼野さんが発表しました。セキュリティ対応を楽にするアイデア、スタック 分割などのCDKにおける開発プラクティスがまとまっており、好評でした。 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. マルチスタックからシングルスタックに変更 1つの CDK App を複数のスタックで構成 CDK App chatbot-stack config-rules-stack iam-stack x5 実装の背景 • デプロイの影響範囲を局所化。ライフサイクル別にスタック分割 課題 • デプロイに時間がかかる • クロススタック参照多く、更新時に複雑な⼿順が必要 • Account Factory Customization (AFC) では1スタックのみデプロイ可能 BLEA v2 まで 原則として 1 CDK App = 1スタックで構成するように変更 • ガバナンスベースは AFC 対応のためシングルスタックに • ゲストシステムサンプルも原則シングルスタックに • リージョンが異なる場合やリソース数などの制約に当たる場合は例外 • スタックではなくコンストラクトを使⽤して構造化、ファイル分割 CDK App ct-guest-stack x1 BLEA v3
© 2023, Amazon Web Services, Inc. or its affiliates. ⻑野⽀部の皆様もぜひ⼀緒に
IaC やっていきませんか︕︖
© 2023, Amazon Web Services, Inc. or its affiliates. ©
2023, Amazon Web Services, Inc. or its affiliates. Appendix 26
© 2023, Amazon Web Services, Inc. or its affiliates. ©
2023, Amazon Web Services, Inc. or its affiliates. AWS CDK の学習をはじめる 27
© 2023, Amazon Web Services, Inc. or its affiliates. 前提知識を⾝につける
TypeScript • TypeScriptの基礎から始めるAWS CDK開発入門 https://catalog.workshops.aws/typescript-and-cdk-for-beginner/ja-JP • サバイバル TypeScript https://typescriptbook.jp/ 28 構文や型、npmなど基本的なところを抑えればOK! 非同期処理 (Promise, async/await) やジェネリクスのような高度なプログラミングや React (jsx, tsx) のようなフロントエンド向けの詳細の理解は必要ありません
© 2023, Amazon Web Services, Inc. or its affiliates. AWS
CDK のリソース AWS CDK Developer Guide https://docs.aws.amazon.com/ja _jp/cdk/v2/guide/home.html AWS CDK のコンセプトや ベストプラクティスなど 開発に役立つ情報を記載 API Reference https://docs.aws.amazon.com/cd k/api/v2/docs/aws-construct- library.html API の仕様はこちらで確認 CDK Workshop https://cdkworkshop.com/ 実際にコードを書きながら CDK を学べるワークショップ TypeScript, Python, .NET, Java に 対応 29
© 2023, Amazon Web Services, Inc. or its affiliates. CDK
のベストプラクティス • AWS CDKでクラウドアプリケーションを開発するためのベストプラクティス • https://aws.amazon.com/jp/blogs/news/best-practices-for-developing-cloud-applications- with-aws-cdk/ 30