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
2k
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
640
AWSAmplifyHappyDev.pdf
kojiisd
1
2.5k
ぼんやりとしてたサーバレスアプリの監視を本格的に行おうとした話
kojiisd
0
810
機械学習で異常や障害予兆を検出
kojiisd
1
1.4k
Other Decks in Technology
See All in Technology
クラウド上のデータ復旧で見落としがちな制約: 医療系 SaaS の BCP 設計から得た教訓
kakehashi
PRO
0
3.2k
AI時代のエンジニアキャリアについて今一度考える
sakamoto_582
2
1.5k
AIDLC_ヤフーショッピングの取り組み
lycorptech_jp
PRO
0
600
SRE依存からの脱却 運用を開 発チームへ移す、 フルサイ クル開 発体制の実践
joooee0000
0
2.4k
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.4k
Keeping applications secure by evolving OAuth 2.0 and OpenID Connect
ahus1
PRO
1
150
グローバルチームと挑むプロダクト開発
sansantech
PRO
1
170
Claude Code公式skillで 自分の仕事を少しずつ手放そう!(Claude Code開発ノウハウ大公開スペシャル by クラスメソッド)
kaym
0
120
依頼文化をやめる日 EM視点で語るPlatform EngineeringとInclusive SRE / Discussing Platform Engineering and Inclusive SRE from an EM's Perspective
shin1988
4
5k
AI駆動開発におけるQAエンジニアの役割事例 〜AI駆動開発の現場から〜
kobayashiyorimitsu
0
460
KiCAD講習会②
tutcreators
0
100
Amazon EVS で VCF 9.0 / 9.1 のサポート開始まとめ
mtoyoda
0
290
Featured
See All Featured
Mind Mapping
helmedeiros
PRO
1
280
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
360
Un-Boring Meetings
codingconduct
0
340
Mobile First: as difficult as doing things right
swwweet
225
10k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
230
Marketing to machines
jonoalderson
1
5.6k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
970
Everyday Curiosity
cassininazir
0
250
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
380
Building AI with AI
inesmontani
PRO
1
1.1k
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 ご清聴ありがとうございました