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
980
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
2年目エンジニアが過ごしたre:Invent、私にできる明日からのEverything starts with security
maimyyym
0
34
"とにかくやってみる"で始めるAWS Security Hub
maimyyym
2
230
AWS Well-Architected Framework をみんなで読んでいる話
maimyyym
1
53
課金体系を紐解いて学ぶAWS WAF
maimyyym
2
120
自由で便利なLaravelのしんどいポイントを楽しさに変える
maimyyym
1
120
LandingZoneAccelerator と学ぶ 「スケーラブルで安全なマルチアカウントAWS環境」と 私たちにもできるベストプラクティス
maimyyym
1
220
初めての札幌と初めてのBedrock ~Bedrock Converse API×SAMで遊んでみる~
maimyyym
1
320
S3操作の落とし穴から学ぶ Laravel File Storageと例外処理
maimyyym
2
790
タイパ重視×アウトプット駆動ではじめるAWS 〜認定資格とコミュニティの先で考えるAWSの学び方〜
maimyyym
2
300
Other Decks in Technology
See All in Technology
AIのコンプラは何故しんどい?
shujisado
1
190
Storage Browser for Amazon S3
miu_crescent
1
140
アップデート紹介:AWS Data Transfer Terminal
stknohg
PRO
0
180
.NET 9 のパフォーマンス改善
nenonaninu
0
800
開発生産性向上! 育成を「改善」と捉えるエンジニア育成戦略
shoota
1
300
サイボウズフロントエンドエキスパートチームについて / FrontendExpert Team
cybozuinsideout
PRO
5
38k
20241214_WACATE2024冬_テスト設計技法をチョット俯瞰してみよう
kzsuzuki
3
440
Snykで始めるセキュリティ担当者とSREと開発者が楽になる脆弱性対応 / Getting started with Snyk Vulnerability Response
yamaguchitk333
2
180
AWS re:Invent 2024で発表された コードを書く開発者向け機能について
maruto
0
190
新機能VPCリソースエンドポイント機能検証から得られた考察
duelist2020jp
0
220
Amazon SageMaker Unified Studio(Preview)、Lakehouse と Amazon S3 Tables
ishikawa_satoru
0
150
LINEヤフーのフロントエンド組織・体制の紹介【24年12月】
lycorp_recruit_jp
0
530
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Designing Experiences People Love
moore
138
23k
Why Our Code Smells
bkeepers
PRO
335
57k
Making the Leap to Tech Lead
cromwellryan
133
9k
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Embracing the Ebb and Flow
colly
84
4.5k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.3k
GraphQLとの向き合い方2022年版
quramy
44
13k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
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/
ご清聴いただきありがとうございました