事の発端は AWS から "[NOTIFICATION] Changes to EventBridge Scheduler IAM Roles" というタイトルのメールが届いたこと。英文でごちゃごちゃ書いてあったものの、要は
EventBridge Scheduler の execution role で指定している trust policy に
schedule 自体の arn が aws:SourceArn 条件として指定されているが、
2023年9月7日以降、trust policy の aws:SourceArn 条件としてサポートされるのは
schedule-group の arn だけです(既存のものは動くけどね)
ということらしい。
AWS のドキュメント でも、確かにそういう例が書いてある。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "scheduler.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "123456789012",
"aws:SourceArn": "arn:aws:scheduler:us-west-2:123456789012:schedule-group/your-schedule-group"
}
}
}
]
}
ならばと、やってみた。IAM role の trust policy を編集して、schedule 自体の arn を指定しているところを、その schedule が属している schedule-group の arn に変える。
…
…
…
動かなくなったじゃないか。
試しにと、AWS 管理コンソールでイチから schedule を作って、どんな IAM role が生成されるのか検証してみた。 trust policy のところだけ抜粋。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "scheduler.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "123456789012"
}
}
}
]
}
aws:SourceArn の条件、なくなってるじゃん!確かに、この設定なら動いた。
教訓:ドキュメントやメールの文章を鵜吞みにしてはならない。AWS のふるまいは検証してみないとわからない(ことがある)。
まぁそのうち、ドキュメントに書いてあるとおりの動きに修正されるのかもしれませんけどね。