LoginSignup
0
2

More than 3 years have passed since last update.

AWS Batchでスポットインスタンスを使ってハマった話

Last updated at Posted at 2020-07-10

概要

AWS Batchで使用するコンピューティング環境でスポットインスタンスを使用する事ができます。これによってコスト削減が狙えるのですが、配分戦略でBEST_FITを選ぶ際に指定するスポットフリートロールでめちゃくちゃハマりました。
具体的にはスポットフリートロールをドキュメントの通りに作成しても、エラーとなってスポットインスタンスリクエストが失敗しました。

Linux/UNIX: The provided credentials do not have permission to create the service-linked role for EC2 Spot Instances.

こんな感じです。ドキュメントの通りにロールを作ったのですが、それだと権限が足りないようです。検索して出てくる解決策もバラバラで、ようやく解決したので記録として残しておきます。

結論

  • ロール作成で選ぶユースケースは [EC2 Spot Fleet Role]です。arn:aws:iam::aws:policy/service-role/AmazonEC2SpotFleetTaggingRoleが付与されているはずです。
  • この状態でロールを作成します。名前は [AmazonEC2SpotFleetRole]とします。
  • 作成したロールに、iam:CreateServiceLinkedRoleアクションをアタッチして下さい。

これで作成した[AmazonEC2SpotFleetRole]を、AWS Batchのコンピューティング環境で、スポットフリートロールで指定します。

経緯

AWS Batch環境のアップデートに伴い、別環境で色々検証していた際、少しでもコストを下げるためにスポットインスタンスを利用してみようと思ったのがそもそもの始まりでした。
別環境ではすでに成功しているので、それをそのまま持っていけば良いと思ったのですが、AWS Batchコンピューティングリソースのスポットインスタンスにタグ付けがサポートされた際、推奨されていた管理ポリシーが変更され、別環境で使っていたポリシーが使えなくなっていました。
そこで新しい方法として紹介されていたロールを作成し、コンピューティング環境にアタッチしても、スポットインスタンスリクエスト自体はできるがエラーになってしまい、色々試しまくった結果、今回の結論にたどり着きました。
冒頭で「解決策がバラバラ」と書きましたが、このアップデートに関連しています。管理ポリシーの変更前と後の両方の解決策が出てくる状態なので、探すのにえらい苦労しました。

AWS Batchとスポットインスタンスは非常に相性が良く、ジョブキューにオンデマンドコンピューティング環境も入れておけばより安全にスポットインスタンスを利用する事ができるので、効率よくコストを削減できます。
もし今回と同じ事例で引っかかっている人の助けになれば幸いです。

参考

AWS Batch で INVALID コンピューティング環境を修正する方法は?

  • こちらの無効なスポットフリートロールを修正するを参考にロールを作成

Bamboo fails to lodge spot instance request since the provided credentials do not have permission to create the service-linked role

  • ここに足りない権限に関する情報が記載されていました。
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2