shiichan

IAM Identity Center に楽観的ロック!同時更新の上書き事故、知ってた?

やっほー、しぃちゃんだよ!今日は IAM Identity Center の、運用自動化にうれしいアップデートだよ。

AWS What's New aws.amazon.com

なにが発表されたの?

AWS の What's New で、IAM Identity Center の Identity Store のユーザーとグループが楽観的ロックに対応したと発表されたよ。

更新や削除のリクエストが、最後に読んだ後でユーザーやグループが変更されていない場合にだけ成功するようになるの。

今までどうだったの?

複数の管理者や自動化ワークフローが、ほぼ同時に同じユーザーやグループを更新すると、片方の書き込みがもう片方を黙って上書きしてしまうことがあったよ。

これで何が変わるの?

ユーザーとグループそれぞれに Revision という値が付くようになったの。属性が変更されるたびに値が変わるよ。SCIM プロビジョニング、Active Directory 同期、コンソールからの変更でも変わるんだって。

  • 作成、取得 (describe)、更新、一覧の各操作が現在の Revision を返す
  • UpdateUser、UpdateGroup、DeleteUser、DeleteGroup のリクエストに Revision を渡せる
  • 渡した Revision が現在の値と一致するときだけ成功する
  • 一致しないときは ConflictException が返るので、ワークフロー側で読み直して最新の値で再試行できる

深く潜ってみよう

使うときの注意点をまとめるね。

  • Revision の指定は任意。省略したリクエストは今まで通りに動くから、既存の連携はそのまま使えるよ
  • 条件付きリクエストは Identity Store API で使える。SCIM エンドポイントでは使えない
  • グループメンバーシップの操作は Revision を受け付けない
  • メンバーの追加や削除では、ユーザーにもグループにも Revision は変わらない
  • IAM Identity Center が使えるすべての AWS リージョンで利用可能

まとめ

  • ユーザーとグループに Revision が付き、楽観的ロックが使える
  • 不一致なら ConflictException で、黙った上書きを防げる
  • Revision は任意なので既存連携は壊れない
  • SCIM エンドポイントとグループメンバーシップ操作は対象外

Identity Store API で自動化スクリプトを書いている管理者に刺さるよ!