Slide 1

Slide 1 text

©Fusic Co., Ltd. 1 *B$͔Β"84ʹೖ໳ͨ͠ॳ৺ऀ͕ $MPVE'PSNBUJPOΛ௨ͯ͠ߟ͑ͨʮ"84ૢ࡞ʯͷ࢖͍෼͚ 2024.05.05 Mai Miyazaki @maimyyym JAWS-UG初⼼者⽀部#60 初⼼者向けLT⼤会

Slide 2

Slide 2 text

©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 福岡

Slide 3

Slide 3 text

©Fusic Co., Ltd. 3 話すこと・話さないこと はじめに # 話すこと - 個⼈的な体験談を通して考えてみたAWSの触り⽅ - マネコンもCLIもIaCもいいね、という話 # 話さないこと - CloudFormationの詳しい使い⽅や各ツールの具体的な操作⽅法

Slide 4

Slide 4 text

©Fusic Co., Ltd. 4 CONTENTS ⽬次 1. AWSの触り⽅ 2. CloudFormationで⾒るAWS操作 3. 感じたこと、改めて考えるAWS操作 4. まとめ

Slide 5

Slide 5 text

©Fusic Co., Ltd. 5 CONTENTS ⽬次 1. AWSの触り⽅ 2. CloudFormationで⾒るAWS操作 3. 感じたこと、改めて考えるAWS操作 4. まとめ

Slide 6

Slide 6 text

©Fusic Co., Ltd. 6 AWSの触り⽅ マネジメントコンソールとAWS CLIとIaCツール 1

Slide 7

Slide 7 text

©Fusic Co., Ltd. 7 主な操作⽅法 AWSの触り⽅ マネジメント コンソール AWS CLI IaCツール

Slide 8

Slide 8 text

©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

Slide 9

Slide 9 text

©Fusic Co., Ltd. 9 私のAWS⼊⾨ AWSの触り⽅ IaCツール! 【Terraformを触ってみた研修期間】 【AWS CDKによるサーバーレス開発】

Slide 10

Slide 10 text

©Fusic Co., Ltd. 10 私のAWS⼊⾨ AWSの触り⽅ IaCツールのここが嬉しい! 簡単!すぐに動く! でもサービスの理解は必要。 →程よい達成感をすぐに得られる・効率よく学べる

Slide 11

Slide 11 text

©Fusic Co., Ltd. 11 私のAWS⼊⾨ AWSの触り⽅ 課題 マネジメントコンソールやAWS CLIによる操作をほぼ経験していない EC2を⽴てたこともほぼなく、多くの⼈が⼊⾨時に触れるものに慣れていない 動いて嬉しい! 本当にそれでいいの? ⾃分のキャリアやロールによる・・・

Slide 12

Slide 12 text

©Fusic Co., Ltd. 12 私のAWS⼊⾨ AWSの触り⽅ 課題 マネジメントコンソールやAWS CLIによる操作をほぼ経験していない EC2を⽴てたこともほぼなく、多くの⼈が⼊⾨時に触れるものに慣れていない 動いて嬉しい! 本当にそれでいいの? ⾃分のキャリアやロールによる・・・ 私はNo!

Slide 13

Slide 13 text

©Fusic Co., Ltd. 13 私のAWS⼊⾨ AWSの触り⽅ そんな時、 CloudFormationを触る機会がありました (実はあまり使ったことがなかった)

Slide 14

Slide 14 text

©Fusic Co., Ltd. 14 CloudFormationで⾒るAWS操作 既存リソースのインポート作業をAWS CLIとマネジメントコンソールで⾏う 2

Slide 15

Slide 15 text

©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ユーザーガイドより) 【テンプレートをもとにスタックを作成】 テンプレート スタック テンプレートに定義したリソースのコレ クション。スタック操作によりリソース をまとめて作成・更新・削除ができる。 【リソース⾃動作成】

Slide 16

Slide 16 text

©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バケット ローカルファイル

Slide 17

Slide 17 text

©Fusic Co., Ltd. 17 CloudFormationによる既存リソースのインポート CloudFormationで⾒るAWS操作 CloudFormationテンプレートで未定義の AWSクラウド上に既にあるリソースを CloudFormationで管理したい → 既存リソースのインポート機能! Amazon DynamoDB

Slide 18

Slide 18 text

