AWS Systems Manager セッションマネージャーで接続時に毎回 AWS ParallelCluster に関連するメッセージが出力されるときの原因

AWS ParallelCluster の呪縛と向き合う
2023.07.23

困っていたことは AWS Systems Manager セッションマネージャーで接続時に下記のメッセージが毎回出力されます。どういう理由か AWS ParallelCluster と関係ない通常の EC2 インスタンスに接続ときも同じメッセージが出力されます。

$ aws ssm start-session --target i-065b94c8de39b2961

Starting session with SessionId: cm-ohmura.yasutaka-01d6c1660c2e80e34
if [ -d '/opt/parallelcluster' ]; then source /opt/parallelcluster/cfnconfig; sudo su - $cfn_cluster_user; fi; /bin/bash
nfig; sudo su - $cfn_cluster_user; fi; /bin/bashource /opt/parallelcluster/cfnco

[ssm-user@ip-10-0-1-42 bin]$ sudo su - ec2-user

実害はないため長いこと放置していて重い腰をあげて原因調査したときの備忘録です。

原因と対処

原因

セッションマネージャーのLinux shell profile{{ linuxcmd }}の記述があった。

(暫定)対処

ParallelCluster 利用時の影響範囲が不明なため暫定対処です。なにかしらの悪影響を確認できた際に追記します

Linux shell profile の{{ linuxcmd }}の記述を削除。

ParallelCluster と関係ない通常の EC2 インスタンスへセッションマネージャーで接続後、該当メッセージ出力停止を確認。

$ aws ssm start-session --target i-065b94c8de39b2961

Starting session with SessionId: cm-ohmura.yasutaka-07c18897cea819e34

調査過程の記録

ParallelCluster 関連インスタンス、通常の EC2 インスタンス問わず、ParallelCluster のメッセージが共通して出力されるため、共通で設定できる項目を疑います。

セッションマネージャーには Linux か Windows のシェル毎にセッションスタート時に実行するコマンドを登録できる Shell profiles の機能があります。

確認してみると{{ linuxcmd }}の記述がありました。ちなみに設定した記憶はありません。

CloudTrail から追いかける

Shell profiles の設定を変更時のイベント名はChangeSessionManagerPreferencesであることを CloudTrail のログから実際に設定変更したログをもとに確認しました。

年単位で放置していた事象だったため、CloudTrail のログを Athena から検索し、1 年前のログを確認しました。

Athena で検索してから気がついたのですが、Shell profiles の内容を編集した記録までは CloudTrail のログからわかりませんでした。何かしらの変更を加えた日時だけは確認できました。そのため、自分でなにか理由があって記述したのか、ParallelCluster コマンドから書き込まれたものなのか根本原因はわかりませんでした。

ChangeSessionManagerPreferences ログ例

{
    "eventVersion": "1.08",
    "userIdentity": {
        "accountId": "123456789012",
        "invokedBy": "ssm.amazonaws.com"
    },
    "eventTime": "2023-07-19T01:13:52Z",
    "eventSource": "ssm.amazonaws.com",
    "eventName": "ChangeSessionManagerPreferences",
    "awsRegion": "ap-northeast-1",
    "sourceIPAddress": "ssm.amazonaws.com",
    "userAgent": "ssm.amazonaws.com",
    "requestParameters": null,
    "responseElements": null,
    "eventID": "f1448298-8e0b-4382-ba71-20d924129e5a",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "serviceEventDetails": {
        "DocumentName": "SSM-SessionManagerRunShell",
        "IsKmsEncryptionEnabled": true,
        "IsS3EncryptionEnabled": true,
        "IsCloudWatchEncryptionEnabled": true,
        "IdleSessionTimeout": "60",
        "MaxSessionDuration": "1440"
    },
    "eventCategory": "Management"
}

{{ linuxcmd }} とはなんだったのか?

Linux shell profile に書き込まれていた{{ linuxcmd }}が何を意味するのかは出力されたメッセージを検索することで、ParallelCluster のドキュメントがヒットしました。

if [ -d '/opt/parallelcluster' ]; then source /opt/parallelcluster/cfnconfig; sudo su - $cfn_cluster_user; fi; /bin/bash
nfig; sudo su - $cfn_cluster_user; fi; /bin/bashource /opt/parallelcluster/cfnco

SSM-SessionManagerRunShellを以前のバージョンに戻すといった内容のドキュメントです。

Reverting to a previous AWS Systems Manager document version - AWS ParallelCluster

以前にバージョン戻すもなにもSSM-SessionManagerRunShellがなにかがわかりません。Systems Manger のドキュメントを確認してみると自己所有のドキュメント内に存在していました。こちらも作成した記憶はありません。

コンテンツを確認すると今回問題としているメッセージと同じ文章が記述されています。

調べていると ParallelCluster UI のリリースノートに、ParallelCluster UI インストール時にSSM-SessionManagerRunShellのドキュメントを上書きしなくなったというアップデートがありました。

The SSM-SessionManagerRunShell document is not overwritten anymore when installing PCUI

Release 2023.04.0 · aws/aws-parallelcluster-ui

つまり、ParallelCluster UI インストール時にSSM-SessionManagerRunShellが作成された様子です。ドキュメント作成時のイベント名はCreateDocumentだったため CloudTrail のログを検索しました。

比較的最近、自分自身のユーザー(AssumeRole したロール)の権限でSSM-SessionManagerRunShell作成していました。直接作成した記憶はないため、なにかの操作に関連づいてSSM-SessionManagerRunShellの上書きが走っていたと推測しています。ParallelCluster UI のアップデートで上書きが走らなくしたというのはおそらくこの部分が改善されたことを指しているものと思われます。

{
	"documentDescription": {
		"hash": "4fda482f71b283dfaed71e08aa57ca332a7db38547ed8ff6f860dea505369ac9",
		"hashType": "Sha256",
		"name": "SSM-SessionManagerRunShell",
		"owner": "123456789012",
		"createdDate": "Jul 8, 2023 2:46:13 AM",
		"status": "Creating",
		"documentVersion": "1",
		"parameters": [
			{
				"name": "linuxcmd",
				"type": "String",
				"description": "The command to run on connection.12:16:42",
				"defaultValue": "if [ -d '/opt/parallelcluster' ]; then source /opt/parallelcluster/cfnconfig; sudo su - $cfn_cluster_user; fi; /bin/bash"
			}
		],
		"platformTypes": [
			"Windows",
			"Linux",
			"MacOS"
		],
		"documentType": "Session",
		"schemaVersion": "1.0",
		"latestVersion": "1",
		"defaultVersion": "1",
		"documentFormat": "JSON",
		"tags": [],
		"documentId": "d7d1bdc5-6021-4713-87e3-943c8b7cc01f"
	}
}

{{ linuxcmd }} を削除影響は?

結局のところ{{ linuxcmd }}を削除して実害がないのでしょうか?

今のところ確認できていないため、確認できたタイミングでこちらの記事を更新します。

おわりに

ParallelCluster と関係ないインスタンスへセッションマネージャーで接続時にメッセージが出力がされ迷惑だったため原因調査しました。 ParallelCluster の検証しすぎて ParallelCluster の呪縛にかかったと思っていたのですが、幸いデジタルな世界でしたので原因を追いかけることができました。長らくこれといった情報を見つけられなく困っていたので同じ原因調査している方に向けに調査状況を公開しました。

今回の暫定対処の影響有無は確認でき次第追記します。

参考