■ はじめに
連日、EMRのトラブル対応。 今回は、 Auto Scaling が FAILED する問題について、 メモしておく。
目次
【0】今回、勉強になったこと 【1】トラブル概要 【2】エラー内容 1)[Hardware]タブの「Cluster Scaling Policy」欄 2)イベントログ([Events]タブ) 3)AWSコマンド「aws emr describe-cluster」出力結果 【3】確認した事 【4】原因 【5】解決案
【0】今回、勉強になったこと
* エラーメッセージの情報が少なくても、AWS CLIなどにより 情報を得られる場合がある => 今回の場合、AWSコマンド「aws emr describe-cluster」により 原因を絞り込むことができた
AWSコマンド「aws emr describe-cluster」
* クラスターステータスの表示
https://docs.aws.amazon.com/cli/latest/reference/emr/describe-cluster.html
【1】トラブル概要
EMR の [Hardware]タブの「Cluster Scaling Policy」欄 を見たら 「Auto Scaling」項目が「Status FAILED」になっていた。 (本来は「Status ATTACHED」になるのが期待値)
補足:AWSコマンド「aws emr describe-cluster」
* エラーになっているのは分かるが、とにかく、情報がないので そんなときの情報を集める方法として、 AWSコマンド「aws emr describe-cluster」を記載しておく
https://docs.aws.amazon.com/cli/latest/reference/emr/describe-cluster.html
$ aws emr describe-cluster --cluster-id j-XXXXXXX --region us-west-1 # => 出力結果例は、 # 後述『3)AWSコマンド「aws emr describe-cluster」出力結果』を参照
【2】エラー内容
「1)[Hardware]タブの「Cluster Scaling Policy」欄」 「2)イベントログ([Events]タブ)」 は、情報としては、ほとんど役に立たない。 「3)AWSコマンド「aws emr describe-cluster」出力結果」 から、どうにか解決案を模索していく。
1)[Hardware]タブの「Cluster Scaling Policy」欄
Auto Scaling Status FAILED
2)イベントログ([Events]タブ)
Severity
WARING
Event description
The Auto Scaling policy for instance group ig-xxxxx in Amazon EMR cluster j-xxxx (<your Cluster name>) could not attach and failed at 2022-05-14 XX:XX:XX UTC.
3)AWSコマンド「aws emr describe-cluster」出力結果
... "AutoScalingPolicy": { "Status": { "State": "FAILED", "StateChangeReason": { "Code": "PROVISON FAILURE", "Message": "Failed to provision the AutoScaling policy; Unable to assume IAM role; arn:aws:iam:xxx:role:<your IAM policy for auto scaling>" } } }, ...
メッセージ部分抜粋
Failed to provision the AutoScaling policy; [訳] AutoScalingポリシーのプロビジョンに失敗した Unable to assume IAM role; arn:aws:iam:xxx:role:<your IAM policy for auto scaling> [訳] IAMロールを受け入れることができないため => これで、IAMロールの問題ということに絞ることができた
【3】確認した事
「Failed to provision the AutoScaling policy; Unable to assume IAM role」で ググった際にでてきた
の解決方法「visibleToAllUsers=True」は、確認済 (しっかり「True」になっていたので、別問題) ~~~~~~~ For me, this was because cluster wasn't marked "visibleToAllUsers"; I had to issue a aws emr modify-instance-attributes --cluster-id BLAH --visible-to-all-users change first. ~~~~~~~ そもそも、エラーメッセージが、 「EMRインスタンスグループが存在しない」だから 完全に別問題。(勉強にはなったが) ~~~~~~~ Failed to provision the AutoScaling policy: EMR instance group doesn't exist: Failed to find Cluster j-3SGZHX7D2DM98. ~~~~~~~
【4】原因
* EMR に紐づけている Auto Scaling 用のロールの「Trust relationships」 で、「application-autoscaling.amazonaws.com」が付与されていなかったため => 以下、「修正前」を参照。
修正前
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Princial": { "Service": [ "elasticmapreduce.amazon.com" ★ここの部分のサービスが不足しているため★ ] }, "Action": "sts:AssumeRole" } ] }
【5】解決案
* 「application-autoscaling.amazonaws.com」を付与 => 以下、「修正後」を参照。 => 付与したロールで再実行したら 「Status ATTACHED」になっていることを確認
修正後
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Princial": { "Service": [ "application-autoscaling.amazonaws.com", <= ★ここを追加★ "elasticmapreduce.amazon.com" ] }, "Action": "sts:AssumeRole" } ] }
関連記事
Amazon EMR ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/02/20/230519
Amazon EMR ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/05/27/175610
Amazon EMR ~ Auto scaling ~
https://dk521123.hatenablog.com/entry/2022/05/16/115229
Amazon EMR に関するトラブル
https://dk521123.hatenablog.com/entry/2020/08/05/144724