©Fusic Co., Ltd. 18 CloudFormationによる既存リソースのインポート CloudFormationで⾒るAWS操作 CloudFormationテンプレートで未定義の AWSクラウド上に既にあるリソースを CloudFormationで管理したい → 既存リソースのインポート機能! Amazon DynamoDB コンソール上またはCLIでしか 操作・管理できないものを どうやってコード(IaC)に取り込むの?

Slide 19

Slide 19 text

©Fusic Co., Ltd. 19 CloudFormationによる既存リソースのインポート CloudFormationで⾒るAWS操作 # マネジメントコンソールを使⽤ # AWS CLIを使⽤

Slide 20

Slide 20 text

©Fusic Co., Ltd. 20 CloudFormationによる既存リソースのインポート CloudFormationで⾒るAWS操作 # マネジメントコンソールを使⽤ # AWS CLIを使⽤ テンプレートをローカル(コンソール以外の場所)で管理 →リソース管理はコードで完結させたい =コンソール上の操作を避けたい

Slide 21

Slide 21 text

©Fusic Co., Ltd. 21 CloudFormationによる既存リソースのインポート CloudFormationで⾒るAWS操作 # マネジメントコンソールを使⽤ # AWS CLIを使⽤ テンプレートをローカル(コンソール以外の場所)で管理 →リソース管理はコードで完結させたい =コンソール上の操作を避けたい

Slide 22

Slide 22 text

©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

Slide 23

Slide 23 text

©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 変更セット を確認

Slide 24

Slide 24 text

©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", // 略 }

Slide 25

Slide 25 text

©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", // 略 } コンソール上での確認が 分かりやすい!

Slide 26

Slide 26 text

©Fusic Co., Ltd. 26 CloudFormationによる既存リソースのインポート CloudFormationで⾒るAWS操作 # マネジメントコンソールで「確認」する分かりやすさ - 直感的で分かりやすい → 「確認」に適している - 何らかのエラー(状態=Status)が必ず表⽰されている - (CloudFormationの場合)やり直し操作などはコンソール操作が速い - ※コンソールとコードで競合発⽣など影響がない場合

Slide 27

Slide 27 text

©Fusic Co., Ltd. 27 CloudFormationによる既存リソースのインポート CloudFormationで⾒るAWS操作 # マネジメントコンソールで「確認」する分かりやすさ - 直感的で分かりやすい → 「確認」に適している - 何らかのエラー(状態=Status)が必ず表⽰されている - (CloudFormationの場合)やり直し操作などはコンソール操作が速い - ※コンソールとコードで競合発⽣など影響がない場合 私がCLI操作に慣れていない・複雑な操作を⾏わない等の条件下で マネジメントコンソールの利点を感じた。 操作者や開発状況によって何が適しているかは変わる。

Slide 28

Slide 28 text

©Fusic Co., Ltd. 28 感じたこと、改めて考えるAWS操作 役割を理解して使い分けよう 3

Slide 29

Slide 29 text

©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

Slide 30

Slide 30 text

©Fusic Co., Ltd. 30 感じたこと 感じたこと、改めて考えるAWS操作 # 改めて、私のステータス - IaCツール(CDK, terraform)でAWS⼊⾨ - マネコン、AWS CLIにはあまり慣れていない # CloudFormationでの作業を通して感じたこと - AWS CLIでの操作は⾃分が何をしようとしているか慎重に理解できる。速い。 今ではちょっとした検証時にも使⽤するように。 - マネジメントコンソールは直感的で分かりやすいことはもちろん、隅々まで注意深く⾒ると サービスを構成するコンポーネントを知ることができる。 - その上で、IaCでリソースを管理する開発・運⽤上のメリットと学習・開発効率の良さがある。

Slide 31

Slide 31 text

©Fusic Co., Ltd. 31 役割を理解して使い分けよう 感じたこと、改めて考えるAWS操作 マネジメントコンソール AWS CLI IaCツール 【開発⾯】状態の確認・デバッグ 【学習⾯】ある⼀つのサービスを 構成するコンポーネントを理解 【開発⾯】APIに直接アクセス CLIを利⽤した複雑な操作 【学習⾯】APIの理解 検証の効率化 【開発⾯】リソースの可視化 運⽤上の管理しやすさ 【学習⾯】サービス・構成全体を俯瞰 構成要素、関連性を理解 IaCの良さは過去LTでも発表!

Slide 32

Slide 32 text

©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

Slide 33

Slide 33 text

©Fusic Co., Ltd. 33 Thank You We are Hiring! https://recruit.fusic.co.jp/ ご清聴いただきありがとうございました