セットアップ済みの Temporary elevated access management (TEAM) for AWS IAM Identity Center をバージョンアップする
いわさです。
最近、Temporary elevated access management for AWS IAM Identity Center(TEAM for IdC) を使っています。
以下のリリースノートを見てみるとマイナーバージョンやパッチバージョンの更新で定期的に不具合の修正がリリースされることがあります。
パッチバージョンを適用する機会があったので、v1.4.0 から v1.4.1 に環境をバージョンアップしました。
今回はバージョンアップの仕組みを理解し、既存リソースに影響があるのかどうかを検証しながら、手順を確認してみたので紹介します。
バージョンアップ手順を確認してみた
TEAM for IdC のバージョンアップですが、アップデートスクリプトが用意されてそれを実行するだけで簡単に更新することが出来るようになっています。便利。
ドキュメント上のバージョンアップ手順は以下のとおりです。
やることはスクリプトを実行するだけなのですが、どういった仕組みで更新されるのかちゃんと把握しておきたいです。ポリシーや IdC のカスタムアプリケーションの再設定が必要になるとかどういった影響が出るのかわからないからです。
ということでまずスクリプトを眺めてみます。
なるほどね。アンインストールなどの時と同じように、前提としてparameters.shにパラメータを設定済みである必要があります。、
また、インストール時のdeploy.shスクリプトと似ている内容になっていて、CodeCommit に Amplify 用のコードをプッシュし、CloudFormation スタックをTEAM-IDC-APPを更新していますね。
CodeCommit に最新バージョンのアプリケーションコードがプッシュされることで Amplify のデプロイが実行されるので、Cognito の再統合とかユーザーやポリシーの再作成などは不要そうですね。
コードは GitHub リポジトリ上から最新のmainブランチを CodeCommit リポジトリに反映しています。
もしアップグレード先を最新ではなくて特定バージョンにしたい場合はスクリプトの修正が必要ですね。
実際にバージョンアップしてみた(v1.4.0 → v1.4.1)
ということで実際にバージョンアップしてみます。
今回は事前に本日時点の最新バージョンよりひとつ前の v1.4.0 を用意しています。

もしこれから旧バージョンを用意したい、という方は次の手順で試してみてください。
スクリプトを実行します。
% cd deployment/
% git status
On branch main
nothing to commit, working tree clean
% ./update.sh
+ . ./parameters.sh
++ IDC_LOGIN_URL=https://d-906622902c.awsapps.com/start
++ REGION=us-east-1
++ TEAM_ACCOUNT=123456789012
++ ORG_MASTER_PROFILE=hogeadmin
++ TEAM_ACCOUNT_PROFILE=team
++ TEAM_ADMIN_GROUP=teamadmin
++ TEAM_AUDITOR_GROUP=teamauditor
++ TAGS='project=iam-identity-center-team environment=prod'
++ CLOUDTRAIL_AUDIT_LOGS=arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/3e2a8224-76f5-47ce-99c6-ec63d04cca70
+ '[' -z 123456789012 ']'
+ export AWS_PROFILE=team
+ AWS_PROFILE=team
+ '[' -z '' ']'
+ git remote remove origin
+ git remote add origin codecommit::us-east-1://team-idc-app
+ git remote add team https://github.com/aws-samples/iam-identity-center-team.git
+ git pull team main
From https://github.com/aws-samples/iam-identity-center-team
* branch main -> FETCH_HEAD
* [new branch] main -> team/main
Updating 542bf83..40d6826
Fast-forward
README.md | 5 +-
.../stepfunctions-cloudformation-template.json | 12 +-
.../team06dbb7fcPreTokenGeneration/Pipfile | 2 +-
...PreTokenGeneration-cloudformation-template.json | 2 +-
.../function/teamNotifications/Pipfile.lock | 9 +-
.../function/teamNotifications/src/index.py | 106 ++--
amplify/backend/function/teamRouter/Pipfile.lock | 9 +-
.../lib/python/Pipfile.lock | 7 +-
docs/Gemfile.lock | 2 +-
package-lock.json | 622 ++++++++-------------
src/components/Navigation/Header.js | 4 +-
11 files changed, 324 insertions(+), 456 deletions(-)
+ [[ ! -z project=iam-identity-center-team environment=prod ]]
+ [[ ! -z '' ]]
+ aws cloudformation deploy --region us-east-1 --template-file template.yml --stack-name TEAM-IDC-APP --parameter-overrides Login=https://d-906622902c.awsapps.com/start CloudTrailAuditLogs=arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/3e2a8224-76f5-47ce-99c6-ec63d04cca70 teamAdminGroup=teamadmin teamAuditGroup=teamauditor 'tags=project=iam-identity-center-team environment=prod' teamAccount=123456789012 --tags project=iam-identity-center-team environment=prod --no-fail-on-empty-changeset --capabilities CAPABILITY_NAMED_IAM
Waiting for changeset to be created..
No changes to deploy. Stack TEAM-IDC-APP is up to date
+ git push origin main
Enumerating objects: 190, done.
Counting objects: 100% (172/172), done.
Delta compression using up to 10 threads
Compressing objects: 100% (83/83), done.
Writing objects: 100% (138/138), 60.32 KiB | 6.70 MiB/s, done.
Total 138 (delta 86), reused 105 (delta 54), pack-reused 0
remote: Validating objects: 100%
To codecommit::us-east-1://team-idc-app
542bf83..40d6826 main -> main
+ git remote remove team
Amplify を眺めてみると、デプロイが開始されました。ちょっと時間がかかりますので待ちましょう。

その間に CodeCommit リポジトリを確認し、次のように v1.4.1 のソースコードが使われていることを確認しました。

数分待つと Amplify のデプロイが完了しました。
また、CloudFormation スタックも更新されています。
DynamoDB を確認してみるとテーブルの再作成はされていないのでデータに関しても保持されていそうですね。良かった。

また、IAM Identity Center で手動で SAML 2.0 のカスタムアプリケーションを作成済みでしたが、こちらはこのまま次のように何も触らずにログイン出来るか試してみましょう。

v1.4.0 の時に作成したユーザーでログインすることが出来ました。
Cognito ユーザープールに関しても影響なしで使い続けることが出来ていますね。

さいごに
本日は、セットアップ済みの Temporary elevated access management (TEAM) for AWS IAM Identity Center をバージョンアップしてみました。
結論として TEAM for IdC のバージョンスクリプトを使うことで簡単に最新バージョンへのバージョンアップが可能で、かつ既存のデータやユーザーには影響なくバージョンアップ後も使い続けることが出来ることが確認出来ました。
バージョンアップを控えていて、影響点などを気にしていた方の参考になれば幸いです。






