创建 Session Manager 首选项文档(命令行) - AWS Systems Manager

创建 Session Manager 首选项文档(命令行)

使用以下步骤创建 SSM 文档,这些文档定义了您的 AWS Systems ManagerSession Manager 会话首选项。您可以使用该文档来配置会话选项,包括数据加密、会话持续时间和日志记录。例如,您可以指定是否要在 Amazon Simple Storage Service(Amazon S3)存储桶或 Amazon CloudWatch Logs 日志组中存储会话日志数据。您可以创建定义 AWS 账户 和 AWS 区域 所有会话的常规首选项的文档,也可以创建定义各个会话首选项的文档。

注意

您也可以使用会话管理器控制台配置常规会话首选项。

用于设置会话管理器首选项的文档必须有 Standard_StreamsessionType。有关会话文档的更多信息,请参阅 会话文档架构

有关使用命令行更新现有 Session Manager 首选项的信息,请参阅 更新 Session Manager 首选项(命令行)

有关如何使用 CloudFormation 创建会话首选项的示例,请参阅《AWS CloudFormation 用户指南》中的为 Session Manager 首选项创建 Systems Manager 文档

注意

此过程介绍如何创建用于在 AWS 账户 级别设置 Session Manager 首选项的文档。要创建用于设置会话级别首选项的文档,请为与文件名相关的命令输入指定 SSM-SessionManagerRunShell 以外的值。

要使用您的文档为从 AWS Command Line Interface(AWS CLI)开始的会话设置首选项,请提供文档名称作为 --document-name 参数值。要为从会话管理器控制台启动的会话设置首选项,可以键入或从列表中选择文档的名称。

创建 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": "amzn-s3-demo-bucket", "s3KeyPrefix": "MyS3Prefix", "s3EncryptionEnabled": true, "cloudWatchLogGroupName": "MyLogGroupName", "cloudWatchEncryptionEnabled": true, "cloudWatchStreamingEnabled": false, "kmsKeyId": "MyKMSKeyID", "runAsEnabled": true, "runAsDefaultUser": "MyDefaultRunAsUser", "idleSessionTimeout": "20", "maxSessionDuration": "60", "shellProfile": { "windows": "MyCommands", "linux": "MyCommands" } } }
    注意

    如果不需要加密会话日志数据,请将 s3EncryptionEnabledtrue 更改为 false

    如果您不是将日志发送到 Amazon S3 存储桶或 CloudWatch Logs 日志组,不希望加密活动会话的数据,或不希望为账户中的会话启用“运行身份”支持,则可以删除这些选项的行。确保 inputs 部分中的最后一行不以逗号结尾。

    如果您添加 KMS 密钥 ID 来加密会话数据,启动会话的用户及其所连接的托管式节点都必须具有使用该密钥的权限。您可以通过 IAM policy 向 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"
        }
    }