AWS Systems Manager ハイブリッドアクティベーションを利用して、他 AWS アカウントの EC2 インスタンスをマネージドノード表示させてみた

AWS Systems Manager ハイブリッドアクティベーションを利用して、他 AWS アカウントの EC2 インスタンスをマネージドノード表示させてみた

Clock Icon2024.09.03

はじめに

テクニカルサポートの 片方 です。
AWS Systems Manager ハイブリッドアクティベーション を利用して、他アカウントにある EC2 インスタンスを管理してみました。
当該機能を利用すると、異なる AWS アカウントの EC2 インスタンスやオンプレ仮想マシンを管理対象とすることが可能です。

ハイブリッドおよびマルチクラウド環境において、AWS Systems Manager で使用するように非 EC2 マシンを設定するには、ハイブリッドアクティベーションを作成します。マネージドノードとしてサポートされている非 EC2 マシンタイプには以下が含まれます。
・ 自社構築サーバー (オンプレミスサーバー)
・ AWS IoT Greengrass コアデバイス
・ AWS IoT および非 AWS エッジデバイス
・ 他のクラウド環境内の VM を含む仮想マシン (VM)

やってみた

管理アカウント

管理アカウント側では以下の設定を行います。

  • アクティベーションの作成
  • アドバンストインスタンス階層

アクティベーションの作成

https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/hybrid-activation-managed-nodes.html

マネジメントコンソール画面より、SSM のハイブリッドアクティベーション画面へ。
「アクティベーションを作成する」をクリック。

無題

各種項目を記載します。注意点としては 2つ

  • 実行ロールで、S3 に実行ログを保存したい場合は以下のポリシーを追加してください。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::対象バケット名",
                "arn:aws:s3:::対象バケット名/*"
            ]
        }
    ]
}
  • アクティベーションの有効期限は、yyyy-mm-ddThh:mm+09:00 のフォーマットで記述します。

無題1

アドバンストインスタンス階層に設定するため、以下の「設定変更」をクリックします。

無題0

チェックボックスにチェックを入れ、設定変更します。

無題00

あとは、アクティベーションの作成を進め、成功すると以下のようになります。

無題2

管理したい他アカウントにある EC2 インスタンスに使用するため、"Activation Code " と "Activation ID" を必ずメモしてください。
これで、管理アカウント側の設定は終了です。

管理する他アカウント

今回は、Amazon Linux 2 を対象にして、EC2 インスタンスをマネージドノードにします。
本ブログ内では、マネージドノード方法については割愛させていただきます。

お好みの方法で SSH 接続します。(私はセッションマネージャーを利用しました)
SSM エージェントを停止させます。

$ sudo systemctl stop amazon-ssm-agent

メモしておいた、"Activation Code " と "Activation ID" を利用して、以下のコマンドを実行します。

$ sudo amazon-ssm-agent -register -code "xxxxxxxxxxxxxxxxx" -id "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -region "ap-northeast-1"

コマンド実行後、以下の出力がされます。

sh-4.2$ sudo amazon-ssm-agent -register -code "xxxxxxxxxxxxxxxxx" -id "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -region "ap-northeast-1"
Error occurred fetching the seelog config file path:  open /etc/amazon/ssm/seelog.xml: no such file or directory
Initializing new seelog logger
New Seelog Logger Creation Complete
2024-09-03 04:10:12 WARN Could not read InstanceFingerprint file: InstanceFingerprint does not exist
2024-09-03 04:10:12 INFO No initial fingerprint detected, generating fingerprint file...
2024-09-03 04:10:12 INFO Successfully registered the instance with AWS SSM using Managed instance-id: mi-04942bf0db989cb88
sh-4.2$

無題

SSM エージェントを起動します。

$ sudo systemctl start amazon-ssm-agent

これで終了です。
なお、Managed instance-id: mi-04942bf0db989cb88 として表示される想定です。

確認してみた

管理アカウント側に移動します。
フリートマネージャー画面よりマネージドノードとして、mi-04942bf0db989cb88 が表示されているか確認します。

無題000

成功です!

補足

インタネットゲートウェイ経由、Nat ゲートウェイ経由、VPC エンドポイント経由でのマネージドインスタンスそれぞれについても試したところ、管理アカウント側でマネージドノードとして問題なく mi-xxxxxxxxxx の形で表示されました。

まとめ

本ブログが誰かの参考になれば幸いです。

参考資料

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.