概要
AWS CDK v2.229.1では、EventBridge SchedulerのScheduleGroupクラスにおける重要なバグ修正が行われました。grant*()メソッドで生成されるIAMポリシーのARN形式が誤っていた問題が修正され、正しい権限設定が可能になりました。
バグ修正
EventBridge Scheduler: ScheduleGroup.grant*メソッドのARN生成の修正
ScheduleGroupクラスのgrant*()メソッド(例: grantCreateSchedule()、grantDeleteSchedule()など)で生成されるIAMポリシーのARN形式が誤っていた問題が修正されました。
問題の詳細:
これまでのバージョンでは、スケジュールグループに対する権限を付与する際に、以下のような誤ったARN形式が生成されていました:
arn:aws:scheduler:<region>:xxx:schedule-group/my-group-name/*
修正後:
正しいARN形式は以下の通りです:
arn:aws:scheduler:<region>:xxx:schedule/my-group-name/*
影響範囲:
この問題により、ScheduleGroupのgrant*()メソッドを使用してスケジュールの作成や削除などの権限を付与していた場合、実際には権限が正しく設定されておらず、実行時にアクセス拒否エラーが発生していました。
修正内容:
自動生成されていたScheduleGroupGrantsクラスを手書きの実装に置き換え、以下のようなロジックでARNを生成するように修正されました:
private arnForScheduleInGroup(scheduleName: string): string {
return Arn.format({
region: this.resource.env.region,
account: this.resource.env.account,
partition: Aws.PARTITION,
service: 'scheduler',
resource: 'schedule', // 'schedule-group'ではなく'schedule'
resourceName: this.resource.scheduleGroupRef.scheduleGroupName + '/' + scheduleName,
});
}
移行ガイド:
この修正により、既存のCDKアプリケーションでScheduleGroup.grant*()メソッドを使用している場合、次回のデプロイ時に自動的に正しいIAMポリシーが適用されます。手動での修正は不要ですが、以下の点を確認してください:
- 現在のスタックで
ScheduleGroup.grant*()メソッドを使用している場合、次回のデプロイで修正が適用されます - 一時的な回避策として手動でIAMポリシーを設定していた場合は、その設定を削除してCDKのメソッドに戻すことができます
import * as scheduler from 'aws-cdk-lib/aws-scheduler';
import * as iam from 'aws-cdk-lib/aws-iam';
const scheduleGroup = new scheduler.ScheduleGroup(this, 'MyScheduleGroup', {
scheduleGroupName: 'my-group-name',
});
const role = new iam.Role(this, 'MyRole', {
assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'),
});
// このメソッドで正しいARNが生成されるようになりました
scheduleGroup.grantCreateSchedule(role);
// 生成されるARN: arn:aws:scheduler:<region>:xxx:schedule/my-group-name/*
Alpha モジュール
v2.229.1-alpha.0では、Alphaモジュールに関する変更はありません。
まとめ
AWS CDK v2.229.1は、EventBridge Schedulerのスケジュールグループにおける重要な権限付与の問題を修正したパッチリリースです。ScheduleGroup.grant*()メソッドを使用しているプロジェクトでは、このバージョンにアップデートすることで、正しい権限設定が適用されるようになります。
この修正により、スケジュールグループに対する権限管理がより確実に機能するようになり、実行時のアクセス拒否エラーを防ぐことができます。EventBridge Schedulerを使用しているプロジェクトでは、早期のアップデートを推奨します。