Closed11

[初学者] AWS EC2 インスタンスの制限について

omakazuomakazu

コードで学ぶ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.

と作成の失敗報告がでてしまった。
ここから先に侵攻するための方法を探す

omakazuomakazu

【超小ネタ】R3.4xlargeのEC2インスタンスの上限緩和は別途行わなければいけない、という話【備忘録】
にて

業務でAWSを触っている方には馴染みのある用語かもしれません。EC2等それぞれのAWSサービスはユーザーが間違って大量に立ち上げてしまわないように上限がついています。
AWSサービスの各種上限値一覧
EC2の場合は基本「20」に制限されています。ですので20台以上EC2を建てたい場合はAWSサポートに「◯台まで上限を緩和してください」と申請を行います。これが「上限緩和申請」です。

omakazuomakazu

おそらく今回使おうとしているインスタンスは「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 インスタンスだと思う。

omakazuomakazu

最初のエラーでていたURLへ飛んで、
制限緩和を行ってみる。

  • Service limit increse
  • Limit Type > EC2インスタンス
  • Requests
    • Region > 自分の使いたいregion
    • プライマリインスタンスタイプ > All G instances
      • Limit > インスタンス上限
      • New limit value > 1 (どんぐらい必要なのかお金がかかるし、怖かったので1にしてみた)

でSubmitしてみた。

omakazuomakazu

Requestを受け付けたという自動メールから
15分ほどで上限緩和しましたメールが届いた。
AM 2:30頃にやってたのに....はやい

omakazuomakazu

再度やってみたが失敗した。

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にして再申請してみる

omakazuomakazu

自分のAWS ConsoleのEC2のページにて左メニューより制限を押すと、
instanceには 同じ「G」にも Spot InstanceInstanceがあるようだ
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).

omakazuomakazu

よくみると、ここに
g4dn.xlargeはvCPU = 4と書かれている

4で申請しなおしてみる。

omakazuomakazu

制限ページに、
vCPU制限計算ツールというのが用意されているのに気がついた。
インスタンスの条件を記入すると数を弾き出してくれるみたい。

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-on-demand-instances.html#ec2-on-demand-instances-limits

g4dn.xlargeを選んで、インスタンス数を1つにすると、

  • vCPU 数 > 4 vCPU
  • 現在の制限 > 1 vCPU
  • 新しい制限 > 5 vCPU
    と表示された。やはり4つ必要みたい
このスクラップは2021/09/23にクローズされました