Session Manager 設定の作成 (コマンドライン) - AWS Systems Manager

Session Manager 設定の作成 (コマンドライン)

以下の手順では、好みのコマンドラインツールを使用して、選択した AWS リージョン で AWS アカウント の AWS Systems Manager Session Manager 設定を作成する方法を説明します。Session Manager の設定を用いて、Amazon Simple Storage Service (Amazon S3) バケットまたは Amazon CloudWatch Logs ロググループにセッションデータを記録するためのオプションを指定します。Session Manager 設定を使用して、セッションデータを暗号化することもできます。

コマンドラインツールを使用して既存の Session Manager 設定を更新する方法については、「Session Manager 設定の更新 (コマンドライン)」を参照してください。

AWS CloudFormation を使用してセッション設定を作成する方法の例については、AWS CloudFormationユーザーガイドで「Session Manager の設定向けに Systems Manager ドキュメントを作成する」を参照してください。

注記

この手順を使用して、アカウントレベルの設定を上書きする Session Manager 設定のカスタムセッションドキュメントを作成できます。カスタムセッションドキュメントを作成するときは、name パラメータに SSM-SessionManagerRunShell 以外の値を指定し、必要に応じて入力を変更します。カスタムセッションドキュメントを使用するには、--document-name (AWS Command Line Interface) からセッションを開始するときに、AWS CLI パラメータにカスタムセッションドキュメントの名前を指定する必要があります。コンソールからセッションを開始する場合、カスタムセッションドキュメントを指定することはできません。

Session Manager 設定を作成するには (コマンドライン)

  1. SessionManagerRunShell.json などの名前でローカルマシンに JSON ファイルを作成し、次の内容を貼り付けます。

    { "schemaVersion": "1.0", "description": "Document to hold regional settings for Session Manager", "sessionType": "Standard_Stream", "inputs": { "s3BucketName": "", "s3KeyPrefix": "", "s3EncryptionEnabled": true, "cloudWatchLogGroupName": "", "cloudWatchEncryptionEnabled": true, "cloudWatchStreamingEnabled": false, "kmsKeyId": "", "runAsEnabled": false, "runAsDefaultUser": "", "idleSessionTimeout": "", "maxSessionDuration": "", "shellProfile": { "windows": "date", "linux": "pwd;ls" } } }

    次の例に示すように、値をハードコーディングするのではなく、パラメータを使用してセッション設定に値を渡すこともできます。

    { "schemaVersion":"1.0", "description":"Session Document Parameter Example JSON Template", "sessionType":"Standard_Stream", "parameters":{ "s3BucketName":{ "type":"String", "default":"" }, "s3KeyPrefix":{ "type":"String", "default":"" }, "s3EncryptionEnabled":{ "type":"Boolean", "default":"false" }, "cloudWatchLogGroupName":{ "type":"String", "default":"" }, "cloudWatchEncryptionEnabled":{ "type":"Boolean", "default":"false" } }, "inputs":{ "s3BucketName":"{{s3BucketName}}", "s3KeyPrefix":"{{s3KeyPrefix}}", "s3EncryptionEnabled":"{{s3EncryptionEnabled}}", "cloudWatchLogGroupName":"{{cloudWatchLogGroupName}}", "cloudWatchEncryptionEnabled":"{{cloudWatchEncryptionEnabled}}", "kmsKeyId":"" } }
  2. セッションデータを送信する場所を指定します。(オプションでプレフィックスが付いた) S3 バケット名または CloudWatch Logs ロググループ名を指定することができます。ローカルクライアントとマネージドノード間でデータをさらに暗号化する場合、暗号化に使用する KMS キーを指定します。次に例を示します。

    { "schemaVersion": "1.0", "description": "Document to hold regional settings for Session Manager", "sessionType": "Standard_Stream", "inputs": { "s3BucketName": "DOC-EXAMPLE-BUCKET", "s3KeyPrefix": "MyBucketPrefix", "s3EncryptionEnabled": true, "cloudWatchLogGroupName": "MyLogGroupName", "cloudWatchEncryptionEnabled": true, "cloudWatchStreamingEnabled": false, "kmsKeyId": "MyKMSKeyID", "runAsEnabled": true, "runAsDefaultUser": "MyDefaultRunAsUser", "idleSessionTimeout": "20", "maxSessionDuration": "60", "shellProfile": { "windows": "MyCommands", "linux": "MyCommands" } } }
    注記

    セッションログデータを暗号化しない場合は、s3EncryptionEnabled の「true」を「false」に変更します。

    Amazon S3 バケットまたは CloudWatch Logs ロググループにログを送信しない場合、アクティブなセッションデータを暗号化しない場合、またはアカウントのセッションの Run As サポートを有効にしない場合は、それらのオプション用に次の行を削除できます。「inputs」セクションの最後の行がカンマで終わっていないことを確認してください。

    セッションデータを暗号化するために KMS キー ID を追加する場合、セッションを開始するユーザーとそのユーザーが接続するマネージドノードの両方が、キーを使用する許可が必要になります。IAM ポリシーを通して Session Manager で KMS キーを使用するアクセス許可を付与します。詳細については、以下のトピックを参照してください。

  3. ファイルを保存します。

  4. JSON ファイルを作成したディレクトリで、次のコマンドを実行します。

    Linux & macOS
    aws ssm create-document \ --name SSM-SessionManagerRunShell \ --content "file://SessionManagerRunShell.json" \ --document-type "Session" \ --document-format JSON
    Windows
    aws ssm create-document ^ --name SSM-SessionManagerRunShell ^ --content "file://SessionManagerRunShell.json" ^ --document-type "Session" ^ --document-format JSON
    PowerShell
    New-SSMDocument ` -Name "SSM-SessionManagerRunShell" ` -Content (Get-Content -Raw SessionManagerRunShell.json) ` -DocumentType "Session" ` -DocumentFormat JSON

    成功すると、コマンドは以下のような出力を返します。

    {
        "DocumentDescription": {
            "Status": "Creating",
            "Hash": "ce4fd0a2ab9b0fae759004ba603174c3ec2231f21a81db8690a33eb66EXAMPLE",
            "Name": "SSM-SessionManagerRunShell",
            "Tags": [],
            "DocumentType": "Session",
            "PlatformTypes": [
                "Windows",
                "Linux"
            ],
            "DocumentVersion": "1",
            "HashType": "Sha256",
            "CreatedDate": 1547750660.918,
            "Owner": "111122223333",
            "SchemaVersion": "1.0",
            "DefaultVersion": "1",
            "DocumentFormat": "JSON",
            "LatestVersion": "1"
        }
    }