Utilizzare AWS CLI per configurare la raccolta dei dati di inventario - AWS Systems Manager

Utilizzare AWS CLI per configurare la raccolta dei dati di inventario

Le procedure seguenti forniranno le istruzioni per configurare AWS Systems Manager Inventory per raccogliere i metadati dai tuoi nodi gestiti. Quando configuri la raccolta dell'inventario, puoi iniziare creando un'associazione State Manager Systems Manager. Systems Manager raccoglie i dati di inventario quando viene eseguita l'associazione. Se non crei prima l'associazione e tenti di richiamare il plugin aws:softwareInventory utilizzando, ad esempio, Run Command Systems Manager, il sistema restituisce il seguente errore:

The aws:softwareInventory plugin can only be invoked via ssm-associate.

Nota

Un nodo può avere una sola associazione di Inventory configurata alla volta. Se configuri un nodo con due o più associazioni di Inventory, l'associazione non viene eseguita e non viene raccolto alcun dato dell'inventario.

Configurazione rapida di tutti i nodi gestiti per Inventory (CLI)

Puoi configurare in modo rapido tutti i nodi gestiti nel tuo Account AWS e nella Regione corrente per raccogliere i dati di inventario. Questo processo è noto come creazione di un'associazione di inventario globale. Per creare un'associazione di inventario globale con AWS CLI, utilizza l'opzione jolly per il valore instanceIds, come nell'esempio seguente.

Per configurare l'inventario per i nodi gestiti nel tuo Account AWS e nella Regione corrente (CLI)
  1. Se non lo hai ancora fatto, installa e configura AWS Command Line Interface (AWS CLI).

    Per informazioni, consulta la pagina Installazione o aggiornamento della versione più recente di AWS CLI.

  2. Esegui il comando seguente.

    Linux & macOS
    aws ssm create-association \ --name AWS-GatherSoftwareInventory \ --targets Key=InstanceIds,Values=* \ --schedule-expression "rate(1 day)" \ --parameters applications=Enabled,awsComponents=Enabled,customInventory=Enabled,instanceDetailedInformation=Enabled,networkConfig=Enabled,services=Enabled,windowsRoles=Enabled,windowsUpdates=Enabled
    Windows
    aws ssm create-association ^ --name AWS-GatherSoftwareInventory ^ --targets Key=InstanceIds,Values=* ^ --schedule-expression "rate(1 day)" ^ --parameters applications=Enabled,awsComponents=Enabled,customInventory=Enabled,instanceDetailedInformation=Enabled,networkConfig=Enabled,services=Enabled,windowsRoles=Enabled,windowsUpdates=Enabled
Nota

Questo comando non consente a Inventory di raccogliere metadati per il Registro di sistema o i file di Windows. Per l'inventario di questi tipi di dati, utilizza la procedura successiva.

Configurazione manuale di Inventory nei tuoi nodi gestiti (CLI)

Utilizza la procedura seguente per configurare manualmente AWS Systems Manager Inventory nei tuoi nodi gestiti con gli ID nodo o i tag.

