AWS CLIでSystems ManagerのSession Managerを試してみた。

2022.05.25

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

概要

Session Manager はSystems Manager の一機能です。Session ManagerでEC2 インスタンス、オンプレミスサーバー、エッジデバイス、仮想マシン (VM) を管理できます。Session Managerは、インバウンドポートを開いたり、踏み台ホストを維持したり、SSHキーを管理したりすることなく、安全なノード管理を提供します。Session Managerは、Windows、Linux、およびmacOSをサポートします。

この記事では、AWS CLIでSystems ManagerのSession Managerを試してみました。ここでは、CLIを使用してSession Managerを介してEC2インスタンスに接続しました。

 

やってみた

IAMロールの作成

  • SystemsManagerがインスタンスに対してアクションを実行できるようにするIAMロールを作成しておきます。
  • 以下のポリシーを含むjsonファイルを作成しておきます。

 

{
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Principal": {
          "Service": "ec2.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
      }
    ]
}

 

  • 次のコマンドを使用して、上記のポリシーでIAMロールを作成しておきます。
//Create IAM Role
aws iam create-role --role-name "ec2-ssm-role" --assume-role-policy-document file://assumeRole.json

//Output
{
    "Role": {
        "Path": "/",
        "RoleName": "ec2-ssm-role",
        "RoleId": "...............",
        "Arn": "arn:aws:iam::xxxxxxxxxxxx:role/ec2-ssm-role",
        "CreateDate": "2022-05-25T02:49:24+00:00",
        "AssumeRolePolicyDocument": {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Principal": {
                        "Service": "ec2.amazonaws.com"
                    },
                    "Action": "sts:AssumeRole"
                }
            ]
        }
    }
}

 

  • [AmazonSSMManagedInstanceCore]ポリシーをIAMロールにアタッチしておきます。
aws iam attach-role-policy \
     --role-name ec2-ssm-role \
     --policy-arn 'arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore'

 

  • 次のコマンドを使用してインスタンスプロファイルを作成しておきます。
//Create Instance Profile
aws iam create-instance-profile --instance-profile-name SSM-EC2-Instance-Profile

//Output
{
    "InstanceProfile": {
        "Path": "/",
        "InstanceProfileName": "SSM-EC2-Instance-Profile",
        "InstanceProfileId": "...............",
        "Arn": "arn:aws:iam::xxxxxxxxxxx:instance-profile/SSM-EC2-Instance-Profile",
        "CreateDate": "2022-05-25T03:09:04+00:00",
        "Roles": []
    }
}

 

  • 上記で作成したIAMロールをインスタンスプロファイルに追加しておきます。
// Add IAM Role to Instance profile
aws iam add-role-to-instance-profile --instance-profile-name SSM-EC2-Instance-Profile --role-name ec2-ssm-role

 

EC2の作成

  • この設定で EC2インスタンスを作成しておきます。
    • AMI : Amazon Linux 2 AMI
    • インスタンスタイプ : t2.micro
    • サブネット:パブリックサブネット
    • IAMインスタンスプロファイル : 以前に作成したインスタンスプロファイル[SSM-EC2-Instance-Profile]を指定します。
    • Security Group :
      •  Inbound :インバウンドルールなし。

 

Session Manager プラグインをインストールする

  • AWS CLIでセッションを開始および終了するには、ローカルマシンにSession Managerプラグインをインストールする必要があります。
  • バンドルされたインストーラでmacOS に Session Manager プラグインをインストールしておきます。
  • 次のコマンドを使用して、バンドルされたインストーラーをダウンロードしておきます。

 

curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac/sessionmanager-bundle.zip" -o "sessionmanager-bundle.zip"

 

  • 次のコマンドを使用してパッケージを解凍しておきます。
unzip sessionmanager-bundle.zip

 

  • パッケージをインストールしておきます。
sudo ./sessionmanager-bundle/install -i /usr/local/sessionmanagerplugin -b /usr/local/bin/session-manager-plugin

 

  • 次のコマンドでSession Manager プラグインが正常にインストールされたことを確認しておきます。
//Command to verify
session-manager-plugin

//Output
The Session Manager plugin was installed successfully. Use the AWS CLI to start a session.

 

 

CLI を使用してセッションを開始する

  • 次のコマンドを実行して、EC2インスタンスをターゲットとしてセッションを開始しておきます。
  • コマンドでEC2インスタンスIDを指定します。
  • [start-session]コマンドは、Session Managerセッションのインスタンスとの接続を確立します。

 

//Start session
aws ssm start-session \
    --target i-00000000000 \
    --region us-east-1

//Output
Starting session with SessionId: username-0000000000
sh-4.2$ 
..............

 

セッションを終了する

  • 次のコマンドを使用して、セッションを終了しておきます。
  • コマンドでセッションIDを指定しておきます。

 

//End Session
aws ssm terminate-session --session-id username-0000000000 --region us-east-1

//Output
{
    "SessionId": "username-0000000000"
}

 

セッション履歴を表示する

CLIでセッション履歴を表示する

  • 次のコマンドでセッション履歴を表示しておきます。

 

//View Session History
aws ssm describe-sessions \
    --state History \
    --region us-east-1

//Output
{
    "Sessions": [
        {
            "SessionId": "username-0000000000",
            "Target": "i-000000000000",
            "Status": "Terminated",
            "StartDate": "2022-05-25T08:47:20.697000+05:30",
            "EndDate": "2022-05-25T08:57:25.461000+05:30",
            "Owner": "owner Arn",
            "OutputUrl": {}
        },
        {
            "SessionId": "username-0000000000",
            "Target": "i-000000000000",
            "Status": "Terminated",
            "StartDate": "2022-05-25T08:46:00.756000+05:30",
            "EndDate": "2022-05-25T08:46:12.832000+05:30",
            "Owner": "owner Arn",
            "OutputUrl": {}
        }
    ]
}

 

コンソールでセッション履歴を表示する。

 

まとめ

AWS CLIでSystems ManagerのSession Managerを試してみました。コンソールでSessionManagerを試すことができます。

Reference:

Install Session Manager Plugin

Session Manager using CLI