¿Cómo puedo usar la cantidad de CI registrados por mes para entender la facturación de AWS Config?
Quiero recuperar la cantidad de elementos de configuración (CI) que registró AWS Config. A continuación, quiero usar esta información para entender mi facturación de AWS Config.
Resolución
Para ayudarte a identificar las tendencias de facturación anteriores y actuales, utiliza Amazon Athena para identificar la cantidad de elementos de configuración (CI) al mes para tu cuenta.
Comprobar que el bucket de Amazon S3 contenga archivos de configuración
El servicio AWS Config debe poder entregar correctamente los archivos del historial de configuración a tu bucket designado de Amazon Simple Storage Service (Amazon S3). AWS Config envía los CI al bucket como archivos de historial de configuración cada 6 horas. Para obtener más información, consulta Ver el historial de cumplimiento de los recursos de AWS con AWS Config.
Sigue estos pasos:
- Abra la consola de AWS Config.
- En el panel de navegación, selecciona Configuración.
- En la sección Bucket de Amazon S3, anota el nombre del bucket.
- Abre la consola de Amazon S3.
- En el panel de navegación, elige Buckets y, a continuación, elige tu bucket de S3.
- Revisa el bucket de S3 para ver los archivos de configuración.
Nota: Si no hay archivos de configuración, es posible que a tu rol le falten permisos. Para obtener más información, consulta AWS Identity and Access Management (IAM) para Amazon S3.
Creación de una tabla en Athena
Abre la consola de Athena. A continuación, crea una tabla con la sintaxis de tu entorno.
Importante: En la siguiente sintaxis de la tabla, sustituye LOCATION por la ubicación y la región de AWS para los elementos de AWS Config almacenados en tu bucket de S3. En BUCKET-NAME, ACCOUNT-ID, REGION y ORG-ID, usa tu información específica.
Para la implementación estándar de AWS Config
Utiliza la siguiente sintaxis de tabla:
CREATE EXTERNAL TABLE awsconfig ( fileversion string, configSnapshotId string, configurationitems ARRAY < STRUCT < configurationItemVersion : STRING, configurationItemCaptureTime : STRING, configurationStateId : BIGINT, awsAccountId : STRING, configurationItemStatus : STRING, resourceType : STRING, resourceId : STRING, resourceName : STRING, ARN : STRING, awsRegion : STRING, availabilityZone : STRING, configurationStateMd5Hash : STRING, resourceCreationTime : STRING > > ) ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' LOCATION 's3://BUCKET-NAME/AWSLogs/ACCOUNT-ID/Config/REGION/';
Para motor Athena versión 2
Si utilizas la versión 2 del motor de Athena, la longitud máxima de línea para los archivos de texto es de 100 MB. Si tienes muchos recursos, es posible que los elementos de AWS Config que estén almacenados en el bucket de S3 designado superen este límite. Por ejemplo, AWS Config también entrega archivos de instantáneas de configuración en la misma LOCATION del bucket, y el archivo de instantáneas de configuración podría superar este límite. Si superas el límite, recibirás un error similar al siguiente al consultar el elemento de AWS Config:
«HIVE_BAD_DATA: Line too long in text file: <s3_path_to_config_data_object>»
En este caso, utiliza la siguiente sintaxis de tabla para indicar a Athena que consulte directamente la ruta de Amazon S3 que almacena los archivos del historial de configuración:
CREATE EXTERNAL TABLE awsconfig ( fileversion string, configSnapshotId string, configurationitems ARRAY < STRUCT < configurationItemVersion : STRING, configurationItemCaptureTime : STRING, configurationStateId : BIGINT, awsAccountId : STRING, configurationItemStatus : STRING, resourceType : STRING, resourceId : STRING, resourceName : STRING, ARN : STRING, awsRegion : STRING, availabilityZone : STRING, configurationStateMd5Hash : STRING, resourceCreationTime : STRING > > ) PARTITIONED BY (`year` string,`month` string,`day` string) ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' LOCATION 's3://BUCKET-NAME/AWSLogs/ACCOUNT-ID/Config/REGION/' TBLPROPERTIES ( 'projection.enabled'='true', 'projection.year.interval'='1', 'projection.year.range'='2021,2121', 'projection.year.type'='integer', 'projection.month.interval'='1', 'projection.month.range'='1,12', 'projection.month.type'='integer', 'projection.day.interval'='1', 'projection.day.range'='1,31', 'projection.day.type'='integer', 'storage.location.template'='s3://BUCKET-NAME/AWSLogs/ACCOUNT-ID/Config/REGION/${year}/${month}/${day}/ConfigHistory/')
Nota: La siguiente tabla de ejemplo divide la tabla de Athena con una proyección de particiones de /2021/1/1/ a /2121/12/31/. Actualiza estas particiones según tus necesidades. El formato de fecha de la ruta Amazon S3 de los datos de AWS Config no es compatible con el formato de fecha de la proyección de particiones de Athena.
Para entornos de AWS Control Tower
Si utilizas AWS Control Tower, para adaptarte a la estructura de la cuenta, utiliza la siguiente sintaxis de tabla para crear la tabla de Athena:
CREATE EXTERNAL TABLE awsconfig ( fileversion string, configSnapshotId string, configurationitems ARRAY < STRUCT < configurationItemVersion : STRING, configurationItemCaptureTime : STRING, configurationStateId : BIGINT, awsAccountId : STRING, configurationItemStatus : STRING, resourceType : STRING, resourceId : STRING, resourceName : STRING, ARN : STRING, awsRegion : STRING, availabilityZone : STRING, configurationStateMd5Hash : STRING, resourceCreationTime : STRING > > ) PARTITIONED BY (account string,region string,year string,month string,day string) ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' LOCATION 's3://BUCKET-NAME/ ORG-ID/AWSLogs/' -- Bucket name and org should be updated TBLPROPERTIES ( 'projection.enabled'='true', 'projection.account.type'='enum', 'projection.account.values'='<account-id1, accountid2>', -- Enter all account ids 'projection.region.type'='enum', 'projection.region.values'='<region-1,region-2,region-3>', -- Enter all regions 'projection.year.interval'='1', 'projection.year.range'='2021,2121', 'projection.year.type'='integer', 'projection.month.interval'='1', 'projection.month.range'='1,12', 'projection.month.type'='integer', 'projection.day.interval'='1', 'projection.day.range'='1,31', 'projection.day.type'='integer', 'storage.location.template'='s3://BUCKET-NAME/ORG-ID/AWSLogs/${account}/Config/${region}/${year}/${month}/${day}/ConfigHistory/') -- Bucket name and org should be updated
Ejemplos de consultas de Athena
El siguiente ejemplo de consulta recupera el número de cambios por recurso en febrero de 2021, ordenados por los cambios más frecuentes:
SELECT configurationItem.resourceType, configurationItem.resourceId, COUNT(configurationItem.resourceId) AS NumberOfChanges FROM default.awsconfig CROSS JOIN UNNEST(configurationitems) AS t(configurationItem) WHERE "$path" LIKE '%ConfigHistory%' AND configurationItem.configurationItemCaptureTime >= '2021-02-01T%' AND configurationItem.configurationItemCaptureTime <= '2021-02-28T%' GROUP BY configurationItem.resourceType, configurationItem.resourceId ORDER BY NumberOfChanges DESC
Cuando excluyes ciertos tipos de recursos del grabador de AWS Config, el grabador sigue registrando la creación y la eliminación de esos recursos. Estos registros se realizan sin coste alguno. Estos CI de recursos incluyen los siguientes estados para el campo configurationItemStatus:
- ResourceNotRecorded
- ResourceDeletedNotRecorded
Los registros también incluyen metadatos básicos, como el identificador del recurso, el ARN y el CI, pero no incluyen información sobre la configuración y la relación de los recursos.
Nota: Esta consulta sigue contando la información de ResourceNotRecorded. Para excluir esta información, ejecuta la siguiente consulta:
SELECT configurationItem.resourceType, configurationItem.resourceId, COUNT(configurationItem.resourceId) AS NumberOfChanges FROM default.awsconfig CROSS JOIN UNNEST(configurationitems) AS t(configurationItem) WHERE "$path" LIKE '%ConfigHistory%' AND configurationItem.configurationItemCaptureTime >= '2021-02-08T%' AND configurationItem.configurationItemCaptureTime <= '2021-02-28T%' AND configurationItem.configurationItemStatus NOT IN ('ResourceNotRecorded','ResourceDeletedNotRecorded') GROUP BY configurationItem.resourceType ORDER BY NumberOfChanges DESC
Los resultados son similares a los del ejemplo siguiente:
resourcetype resourceid NumberOfChanges AWS::EC2::VPC vpc-9ed00bfa 7 AWS::EC2::Subnet subnet-4472e248 5 AWS::EC2::SecurityGroup sg-450c6531 4
El siguiente ejemplo de consulta recupera la cantidad de elementos de configuración por día en febrero de 2021:
SELECT result.configurationitemcapturetime, count(result.configurationitemcapturetime) AS NumberOfChanges FROM (SELECT regexp_replace(configurationItem.configurationItemCaptureTime, '(.+)(T.+)', '$1') AS configurationitemcapturetime FROM default.awsconfig CROSS JOIN UNNEST(configurationitems) AS t(configurationItem) WHERE "$path" LIKE '%ConfigHistory%' AND configurationItem.configurationItemCaptureTime >= '2021-02-01T%' AND configurationItem.configurationItemCaptureTime <= '2021-02-28T%') result GROUP BY result.configurationitemcapturetime ORDER BY result.configurationitemcapturetime
Nota: Para filtrar los recursos no registrados, puedes agregar la siguiente cláusula adicional antes de la opción GROUP BY:
«AND configurationItem.configurationItemStatus NOT IN ('ResourceNotRecorded','ResourceDeletedNotRecorded')»
Los resultados son similares a los del ejemplo siguiente:
configurationitemcapturetime NumberOfChanges 2021-02-02 7 2021-02-03 3 2021-02-07 11 ...
Nota: Al comparar el número total de CI entre los resultados de las consultas de Athena y los datos de facturación de AWS para el mismo mes y región, puede producirse una discrepancia. Los datos que Athena consulta pueden superar los límites de un día e incluir los CI facturados en meses adyacentes. Los CI de AWS Config se miden en función del momento en que iniciaste configurationItemCaptureTime.
Como práctica recomendada, incrementa en uno el día de finalización especificado desde el final del mes.
Por ejemplo, puedes cambiar la consulta original por la siguiente consulta actualizada.
Consulta original:
AND configurationItem.configurationItemCaptureTime <= '2021-02-28T%') result
Consulta actualizada:
AND configurationItem.configurationItemCaptureTime <= '2021-03-01T%') result
Nota: El último día del mes se incrementa en un día.
Información relacionada
- Etiquetas
- AWS Config
- Idioma
- Español
Vídeos relacionados


Contenido relevante
- preguntada hace 3 meses
- preguntada hace 9 meses
- preguntada hace 9 meses
- preguntada hace un mes
- preguntada hace 10 meses
OFICIAL DE AWSActualizada hace un año
OFICIAL DE AWSActualizada hace 4 años