Per configurare manualmente i nodi gestiti per Inventory (CLI)
  1. Se non lo hai ancora fatto, installa e configura AWS Command Line Interface (AWS CLI).

    Per informazioni, consulta la pagina Installazione o aggiornamento della versione più recente di AWS CLI.

  2. Eseguire questo comando per creare un'associazione State Manager che esegue Inventory di Systems Manager sul nodo. Sostituisci ciascun segnaposto delle risorse di esempio con le tue informazioni. Questo comando configura il servizio perché venga eseguito ogni sei ore e per raccogliere da un nodo dati su configurazione della rete, Windows Update e metadati dell'applicazione.

    Linux & macOS
    aws ssm create-association \ --name "AWS-GatherSoftwareInventory" \ --targets "Key=instanceids,Values=an_instance_ID" \ --schedule-expression "rate(240 minutes)" \ --output-location "{ \"S3Location\": { \"OutputS3Region\": \"region_ID, for example us-east-2\", \"OutputS3BucketName\": \"amzn-s3-demo-bucket\", \"OutputS3KeyPrefix\": \"Test\" } }" \ --parameters "networkConfig=Enabled,windowsUpdates=Enabled,applications=Enabled"
    Windows
    aws ssm create-association ^ --name "AWS-GatherSoftwareInventory" ^ --targets "Key=instanceids,Values=an_instance_ID" ^ --schedule-expression "rate(240 minutes)" ^ --output-location "{ \"S3Location\": { \"OutputS3Region\": \"region_ID, for example us-east-2\", \"OutputS3BucketName\": \"amzn-s3-demo-bucket\", \"OutputS3KeyPrefix\": \"Test\" } }" ^ --parameters "networkConfig=Enabled,windowsUpdates=Enabled,applications=Enabled"

    Il sistema risponde con informazioni simili alle seguenti.

    {
        "AssociationDescription": {
            "ScheduleExpression": "rate(240 minutes)",
            "OutputLocation": {
                "S3Location": {
                    "OutputS3KeyPrefix": "Test",
                    "OutputS3BucketName": "Test bucket",
                    "OutputS3Region": "us-east-2"
                }
            },
            "Name": "The name you specified",
            "Parameters": {
                "applications": [
                    "Enabled"
                ],
                "networkConfig": [
                    "Enabled"
                ],
                "windowsUpdates": [
                    "Enabled"
                ]
            },
            "Overview": {
                "Status": "Pending",
                "DetailedStatus": "Creating"
            },
            "AssociationId": "1a2b3c4d5e6f7g-1a2b3c-1a2b3c-1a2b3c-1a2b3c4d5e6f7g",
            "DocumentVersion": "$DEFAULT",
            "LastUpdateAssociationDate": 1480544990.06,
            "Date": 1480544990.06,
            "Targets": [
                {
                    "Values": [
                       "i-02573cafcfEXAMPLE"
                    ],
                    "Key": "InstanceIds"
                }
            ]
        }
    }

    È possibile definire come target grandi gruppi di nodi utilizzando il parametro Targets con i tag EC2. Guarda l'esempio seguente.

    Linux & macOS
    aws ssm create-association \ --name "AWS-GatherSoftwareInventory" \ --targets "Key=tag:Environment,Values=Production" \ --schedule-expression "rate(240 minutes)" \ --output-location "{ \"S3Location\": { \"OutputS3Region\": \"us-east-2\", \"OutputS3BucketName\": \"amzn-s3-demo-bucket\", \"OutputS3KeyPrefix\": \"Test\" } }" \ --parameters "networkConfig=Enabled,windowsUpdates=Enabled,applications=Enabled"
    Windows
    aws ssm create-association ^ --name "AWS-GatherSoftwareInventory" ^ --targets "Key=tag:Environment,Values=Production" ^ --schedule-expression "rate(240 minutes)" ^ --output-location "{ \"S3Location\": { \"OutputS3Region\": \"us-east-2\", \"OutputS3BucketName\": \"amzn-s3-demo-bucket\", \"OutputS3KeyPrefix\": \"Test\" } }" ^ --parameters "networkConfig=Enabled,windowsUpdates=Enabled,applications=Enabled"

    È anche possibile eseguire un inventario di file e chiavi del registro di sistema di Windows su un nodo Windows Server utilizzando i tipi di inventario files e windowsRegistry con espressioni. Per ulteriori informazioni su questi tipi di inventario, consulta Utilizzo dell'inventario dei file e del registro di sistema di Windows.

    Linux & macOS
    aws ssm create-association \ --name "AWS-GatherSoftwareInventory" \ --targets "Key=instanceids,Values=i-0704358e3a3da9eb1" \ --schedule-expression "rate(240 minutes)" \ --parameters '{"files":["[{\"Path\": \"C:\\Program Files\", \"Pattern\": [\"*.exe\"], \"Recursive\": true}]"], "windowsRegistry": ["[{\"Path\":\"HKEY_LOCAL_MACHINE\\Software\\Amazon\", \"Recursive\":true}]"]}' \ --profile dev-pdx
    Windows
    aws ssm create-association ^ --name "AWS-GatherSoftwareInventory" ^ --targets "Key=instanceids,Values=i-0704358e3a3da9eb1" ^ --schedule-expression "rate(240 minutes)" ^ --parameters '{"files":["[{\"Path\": \"C:\\Program Files\", \"Pattern\": [\"*.exe\"], \"Recursive\": true}]"], "windowsRegistry": ["[{\"Path\":\"HKEY_LOCAL_MACHINE\\Software\\Amazon\", \"Recursive\":true}]"]}' ^ --profile dev-pdx
  3. Eseguire questo comando per visualizzare lo stato dell'associazione.

    aws ssm describe-instance-associations-status --instance-id an_instance_ID

    Il sistema risponde con informazioni simili alle seguenti.

    {
    "InstanceAssociationStatusInfos": [
             {
                "Status": "Pending",
                "DetailedStatus": "Associated",
                "Name": "reInvent2016PolicyDocumentTest",
                "InstanceId": "i-1a2b3c4d5e6f7g",
                "AssociationId": "1a2b3c4d5e6f7g-1a2b3c-1a2b3c-1a2b3c-1a2b3c4d5e6f7g",
                "DocumentVersion": "1"
            }
    ]
    }