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
JAWS-UG 長野支部 勉強会 in 松本 IaC 関連最新情報
Search
Hiroki Uchida
July 07, 2023
Technology
470
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
63
CloudTrailも、GuardDutyも、VPC Flow logsも… ログ多すぎ問題の整理術
nikuyoshi
5
1.8k
テクニカルな目線からみたAnsibleFest2018
nikuyoshi
0
130
Molecule入門
nikuyoshi
1
490
Other Decks in Technology
See All in Technology
白金鉱業Meetup_Vol.24_「AIエージェントは分けるほど良い」は本当か? / Is it true that “the more you divide AI agents, the better”?
brainpadpr
1
420
When Platform Engineering Meets GenAI
sucitw
0
140
ぼっちではじめた登壇が「51名」「241件」の発信に化けた
subroh0508
1
280
クレデンシャル流出 ― 攻撃 3 時間 vs 復旧 10 時間。この非対称性にどう備えるか
kazzpapa3
2
380
iAEONの段階的リアーキテクト戦略 / iAEON's_Gradual_Re-architecture_Strategy
aeonpeople
0
230
Bucharest Tech Week 2026 - Guardians of the Cloud-Native Galaxy
edeandrea
PRO
0
130
【NRUG vol.18】KubernetesにおけるNew Relicデータ取得量削減の考え方
nrug_member
0
170
FPC(フレキシブル)基板にZephyr実装してみた。
iotengineer22
0
140
SteampipeとExcel Power QueryでAWS構成定義書の作成を自動化する
jhashimoto
0
160
Flow 不死:AI 時代 DevOps 的不變本質
cheng_wei_chen
2
400
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
2k
インシデントレスポンス演習 I / Incident Response Exercise I
ks91
PRO
0
100
Featured
See All Featured
Ethics towards AI in product and experience design
skipperchong
2
310
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
For a Future-Friendly Web
brad_frost
183
10k
Facilitating Awesome Meetings
lara
57
7k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
360
A Modern Web Designer's Workflow
chriscoyier
698
190k
30 Presentation Tips
portentint
PRO
1
330
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
170
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
170
Between Models and Reality
mayunak
4
340
Designing for humans not robots
tammielis
254
26k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
210
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