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
はじめてのCloudFormation
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Koji Ishida
February 10, 2017
Technology
1.9k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
はじめてのCloudFormation
Koji Ishida
February 10, 2017
More Decks by Koji Ishida
See All by Koji Ishida
サーバレスでDynamoDBレスなIoTアプリ開発
kojiisd
0
630
AWSAmplifyHappyDev.pdf
kojiisd
1
2.5k
ぼんやりとしてたサーバレスアプリの監視を本格的に行おうとした話
kojiisd
0
800
機械学習で異常や障害予兆を検出
kojiisd
1
1.4k
Other Decks in Technology
See All in Technology
Agentic Web
dynamis
1
170
サイバーセキュリティ概論 / Introduction to Cybersecurity
ks91
PRO
0
170
「速く作る」から「正しく作る」へ ─ 生成AI時代の開発フロー改革の ロードマップと実行 ─
starfish719
0
8.6k
【Gen-AX】20260530開催_JJUG CCC 2026 Spring
genax
0
440
データ基盤をDataformで整えた話 〜 開発環境を添えて 〜
takapy
0
130
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
AIを「創る」と「使う」の循環 — HRテックが実践するリアルなAI組織実装
taketo957
0
1.7k
Terraformモジュールは、なぜ「魔境」化するのか
hayama17
2
210
Databricks における 生成AIガバナンスの実践
taka_aki
1
340
はじめてのDatadog
kairim0
0
290
AI活用を推進するために ファインディが下した、一つの小さな決断
starfish719
0
260
地元にいないローカルオーガナイザーの立ち回り
uvb_76
1
1.1k
Featured
See All Featured
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1.6k
Agile that works and the tools we love
rasmusluckow
331
21k
Scaling GitHub
holman
464
140k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
190
Automating Front-end Workflow
addyosmani
1370
210k
Amusing Abliteration
ianozsvald
1
200
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
380
From π to Pie charts
rasagy
0
200
Transcript
はじめてのCloudFormation 〜動的スケールをやってみた内容とその注意点〜 2017/02/10 Acroquest Technology Co., Ltd. 石田浩司 Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 1
自己紹介 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
2 • 石田浩司(@kojiisd) ‒ Acroquest Technology Co., Ltd. ‒ IoTプラットフォーム開発エンジニア ‒ 2012/10~2015/10 ミャンマー支社赴任 ‒ JavaOne 2015 スピーカー ‒ 2016/11 JAWS-UG 横浜支部 ‒ 2016/12 AWS re:Invent 2016 ※2017/01も滞在
作り側の人間です Copyright © Acroquest Technology Co., Ltd. All rights reserved.
3
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 4
ある日の作業中
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 5
上司 XXX案件で、Logstashを複数台立てて、S3よりファイルを読み込み、 Elasticsearchにデータを投入したい。 たぶんこの辺がポイント。 ・データ投入時だけ、インスタンスを立てて、投入し終わったら停止。 ・インスタンスの台数は、毎回変わる。10台の日もあれば50台の日も。 ・S3のデータの読み込み対象は、毎回変わる。 ・データのキューとしてKafkaを使うかも。 そのため、ECSか、CloudFormationが有効ではないか、と思ってい ますが、このあたりの構築をヘルプして欲しい。 技術解は問わないけど、 今週中(5日)くらいで検証して欲しいかな。 ElasticsearchはVer.5系ね。
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 6
Logstash Elasticsearch S3 Kafka ECS CloudFormation ← OK ← OK ← OK ← たぶん大丈夫 ← OK ← 知らん 4.5/6
Copyright © Acroquest Technology Co., Ltd. All rights reserved. はい、わかりました。
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 8
きちんと言われた内容を 確認しようと後で 後悔しました。
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 9
・・・ということを 学べた経験の共有
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 10
いったんやりたいことを整理
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 11
上司 XXX案件で、Logstashを複数台立てて、S3よりファイルを読み込み、 Elasticsearchにデータを投入したい。 たぶんこの辺がポイント。 ・データ投入時だけ、インスタンスを立てて、投入し終わったら停止。 ・インスタンスの台数は、毎回変わる。10台の日もあれば50台の日も。 ・S3のデータの読み込み対象は、毎回変わる。 ・データのキューとしてKafkaを使うかも。 そのため、ECSか、CloudFormationが有効ではないか、と思ってい ますが、このあたりの構築をヘルプして欲しい。 技術解は問わないけど、 今週中(5日)くらいで検証して欲しいかな。 ElasticsearchはVer.5系ね。
やりたいことを整理するとこんな感じ? Copyright © Acroquest Technology Co., Ltd. All rights reserved.
12 ・・・ 当時Ver.5系が AWSになかったので EC2インスタンスを利用
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 13
上司 XXX案件で、Logstashを複数台立てて、S3よりファイルを読み込み、 Elasticsearchにデータを投入したい。 たぶんこの辺がポイント。 ・データ投入時だけ、インスタンスを立てて、投入し終わったら停止。 ・インスタンスの台数は、毎回変わる。10台の日もあれば50台の日も。 ・S3のデータの読み込み対象は、毎回変わる。 ・データのキューとしてKafkaを使うかも。 そのため、ECSか、CloudFormationが有効ではないか、と思ってい ますが、このあたりの構築をヘルプして欲しい。 技術解は問わないけど、 今週中(5日)くらいで検証して欲しいかな。 ElasticsearchはVer.5系ね。
調査ポイントを整理 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
14 ・・・ ECS? CloudFormation? 必要な時に必要な分だけ 立ち上がって処理開始 アクセスパスが毎回、 インスタンス毎に変わる
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 15
パッと考えた感じ ECSより CloudFormationかなぁ
調査ポイントを整理 1. インスタンスの一斉立ち上げ ① コマンド一発で(後々立ち上げはスケジューリング)。 ② 台数の指定は立ち上げ時に指定できるようにする →CloudFormationならできそうだ。 2. S3へのアクセスパスは毎回異なる
① EC2インスタンスが起動時にどこにアクセスするかを理解し ている必要がある。 – ECインスタンス立ち上げ時に自身の役割を理解させる?できる? Copyright © Acroquest Technology Co., Ltd. All rights reserved. 16
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 17
ま、CloudFormationで
ゴールイメージ Copyright © Acroquest Technology Co., Ltd. All rights reserved.
18 ・・・ 検証するだけなので 一旦Kafkaは構成から抜く
ゴールイメージ Copyright © Acroquest Technology Co., Ltd. All rights reserved.
19 ・・・ ※最終的にはEMRを使うようになります。
調査の流れをイメージ Copyright © Acroquest Technology Co., Ltd. All rights reserved.
20 DAY 1 • EC2インスタンスなどの起動対象を準備 • EC2インスタンスのユーザデータ設定 DAY 2 • CloudFormationでインスタンス立ち上げ用スタック作成 • EC2インスタンス数の動的変更調査 DAY 3 • S3アクセスパス動的割り当て調査 • 全体の疎通確認 ※残り2日は予備日で考える。
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 21
DAY 1 DAY 1 • EC2インスタンスなどの起動対象を準備 • EC2インスタンスのユーザデータ設定 DAY 2 • CloudFormationでインスタンス立ち上げ用スタック作成 • EC2インスタンス数の動的変更調査 DAY 3 • S3アクセスパス動的割り当て調査 • 全体の疎通確認
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 22
EC2インスタンスなどの起動対象を準備 EC2インスタンスのユーザデータ設定
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 23
特に問題なかったので SKIP (・ω<)
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 24
DAY 2 DAY 1 • EC2インスタンスなどの起動対象を準備 • EC2インスタンスのユーザデータ設定 DAY 2 • CloudFormationでインスタンス立ち上げ用スタック作成 • EC2インスタンス数の動的変更調査 DAY 3 • S3アクセスパス動的割り当て調査 • 全体の疎通確認
CloudFormationでインスタンス立ち上げ用スタック作成 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
25 とりあえずわからないことだらけ
CloudFormationでインスタンス立ち上げ用スタック作成 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
26 とりあえずわからないことだらけ Webでそれっぽいサンプル探して 改修しようかな
CloudFormationでインスタンス立ち上げ用スタック作成 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
27 とりあえずわからないことだらけ Webでそれっぽいサンプル探して 改修しようかな 都合の良いサンプルなんか大体ない
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 28
エンジニアあるある
本当にシンプルなサンプルが見つからなかった。。。 1. VPC作成をするとか、新規にSG作るとかそういう Too muchなものばかり。 ① VPCは最初から指定されたものを使いたい ② SGも同様 ③
画面から選択とかいらないから、まず最小構成でEC2イン スタンスを起動するようにしたい 2. AWS CloudFormation Designerは、使い方を学ぶだけ で予定期間使っちゃいそう。。。 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 29 このあたりから少しずつ焦り始める
必要そうな項目だけWebから引っ張ってきた { "AWSTemplateFormatVersion": "2010-09-09", "Description": "s3 to Elasticsearch template", “Mappings”:
{}, "Parameters": { # 基本的にDefault値を設定しておく “ImageId”: {}, "InstanceType" : {}, "Name": {}, "KeyName": {}, "EBSVolumeSize" : {}, "CapacitySize": {}, "S3PathPrefix": {}, "Resources": {}, "Outputs": {} } Copyright © Acroquest Technology Co., Ltd. All rights reserved. 30 必要な項目は こんな感じだった ここにEC2インスタンス の設定を書けば OKの模様。
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 31
EC2インスタンスの設定は 一つずつ記述が必要 毎回必要数分 インスタンス設定を書く必要有 動的にインスタンス数変更不可
Copyright © Acroquest Technology Co., Ltd. All rights reserved. CloudFormationだけでEC2イ
ンスタンス数の動的変更難しい ですね。Terraform使えば・・・ 上司 CloudFormationだけで実現で きるといいよね。
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 33
CloudFormationだけで
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 34
AutoScaling AutoScalingGroup
AutoScalingしか対応できないの? 1. AutoScalingAutoScalingGroupのMaxSizeとMinSizeを 一緒にすれば、起動時のインスタンス数を指定可能。 Copyright © Acroquest Technology Co., Ltd.
All rights reserved. 35 “AutoScalingAutoScalingGroup” : { “Type” : “AWS::AutoScaling::AutoScalingGroup”, “Properties” : { “DesiredCapacity” : { “Ref” : “CapacitySize” }, “LaunchConfigurationName” : { “Ref” : “AutoScalingLaunchConfig” }, “MaxSize” : { “Ref” : “CapacitySize” }, “MinSize” : { "Ref" : "CapacitySize" }, "AvailabilityZones" : [] } } 0.5日足が出た
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 36
DAY 3 DAY 1 • EC2インスタンスなどの起動対象を準備 • EC2インスタンスのユーザデータ設定 DAY 2 • CloudFormationでインスタンス立ち上げ用スタック作成 • EC2インスタンス数の動的変更調査 DAY 3 • S3アクセスパス動的割り当て調査 • 全体の疎通確認 ※0.5日遅れ
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 37
S3アクセスパス動的 割り当て調査
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 38
これが大変だった・・・
1回目の起動はこうでも・・・ Copyright © Acroquest Technology Co., Ltd. All rights reserved.
39
2回目はこうなるかもしれない Copyright © Acroquest Technology Co., Ltd. All rights reserved.
40
Copyright © Acroquest Technology Co., Ltd. All rights reserved. どうやって自動起動したEC2
インスタンスに自分の役割を 認識させたらいいんだよ・・・。 無責任な 先輩Lambda信者 Lambda書けLambda。シュッ とやればOK。
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 42
せめて一斉起動時の 起動順番がわかれば 対応できるんだけど・・・
起動順番とパスを紐づけておけば対応できる Copyright © Acroquest Technology Co., Ltd. All rights reserved.
43 1st -> 01/xxx 2nd -> 02/xxx 3rd -> 03/xxx 4th -> 04/xxx 5th -> 05/xxx 6th -> 06/xxx ① ② ③ ④ ⑤ ⑥
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 44
ami-launch-index
ami-launch-indexとは? Copyright © Acroquest Technology Co., Ltd. All rights reserved.
45
ユーザデータに設定して解決! "UserData" : { "Fn::Base64" : { "Fn::Join" : ["",
[ "#!/bin/bash -xe\n", “curl http://169.254.169.254/latest/meta-data/ami-launch-index > /home/ ec2-user/MyIndex.txt\n”, (諸々初期設定スクリプト呼び出し) ]]} }, Copyright © Acroquest Technology Co., Ltd. All rights reserved. 46 下記に併せて起動時のスクリプトも修正 ※さらに0.5日遅れ
一通り通った! Copyright © Acroquest Technology Co., Ltd. All rights reserved.
47 ※全体で1日遅れ
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 48
プロジェクトに報告入れて ミッション完了 ※1日遅れ
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 49
と、思いきや
跳ね上がっていたコスト 1. 実施していたこと ① ユーザデータの修正(起動 →失敗→再起動) ② CloudFormationのテンプレ ート修正 2.
テンプレート適用後は確実 にスタックを削除、かつEC2 インスタンスも削除されてい ることは確認済。 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 50
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 51
CloudFormationで 起動失敗した場合に EBSが残っていた
原因は「起動失敗」→「再起動」時にEBSが残ったこと 1. 度重なるCloudFormation テンプレート修正(起動→失 敗→再起動)により、EC2 停止時にEBSが削除されて いなかった。 ① 100GB超のEBSが150以 上残っていた。
2. 即不要なEBSを削除して事 なきを得た。 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 52
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 53
EBSの残骸に気を付けましょう ※監視するだろう普通、というのは置いておいて・・・。 時間なかったんで勘弁してほしい。
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 54
まだあった DAY 4 DAY 1 • EC2インスタンスなどの起動対象を準備 • EC2インスタンスのユーザデータ設定 DAY 2 • CloudFormationでインスタンス立ち上げ用スタック作成 • EC2インスタンス数の動的変更調査 DAY 3 • S3アクセスパス動的割り当て調査 • 全体の疎通確認 DAY 4 ※1日遅れ
Copyright © Acroquest Technology Co., Ltd. All rights reserved. S3パスの対象が10を超えると
対象パスが重複するんだけど。 プロジェクト メンバ
11個目以降のアクセスパスが重複する Copyright © Acroquest Technology Co., Ltd. All rights reserved.
56 ※全体で1日遅れ ① ② ③ ⑩ ⑪ ・・・ ⑫
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 57
調査したら確かに 11個目からパスが重複 ami-launch-indexが 11個目から”0”スタート
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 58
嫌な予感
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 59
助けてサポートセンター!
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 60
Auto Scaling 側の挙動で、 キャパシティが10以上に指定された 場合は10台ずつインスタンスを立ち 上げるようになってるよー。 サポート センター 無慈悲な仕様による制限
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 61
ただ救いの手が! ※この相談(待ち)の間にEMRにプロジェクト方針決定 案1: DynamoDB のアトミックカウ ンタを使って採番する 案2: SQS と組み合わせてワーカー のようなアーキテクチャを構成する 案3: Amazon EMR を使用する サポート センター
こういうのも試してみたかった Copyright © Acroquest Technology Co., Ltd. All rights reserved.
62 ① ② ③ ⑩ ⑪ ・・・ ⑫ ・・・ ←事前に処理の登録が必要 or
今回学んだこと 1. CloudFormationは本当に便利 2. 利用時に関連するサービスの監視(ゴミが残らないかな ど)は必須 3. メタデータを利用して効率的なEC2インスタンス運用 4. 何か困ったらすぐサポートセンターに助けを求めよう!
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 63
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 64
Infrastructures Evolution ご清聴ありがとうございました