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
IaCからAWSに入門した初心者が CloudFormationを通して考えた「AWS操作」の...
Search
mai miya
May 05, 2024
Technology
4
910
IaCからAWSに入門した初心者が CloudFormationを通して考えた「AWS操作」の使い分け
2024/05/05 JAWS-UG初心者支部#60 初心者向けLT大会
https://jawsug-bgnr.connpass.com/event/316727/
mai miya
May 05, 2024
Tweet
Share
More Decks by mai miya
See All by mai miya
自由で便利なLaravelのしんどいポイントを楽しさに変える
maimyyym
1
89
LandingZoneAccelerator と学ぶ 「スケーラブルで安全なマルチアカウントAWS環境」と 私たちにもできるベストプラクティス
maimyyym
1
180
初めての札幌と初めてのBedrock ~Bedrock Converse API×SAMで遊んでみる~
maimyyym
1
250
S3操作の落とし穴から学ぶ Laravel File Storageと例外処理
maimyyym
2
450
タイパ重視×アウトプット駆動ではじめるAWS 〜認定資格とコミュニティの先で考えるAWSの学び方〜
maimyyym
2
250
SREがいない”今いる場所”で 「SRE」について聞いて、考えてみた
maimyyym
2
370
一生覚えておきたい「システム開発=コミュニケーション」〜初めての実務案件振り返りLT〜
maimyyym
3
680
AWSコミュニティで刺激を受けたエンジニア一年生がJAWS DAYS 2024でGameDayに挑戦してきた話
maimyyym
3
620
実は知らなかった、DNSが解決しているものは何?
maimyyym
4
540
Other Decks in Technology
See All in Technology
Product Utilization of Large Language Models Starting Today
ymatsuwitter
3
1.5k
O'Reilly Superstream: Building a RAG App to Chat with Your Data
pamelafox
0
120
ADRを運用して3年経った僕らの現在地
onk
PRO
13
5.9k
シェルとPerlの使い分け、 そういった思考の道具は、どこから来て、どこへゆくのか?v1.1.0
fmlorg
0
540
これはPerl? それともRuby? クイズ〜〜〜〜〜!!!- Perl or Ruby Quiz
moznion
2
1.9k
Slackbot × RAG で実現する社内情報検索の最適化
howdy39
2
350
Webセキュリティのあるきかた
akiym
32
11k
Amplify Gen 2ではじめる 生成AIアプリ開発入門
tsukuboshi
0
270
LINEヤフー新卒採用 コーディングテスト解説 アルゴリズム問題編
lycorp_recruit_jp
0
13k
The People First Approach to Engineering Success - DevNot 2024
zikriyeurkmez
0
180
小さな勉強会の始め方、広げ方、あるいは友達の作り方 / How to Start, Grow, and Build Connections with Small Study Groups
ar_tama
6
3k
CData Virtuality を活かせるキーシナリオと製品デモ
cdataj
0
300
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Teambox: Starting and Learning
jrom
132
8.7k
Building an army of robots
kneath
302
42k
A better future with KSS
kneath
237
17k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
3
230
GraphQLとの向き合い方2022年版
quramy
43
13k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.6k
Scaling GitHub
holman
458
140k
Visualization
eitanlees
143
15k
How to Ace a Technical Interview
jacobian
275
23k
Six Lessons from altMBA
skipperchong
26
3.4k
Transcript
©Fusic Co., Ltd. 1 *B$͔Β"84ʹೖͨ͠ॳ৺ऀ͕ $MPVE'PSNBUJPOΛ௨ͯ͠ߟ͑ͨʮ"84ૢ࡞ʯͷ͍͚ 2024.05.05 Mai Miyazaki @maimyyym
JAWS-UG初⼼者⽀部#60 初⼼者向けLT⼤会
©Fusic Co., Ltd. 2 宮崎 真⾐ Miyazaki Mai @maimyyym ◉
I am - IDDM(Insulin Dependent Diabetes Mellitus)3歳発症 〜 Now - 元百貨店スタッフ(Beauty Counselor) - 管理栄養⼠(養成校卒業・資格保持のみ) ◉ Skill - PHP / TypeScript / Python / AWS ◉ Comment - AWS歴:約1年 - 2023年10⽉より株式会社Fusicにjoin🎉 ⾃⼰紹介 はじめに 技術開発部⾨ エンジニア 株式会社Fusic at 福岡
©Fusic Co., Ltd. 3 話すこと・話さないこと はじめに # 話すこと - 個⼈的な体験談を通して考えてみたAWSの触り⽅
- マネコンもCLIもIaCもいいね、という話 # 話さないこと - CloudFormationの詳しい使い⽅や各ツールの具体的な操作⽅法
©Fusic Co., Ltd. 4 CONTENTS ⽬次 1. AWSの触り⽅ 2. CloudFormationで⾒るAWS操作
3. 感じたこと、改めて考えるAWS操作 4. まとめ
©Fusic Co., Ltd. 5 CONTENTS ⽬次 1. AWSの触り⽅ 2. CloudFormationで⾒るAWS操作
3. 感じたこと、改めて考えるAWS操作 4. まとめ
©Fusic Co., Ltd. 6 AWSの触り⽅ マネジメントコンソールとAWS CLIとIaCツール 1
©Fusic Co., Ltd. 7 主な操作⽅法 AWSの触り⽅ マネジメント コンソール AWS CLI
IaCツール
©Fusic Co., Ltd. 8 主な操作⽅法 AWSの触り⽅ マネジメントコンソール AWS CLI IaCツール
AWS クラウドにアクセスして 管理するために必要なものすべてを 1 つのウェブインターフェイスに集結 [引⽤元]https://aws.amazon.com/jp/console/ AWS のサービスを管理するための統合ツールです。 ダウンロードおよび設定⽤の単⼀のツールのみを 使⽤して、コマンドラインから AWS の複数のサー ビスを制御し、スクリプトを使⽤してこれらを⾃動 化することができます。 [引⽤元] https://aws.amazon.com/jp/cli/ ⼿動のプロセスや設定の代わりにコードを使⽤ してコンピューティングインフラストラクチャ をプロビジョニングおよびサポートできること [引⽤元] https://aws.amazon.com/jp/what-is/iac/ (例)AWS CloudFormation / AWS CDK / Terraform
©Fusic Co., Ltd. 9 私のAWS⼊⾨ AWSの触り⽅ IaCツール! 【Terraformを触ってみた研修期間】 【AWS CDKによるサーバーレス開発】
©Fusic Co., Ltd. 10 私のAWS⼊⾨ AWSの触り⽅ IaCツールのここが嬉しい! 簡単!すぐに動く! でもサービスの理解は必要。 →程よい達成感をすぐに得られる・効率よく学べる
©Fusic Co., Ltd. 11 私のAWS⼊⾨ AWSの触り⽅ 課題 マネジメントコンソールやAWS CLIによる操作をほぼ経験していない EC2を⽴てたこともほぼなく、多くの⼈が⼊⾨時に触れるものに慣れていない
動いて嬉しい! 本当にそれでいいの? ⾃分のキャリアやロールによる・・・
©Fusic Co., Ltd. 12 私のAWS⼊⾨ AWSの触り⽅ 課題 マネジメントコンソールやAWS CLIによる操作をほぼ経験していない EC2を⽴てたこともほぼなく、多くの⼈が⼊⾨時に触れるものに慣れていない
動いて嬉しい! 本当にそれでいいの? ⾃分のキャリアやロールによる・・・ 私はNo!
©Fusic Co., Ltd. 13 私のAWS⼊⾨ AWSの触り⽅ そんな時、 CloudFormationを触る機会がありました (実はあまり使ったことがなかった)
©Fusic Co., Ltd. 14 CloudFormationで⾒るAWS操作 既存リソースのインポート作業をAWS CLIとマネジメントコンソールで⾏う 2
©Fusic Co., Ltd. 15 CloudFormationとは CloudFormationで⾒るAWS操作 AWSリソースの設定をテンプレートに記述 →リソース⾃動作成・管理を⾏う = AWS提供のIaCサービス
AWSTemplateFormatVersion: "2010-09-09" Description: A sample template Resources: MyEC2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: "ami-0ff8a91507f77f867" InstanceType: t2.micro KeyName: testkey BlockDeviceMappings: - DeviceName: /dev/sdm Ebs: VolumeType: io1 Iops: 200 DeleteOnTermination: false VolumeSize: 20 https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/template-formats.html 【YAMLテンプレートの例】 (AWS CloudFormationユーザーガイドより) 【テンプレートをもとにスタックを作成】 テンプレート スタック テンプレートに定義したリソースのコレ クション。スタック操作によりリソース をまとめて作成・更新・削除ができる。 【リソース⾃動作成】
©Fusic Co., Ltd. 16 CloudFormationの操作⽅法 CloudFormationで⾒るAWS操作 マネジメントコンソール AWS CLI 【テンプレートの配置場所】
S3バケット ローカルファイル →アップロード コンソールに 直接⼊⼒ $ aws cloudformation create-stack \ --stack-name teststack \ --template-body \ file:///home/testuser/template.yaml 【テンプレートの配置場所】 【例:スタック作成】 S3バケット ローカルファイル
©Fusic Co., Ltd. 17 CloudFormationによる既存リソースのインポート CloudFormationで⾒るAWS操作 CloudFormationテンプレートで未定義の AWSクラウド上に既にあるリソースを CloudFormationで管理したい →
既存リソースのインポート機能! Amazon DynamoDB
©Fusic Co., Ltd. 18 CloudFormationによる既存リソースのインポート CloudFormationで⾒るAWS操作 CloudFormationテンプレートで未定義の AWSクラウド上に既にあるリソースを CloudFormationで管理したい →
既存リソースのインポート機能! Amazon DynamoDB コンソール上またはCLIでしか 操作・管理できないものを どうやってコード(IaC)に取り込むの?
©Fusic Co., Ltd. 19 CloudFormationによる既存リソースのインポート CloudFormationで⾒るAWS操作 # マネジメントコンソールを使⽤ # AWS
CLIを使⽤
©Fusic Co., Ltd. 20 CloudFormationによる既存リソースのインポート CloudFormationで⾒るAWS操作 # マネジメントコンソールを使⽤ # AWS
CLIを使⽤ テンプレートをローカル(コンソール以外の場所)で管理 →リソース管理はコードで完結させたい =コンソール上の操作を避けたい
©Fusic Co., Ltd. 21 CloudFormationによる既存リソースのインポート CloudFormationで⾒るAWS操作 # マネジメントコンソールを使⽤ # AWS
CLIを使⽤ テンプレートをローカル(コンソール以外の場所)で管理 →リソース管理はコードで完結させたい =コンソール上の操作を避けたい
©Fusic Co., Ltd. 22 CloudFormationによる既存リソースのインポート CloudFormationで⾒るAWS操作 # AWS CLIを使⽤ 1.
インポートしたいリソースの設定内容をテンプレートに定義 2. インポート設定ファイル(ex. import.txt )を作成(CLIで直接⼊⼒も可) 3. CLI操作でインポート実⾏ $ aws cloudformation create-change-set \ --stack-name TargetStack \ --change-set-name ImportChangeSet \ --change-set-type IMPORT \ --resources-to-import file://import.txt \ --template-body file://template.yaml $ aws cloudformation execute-change-set \ --change-set-name ImportChangeSet \ --stack-name TargetStack 【変更セットを作成】 【変更セットを実⾏】 【詳しくは】https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/resource-import-existing-stack.html
©Fusic Co., Ltd. 23 CloudFormationによる既存リソースのインポート CloudFormationで⾒るAWS操作 # AWS CLIを使⽤ 1.
インポートしたいリソースの設定内容をテンプレートに定義 2. インポート設定ファイル(ex. import.txt )を作成(CLIで直接⼊⼒も可) 3. CLI操作でインポート実⾏ $ aws cloudformation create-change-set \ --stack-name TargetStack \ --change-set-name ImportChangeSet \ --change-set-type IMPORT \ --resources-to-import file://import.txt \ --template-body file://template.yaml $ aws cloudformation execute-change-set \ --change-set-name ImportChangeSet \ --stack-name TargetStack 【変更セットを作成】 【変更セットを実⾏】 【詳しくは】https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/resource-import-existing-stack.html 変更セット を確認
©Fusic Co., Ltd. 24 CloudFormationによる既存リソースのインポート CloudFormationで⾒るAWS操作 # 変更セットの確認 【詳しくは】https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/resource-import-existing-stack.html マネジメントコンソール
AWS CLI $ aws cloudformation describe-change-set --change-set-name ImportChangeSet --stack-name TargetStack { "Changes": [ { "Type": "Resource", "ResourceChange": { "Action": "Import", // 略 } } ], "ChangeSetName": "ImportChangeSet", // 略 "ExecutionStatus": "AVAILABLE", "Status": "CREATE_COMPLETE", // 略 }
©Fusic Co., Ltd. 25 CloudFormationによる既存リソースのインポート CloudFormationで⾒るAWS操作 # 変更セットの確認 【詳しくは】https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/resource-import-existing-stack.html マネジメントコンソール
AWS CLI $ aws cloudformation describe-change-set --change-set-name ImportChangeSet --stack-name TargetStack { "Changes": [ { "Type": "Resource", "ResourceChange": { "Action": "Import", // 略 } } ], "ChangeSetName": "ImportChangeSet", // 略 "ExecutionStatus": "AVAILABLE", "Status": "CREATE_COMPLETE", // 略 } コンソール上での確認が 分かりやすい!
©Fusic Co., Ltd. 26 CloudFormationによる既存リソースのインポート CloudFormationで⾒るAWS操作 # マネジメントコンソールで「確認」する分かりやすさ - 直感的で分かりやすい
→ 「確認」に適している - 何らかのエラー(状態=Status)が必ず表⽰されている - (CloudFormationの場合)やり直し操作などはコンソール操作が速い - ※コンソールとコードで競合発⽣など影響がない場合
©Fusic Co., Ltd. 27 CloudFormationによる既存リソースのインポート CloudFormationで⾒るAWS操作 # マネジメントコンソールで「確認」する分かりやすさ - 直感的で分かりやすい
→ 「確認」に適している - 何らかのエラー(状態=Status)が必ず表⽰されている - (CloudFormationの場合)やり直し操作などはコンソール操作が速い - ※コンソールとコードで競合発⽣など影響がない場合 私がCLI操作に慣れていない・複雑な操作を⾏わない等の条件下で マネジメントコンソールの利点を感じた。 操作者や開発状況によって何が適しているかは変わる。
©Fusic Co., Ltd. 28 感じたこと、改めて考えるAWS操作 役割を理解して使い分けよう 3
©Fusic Co., Ltd. 29 ここまでのまとめ 感じたこと、改めて考えるAWS操作 # CloudFormationによる既存リソースのインポート コード でリソース定義
マネジメントコンソール で確認 AWS CLI で操作 AWSTemplateFormatVersion: '2010-09-09' Description: test Resources: MyTable: Type: AWS::DynamoDB::Table DeletionPolicy: Retain Properties: TableName: my-table AttributeDefinitions: - AttributeName: id AttributeType: S BillingMode: PAY_PER_REQUEST KeySchema: - AttributeName: id KeyType: HASH $ aws cloudformation execute-change-set \ --change-set-name ImportChangeSet \ --stack-name TargetStack
©Fusic Co., Ltd. 30 感じたこと 感じたこと、改めて考えるAWS操作 # 改めて、私のステータス - IaCツール(CDK,
terraform)でAWS⼊⾨ - マネコン、AWS CLIにはあまり慣れていない # CloudFormationでの作業を通して感じたこと - AWS CLIでの操作は⾃分が何をしようとしているか慎重に理解できる。速い。 今ではちょっとした検証時にも使⽤するように。 - マネジメントコンソールは直感的で分かりやすいことはもちろん、隅々まで注意深く⾒ると サービスを構成するコンポーネントを知ることができる。 - その上で、IaCでリソースを管理する開発・運⽤上のメリットと学習・開発効率の良さがある。
©Fusic Co., Ltd. 31 役割を理解して使い分けよう 感じたこと、改めて考えるAWS操作 マネジメントコンソール AWS CLI IaCツール
【開発⾯】状態の確認・デバッグ 【学習⾯】ある⼀つのサービスを 構成するコンポーネントを理解 【開発⾯】APIに直接アクセス CLIを利⽤した複雑な操作 【学習⾯】APIの理解 検証の効率化 【開発⾯】リソースの可視化 運⽤上の管理しやすさ 【学習⾯】サービス・構成全体を俯瞰 構成要素、関連性を理解 IaCの良さは過去LTでも発表!
©Fusic Co., Ltd. 32 まとめ 『 IaCからAWSに⼊⾨した初⼼者がCloudFormationを通して考えた「AWS操作」の使い分け 』 AWSの主な操作⽅法はマネジメントコンソール、AWS CLI、IaCツール
Point 01 IaCツールであるCloudFormationの既存リソースインポートにおいては、AWS CLI+マネコンの両⼑使いが有⽤ Point 02 マネコンは分かりやすい、CLIは慣れると⼿軽で速い、IaCは全体を俯瞰できる・管理しやすい Point 03 ユースケースに適した操作⽅法を選んで、開発も学習も最適化・効率化! Point 04
©Fusic Co., Ltd. 33 Thank You We are Hiring! https://recruit.fusic.co.jp/
ご清聴いただきありがとうございました