Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
はじめてのCloudFormation
Search
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
820
機械学習で異常や障害予兆を検出
kojiisd
1
1.4k
Other Decks in Technology
See All in Technology
振り返りこそエンジニアの本領
negima
0
350
Driving AI Adoption Using In-House GPUs to Serve Qwen
po3rin
2
470
Sigmaユーザーのための有用リソース一挙公開 & Sigmaで使えるMCP #sigma_ucj /useful-resources-for-sigma-computing-users-and-mcps-with-sigma
shinyaa31
0
170
日経電子版を支えていく Kasane Design System/fec_fukuoka
nikkei_engineer_recruiting
0
350
Redmine 7.0で私が開発した新機能の狙いと背景
vividtone
1
130
AI時代のAPI品質を支えるガードレール / API Guardrails for API quality in the AI era
yokawasa
1
210
DEFCON_CHV_CTF_Write-up.pdf
bata_24
0
120
GoCon2026 - Open Source, Open World
sanposhiho
2
960
Podは生きているのにGoだけが落ちる:GOGCとGOMEMLIMITで追うInvisible OOM Killの謎
tkc66buzz
1
240
Webとヘルスデータ
yukukotani
1
200
2026-09-09 【sigma_ucj#1】Sigma を IaC 管理したい! / IaC for Sigma
civitaspo
0
100
作り直せるコードは迅速に 作り直せないDBは慎重に - AI時代のプロダクトエンジニアが「判断の不可逆性」で開発速度を変える話
kinosuke01
0
280
Featured
See All Featured
Evolving SEO for Evolving Search Engines
ryanjones
0
280
Documentation Writing (for coders)
carmenintech
77
5.5k
[SF Ruby Conf 2025] Rails X
palkan
2
1.4k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
From π to Pie charts
rasagy
0
360
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.2k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
470
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
370
Balancing Empowerment & Direction
lara
6
1.3k
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 ご清聴ありがとうございました