[初学者] AWS EC2 インスタンスの制限について
「コードで学ぶAWS入門」でAWSを初めてさわっている際にSection6にてGPUを搭載した g4dn.xlarge インスタンスタイプを使用することとなった。
指示通りに進んでいくと、6.3. スタックのデプロイにて、
$ cdk deploy -c key_name="HirakeGoma"
を実行後、
2:09:26 | CREATE_FAILED | AWS::EC2::Instance | Ec2For
DlInstanceF0415522
You have requested more vCPU capacity than your current vCPU limit of 0 allows
for the instance bucket that the specified instance type belongs to. Please vis
it http://aws.amazon.com/contact-us/ec2-request to request an adjustment to thi
s limit.
と作成の失敗報告がでてしまった。
ここから先に侵攻するための方法を探す
AWSによるEC2インスタンスの作成
の2.9 インスタンスの作成
にて同じエラー表示の解決方法が載っている。
【超小ネタ】R3.4xlargeのEC2インスタンスの上限緩和は別途行わなければいけない、という話【備忘録】
にて
業務でAWSを触っている方には馴染みのある用語かもしれません。EC2等それぞれのAWSサービスはユーザーが間違って大量に立ち上げてしまわないように上限がついています。
AWSサービスの各種上限値一覧
EC2の場合は基本「20」に制限されています。ですので20台以上EC2を建てたい場合はAWSサポートに「◯台まで上限を緩和してください」と申請を行います。これが「上限緩和申請」です。
おそらく今回使おうとしているインスタンスは「G」のインスタンスのためこれの使用制限を申請しないといけないみたい。
host = ec2.Instance(
self, "Ec2ForDl-Instance",
instance_type=ec2.InstanceType("g4dn.xlarge"),
machine_image=ec2.MachineImage.generic_linux({
"us-east-1": "ami-060f07284bb6f9faf",
"ap-northeast-1": "ami-09c0c16fc46a29ed9"
}),
vpc=vpc,
vpc_subnets=ec2.SubnetSelection(subnet_type=ec2.SubnetType.PUBLIC),
security_group=sg,
key_name=key_name
)
g4dn.xlargeなのでawsのAmazon EC2 G4 インスタンスだと思う。
最初のエラーでていたURLへ飛んで、
制限緩和を行ってみる。
- Service limit increse
- Limit Type > EC2インスタンス
- Requests
- Region > 自分の使いたいregion
- プライマリインスタンスタイプ > All G instances
- Limit > インスタンス上限
- New limit value > 1 (どんぐらい必要なのかお金がかかるし、怖かったので1にしてみた)
でSubmitしてみた。
Requestを受け付けたという自動メールから
15分ほどで上限緩和しましたメールが届いた。
AM 2:30頃にやってたのに....はやい
再度やってみたが失敗した。
You have requested more vCPU capacity than your current vCPU limit of 1 allows
for the instance bucket that the specified instance type belongs to. Please vis
it http://aws.amazon.com/contact-us/ec2-request to request an adjustment to thi
s limit.
ただ、 0 が 1 allowsに変わっているところをみるとやっていることは間違っていないみたいな気がする。
じゃあ具体的になんぼにすればいいんんだ
わからないからとりあえず3にして再申請してみる
自分のAWS ConsoleのEC2のページにて左メニューより制限を押すと、
instanceには 同じ「G」にも Spot InstanceとInstanceがあるようだ
All G Spot Instance Requestsは0 vCPU
All G instances のオンデマンドを実行中 1 vCPU
と現在なっている。
4.3.3. EC2 (Elastic Compute Cloud)にてSpot instanceについて書かれていた。
上記で t2.micro の $0.0116 / hour という金額は, On-demand インスタンスというタイプを選択した場合の価格である. EC2 ではほかに, Spot instanceとよばれるインスタンスも存在する. Spot instance は,AWSのデータセンターの負荷が増えた場合,ユーザーのプログラムが実行中であってもAWSの判断により強制シャットダウンされる,という不便さを抱えているのだが,その分大幅に安い料金設定になっている. AWS で一時的に生じた余剰な空きCPUをユーザーに割安で貸し出す,という発想である. 科学計算で,コストを削減する目的で,この Spot Instance を活用する事例も報告されている (Wu+, 2019).
制限ページに、
vCPU制限計算ツールというのが用意されているのに気がついた。
インスタンスの条件を記入すると数を弾き出してくれるみたい。
g4dn.xlargeを選んで、インスタンス数を1つにすると、
- vCPU 数 > 4 vCPU
- 現在の制限 > 1 vCPU
- 新しい制限 > 5 vCPU
と表示された。やはり4つ必要みたい
ちゃんと動いた