Explicación: utilizar la sincronización de datos de recursos para agregar datos de inventario
La siguiente explicación describe cómo crear una configuración de sincronización de datos de recursos para AWS Systems Manager Inventory con la AWS Command Line Interface (AWS CLI). Una sincronización de datos de recursos transfiere automáticamente los datos de inventario de todos los nodos administrados a un bucket de Amazon Simple Storage Service (Amazon S3) central. La sincronización actualiza automáticamente los datos del bucket de Amazon S3 central siempre que se detectan nuevos datos de inventario.
Esta explicación también describe cómo utilizar Amazon Athena y Amazon QuickSight para consultar y analizar los datos agregados. Para obtener información acerca de cómo crear una sincronización de datos de recursos mediante Systems Manager en la AWS Management Console, consulte Explicación: utilizar la sincronización de datos de recursos para agregar datos de inventario. Para obtener información sobre la consulta de inventario desde varias Regiones de AWS y cuentas mediante Systems Manager en la AWS Management Console, consulte Consulta de datos de Inventory de varias regiones y cuentas.
nota
Este tutorial incluye información sobre cómo cifrar la sincronización mediante AWS Key Management Service (AWS KMS). Inventory no recopila los datos privados, específicos del usuario ni información confidencial, por lo que el cifrado es opcional. Para obtener más información acerca de AWS KMS, consulte Guía para desarrolladores de AWS Key Management Service.
Antes de empezar
Revise o complete las siguientes tareas antes de comenzar la explicación en esta sección:
-
Recopile datos de inventario de los nodos administrados. A efectos de las secciones de Amazon Athena y Amazon QuickSight en esta explicación, se recomienda que recopile los datos de Application. Para obtener más información acerca de cómo se recopilan los datos de inventario, consulte Configuración de la recopilación de inventario o Uso de la AWS CLI para configurar la recopilación de datos de inventario.
-
(Opcional) Si los datos de inventario se almacenan en un bucket de Amazon Simple Storage Service (Amazon S3) que utiliza el cifrado de AWS Key Management Service (AWS KMS), también configure la cuenta de IAM y el rol de servicio de
Amazon-GlueServiceRoleForSSM
para el cifrado de AWS KMS. Si no configura su cuenta de IAM y este rol, Systems Manager muestraCannot load Glue tables
cuando elige la pestaña Vista detallada en la consola. Para obtener más información, consulte (Opcional) Configuración de permisos para ver datos cifrados de AWS KMS. -
(Opcional) Si desea cifrar la sincronización de datos de recursos mediante AWS KMS, cree una clave nueva que incluya la siguiente política o actualice una clave existente y agréguele esta política.
{ "Version": "2012-10-17", "Id": "ssm-access-policy", "Statement": [ { "Sid": "ssm-access-policy-statement", "Action": [ "kms:GenerateDataKey" ], "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Resource": "arn:aws:kms:
us-east-2
:123456789012
:key/KMS_key_id
", "Condition": { "StringLike": { "aws:SourceAccount": "123456789012
" }, "ArnLike": { "aws:SourceArn": "arn:aws:ssm:*:123456789012
:resource-data-sync/*" } } } ] }
Para crear una sincronización de datos de recursos para Inventory
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/
. -
Cree un bucket para almacenar los datos de inventario agregados. Para obtener más información, consulte Crear un bucket en la Guía del usuario de Amazon Simple Storage Service. Anote el nombre de bucket y la Región de AWS donde lo creó.
-
Después de crear el bucket, seleccione la pestaña Permisos y, a continuación, elija Política de bucket.
-
Copie y pegue la siguiente política de bucket en el editor de políticas. Reemplace amzn-s3-demo-bucket y
account-id
por el nombre del bucket de Amazon S3 que ha creado y un ID de Cuenta de AWS válido. Al agregar varias cuentas, agrega una cadena de condición adicional y un ARN para cada cuenta. Elimine los marcadores de posición adicionales del ejemplo al añadir una cuenta. Si lo desea, reemplacebucket-prefix
por el nombre de un prefijo de Amazon S3 (subdirectorio). Si no ha creado un prefijo, quitebucket-prefix/
del ARN de la política.{ "Version": "2012-10-17", "Statement": [ { "Sid": " SSMBucketDelivery", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/
bucket-prefix
/*/accountid=account-id
/*" ], "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "account-id1
", "account-id2
", "account-id3
", "account-id4
" ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:ssm:*:account-id1
:resource-data-sync/*", "arn:aws:ssm:*:account-id2
:resource-data-sync/*", "arn:aws:ssm:*:account-id3
:resource-data-sync/*", "arn:aws:ssm:*:account-id4
:resource-data-sync/*" ] } } } ] } -
(Opcional) Si desea cifrar la sincronización, debe agregar las siguientes condiciones a la política del paso anterior. Agréguelas en la sección
StringEquals
."s3:x-amz-server-side-encryption":"aws:kms", "s3:x-amz-server-side-encryption-aws-kms-key-id":"arn:aws:kms:
region
:account_ID
:key/KMS_key_ID
"A continuación se muestra un ejemplo:
"StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": "
account-id
", "s3:x-amz-server-side-encryption":"aws:kms", "s3:x-amz-server-side-encryption-aws-kms-key-id":"arn:aws:kms:region
:account_ID
:key/KMS_key_ID
" } Si aún no lo ha hecho, instale y configure la AWS Command Line Interface (AWS CLI).
Para obtener más información, consulte Instalación o actualización de la última versión de la AWS CLI.
-
(Opcional) Si desea cifrar la sincronización, ejecute el siguiente comando para comprobar que la política del bucket esté implementando el requisito de clave de AWS KMS. Reemplace cada
example resource placeholder
con su propia información. -
Ejecute el siguiente comando para crear una configuración de sincronización de datos de recursos con el bucket de Amazon S3 que ha creado al inicio de este procedimiento. Este comando crea una sincronización de la Región de AWS en la que ha iniciado sesión.
nota
Si la sincronización y el bucket de Amazon S3 de destino se encuentran en regiones diferentes, es posible que esté sujeto a precios de transferencia de datos. Para obtener más información, consulte Precios de Amazon S3
. Puede utilizar el parámetro
region
para especificar si debe crearse la configuración de la sincronización. En el siguiente ejemplo, los datos de inventario de la región us-west-1 se sincronizarán en el bucket de Amazon S3 en la región us-west-2.(Opcional) Si desea cifrar la sincronización mediante AWS KMS, ejecute el siguiente comando para crear la sincronización. Si cifra la sincronización, la clave de AWS KMS y el bucket de Amazon S3 deben estar en la misma región.
-
Ejecute el siguiente comando para ver el estado de la configuración de la sincronización.
aws ssm list-resource-data-sync
Si ha creado la configuración de la sincronización en una región distinta, debe especificar el parámetro
region
tal y como se muestra en el siguiente ejemplo.aws ssm list-resource-data-sync --region us-west-1
-
Después de haber creado correctamente la configuración de la sincronización, examine el bucket de destino en Amazon S3. Los datos de inventario deberían aparecer en unos minutos.
Uso de los datos en Amazon Athena
En la siguiente sección se describe cómo ver y consultar los datos en Amazon Athena. Antes de comenzar, le recomendamos que conozca Athena. Para obtener más información, consulte ¿Qué es Amazon Athena? y Uso de datos en la Guía del usuario de Amazon Athena.
Para ver y consultar los datos en Amazon Athena
Abra la consola de Athena en https://console.aws.amazon.com/athena/
. -
Copie y pegue la siguiente instrucción en el editor de consultas y, a continuación, elija Ejecutar consulta.
CREATE DATABASE ssminventory
El sistema crea una base de datos denominada ssminventory.
-
Copie y pegue la siguiente instrucción en el editor de consultas y, a continuación, elija Ejecutar consulta. Reemplace amzn-s3-demo-bucket y
bucket_prefix
por el nombre y el prefijo del destino de Amazon S3.CREATE EXTERNAL TABLE IF NOT EXISTS ssminventory.AWS_Application ( Name string, ResourceId string, ApplicationType string, Publisher string, Version string, InstalledTime string, Architecture string, URL string, Summary string, PackageId string ) PARTITIONED BY (AccountId string, Region string, ResourceType string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1' ) LOCATION 's3://amzn-s3-demo-bucket/
bucket_prefix
/AWS:Application/' -
Copie y pegue la siguiente instrucción en el editor de consultas y, a continuación, elija Ejecutar consulta.
MSCK REPAIR TABLE ssminventory.AWS_Application
El sistema particiona la tabla.
nota
Si crea sincronizaciones de datos de recursos de otras Regiones de AWS o Cuentas de AWS, deberá ejecutar este comando de nuevo para actualizar las particiones. Es posible que también deba actualizar la política del bucket de Amazon S3.
-
Para realizar una vista previa de los datos, elija el icono de visualización que aparece junto a la tabla
AWS_Application
. -
Copie y pegue la siguiente instrucción en el editor de consultas y, a continuación, elija Ejecutar consulta.
SELECT a.name, a.version, count( a.version) frequency from aws_application a where a.name = 'aws-cfn-bootstrap' group by a.name, a.version order by frequency desc
La consulta regresa un recuento de diferentes versiones de
aws-cfn-bootstrap
, que es una aplicación de AWS presente en instancias de Amazon Elastic Compute Cloud (Amazon EC2) para Linux, macOS y Windows Server. -
Copie y pegue una por una las siguientes instrucciones en el editor de consultas, reemplace amzn-s3-demo-bucket y
bucket-prefix
por los datos de Amazon S3 y, a continuación, seleccione Ejecutar consulta. Estas instrucciones configuran otras tablas de inventario en Athena.CREATE EXTERNAL TABLE IF NOT EXISTS ssminventory.AWS_AWSComponent ( `ResourceId` string, `Name` string, `ApplicationType` string, `Publisher` string, `Version` string, `InstalledTime` string, `Architecture` string, `URL` string ) PARTITIONED BY (AccountId string, Region string, ResourceType string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1' ) LOCATION 's3://amzn-s3-demo-bucket/
bucket-prefix
/AWS:AWSComponent/'MSCK REPAIR TABLE ssminventory.AWS_AWSComponent
CREATE EXTERNAL TABLE IF NOT EXISTS ssminventory.AWS_WindowsUpdate ( `ResourceId` string, `HotFixId` string, `Description` string, `InstalledTime` string, `InstalledBy` string ) PARTITIONED BY (AccountId string, Region string, ResourceType string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1' ) LOCATION 's3://amzn-s3-demo-bucket/
bucket-prefix
/AWS:WindowsUpdate/'MSCK REPAIR TABLE ssminventory.AWS_WindowsUpdate
CREATE EXTERNAL TABLE IF NOT EXISTS ssminventory.AWS_InstanceInformation ( `AgentType` string, `AgentVersion` string, `ComputerName` string, `IamRole` string, `InstanceId` string, `IpAddress` string, `PlatformName` string, `PlatformType` string, `PlatformVersion` string ) PARTITIONED BY (AccountId string, Region string, ResourceType string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1' ) LOCATION 's3://amzn-s3-demo-bucket/
bucket-prefix
/AWS:InstanceInformation/'MSCK REPAIR TABLE ssminventory.AWS_InstanceInformation
CREATE EXTERNAL TABLE IF NOT EXISTS ssminventory.AWS_Network ( `ResourceId` string, `Name` string, `SubnetMask` string, `Gateway` string, `DHCPServer` string, `DNSServer` string, `MacAddress` string, `IPV4` string, `IPV6` string ) PARTITIONED BY (AccountId string, Region string, ResourceType string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1' ) LOCATION 's3://amzn-s3-demo-bucket/
bucket-prefix
/AWS:Network/'MSCK REPAIR TABLE ssminventory.AWS_Network
CREATE EXTERNAL TABLE IF NOT EXISTS ssminventory.AWS_PatchSummary ( `ResourceId` string, `PatchGroup` string, `BaselineId` string, `SnapshotId` string, `OwnerInformation` string, `InstalledCount` int, `InstalledOtherCount` int, `NotApplicableCount` int, `MissingCount` int, `FailedCount` int, `OperationType` string, `OperationStartTime` string, `OperationEndTime` string ) PARTITIONED BY (AccountId string, Region string, ResourceType string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1' ) LOCATION 's3://amzn-s3-demo-bucket/
bucket-prefix
/AWS:PatchSummary/'MSCK REPAIR TABLE ssminventory.AWS_PatchSummary
Uso de los datos en Amazon QuickSight
En la siguiente sección se proporciona información general con enlaces para crear una visualización en Amazon QuickSight.
Para crear una visualización en Amazon QuickSight
-
Regístrese en Amazon QuickSight
y, a continuación, inicie sesión en la consola de QuickSight. -
Cree un conjunto de datos a partir de la tabla
AWS_Application
y de cualquier otra tabla que haya creado. Para obtener más información, consulte Creación de un conjunto de datos con los datos de Amazon Athena. -
Combine las tablas. Por ejemplo, puede combinar la columna
instanceid
deAWS_InstanceInformation
porque coincide con la columnaresourceid
en otras tablas de inventario. Para obtener más información acerca de la combinación de tablas, consulte Combinación de tablas. -
Cree una visualización. Para obtener más información, consulte Trabajo con elementos visuales de Amazon QuickSight.