Come posso recuperare il numero di elementi di configurazione che AWS Config registra mensilmente?
Desidero trovare il numero di elementi di configurazione (CI) registrati da AWS Config in modo da poter comprendere la fatturazione del mio account AWS.
Risoluzione
Utilizza Amazon Athena per identificare il numero di elementi di configurazione registrati mensilmente per il tuo account.
Verifica che il tuo bucket Amazon S3 contenga file di configurazione
Assicurati che AWS Config sia in grado di fornire file di cronologia delle configurazioni al bucket Amazon Simple Storage Service (Amazon S3) designato. AWS Config in genere invia i file della cronologia delle configurazioni al bucket ogni 6 ore.
Per verificare che il bucket S3 contenga file di configurazione, completa i seguenti passaggi:
- Apri la console di AWS Config.
- Dal pannello di navigazione, scegli Impostazioni.
- Nella sezione del bucket Amazon S3, annota il nome del bucket.
- Apri la console Amazon S3, quindi seleziona il tuo bucket S3.
- Verifica che il bucket S3 contenga file di configurazione.
Nota: se non sono presenti file di configurazione, il tuo ruolo AWS Identity and Access Management (IAM) potrebbe non avere le autorizzazioni necessarie per Amazon S3.
Crea una tabella in Athena
Utilizza l'editor di query di Amazon Athena per creare una tabella. Nell'editor delle query, inserisci la seguente istruzione:
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/';
Nota: sostituisci la posizione del bucket S3 esemplificativo con la posizione del tuo bucket S3.
Se utilizzi la versione 2 del motore Athena, la lunghezza massima della riga per i file di testo è 100 MB. Se hai un numero elevato di risorse, gli elementi di configurazione archiviati nel bucket AWS Config S3 designato potrebbero superare la quota. Ad esempio, poiché AWS Config genera anche file di snapshot della configurazione nella stessa posizione del bucket, il file di snapshot della configurazione potrebbe superare la quota.
Se superi la quota, riceverai un errore simile al seguente dopo aver interrogato l'elemento di configurazione:
"HIVE_BAD_DATA: Line too long in text file: s3_path_to_config_data_object"
Per evitare questo problema, esegui la seguente istruzione della tabella in modo che Athena interroghi direttamente il percorso S3 che archivia i file della cronologia delle configurazioni:
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: sostituisci la posizione del bucket S3 esemplificativo con la posizione del tuo bucket S3.
L'istruzione della tabella precedente partiziona la tabella Athena con proiezioni della partizione dal /1/1/2021/ al /31/12/2121/.
Nota: il formato della data del percorso S3 dei dati di AWS Config non è compatibile con il formato del tipo di data delle proiezioni della partizione di Athena.
Esempio di query Athena
Il seguente esempio di query recupera il numero di elementi di configurazione per ogni giorno del mese di febbraio 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
Esempio di output:
configurationitemcapturetime NumberOfChanges 2021-02-02 7 2021-02-03 3 2021-02-07 11 ...
Il seguente esempio di query recupera il numero di modifiche per ciascuna risorsa nel febbraio 2021, ordinate in base alle modifiche più frequenti:
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
Esempio di output:
resourcetype resourceid NumberOfChanges AWS::EC2::VPC vpc-9ed00bfa 7 AWS::EC2::Subnet subnet-4472e248 5 AWS::EC2::SecurityGroup sg-450c6531 4
Nota: confrontando il numero totale di elementi di configurazione tra gli output delle query Athena e i dati di fatturazione di AWS per lo stesso mese e la stessa regione AWS, potrebbe emergere una discordanza. I dati interrogati da Athena possono essere a cavallo tra due giorni e includere anche gli elementi di configurazione fatturati in mesi adiacenti. AWS Config misura gli elementi di configurazione in base al momento di avvio di configurationItemCaptureTime.
È consigliabile incrementare di uno il giorno finale specificato rispetto alla fine del mese.
Ad esempio, nella seguente query il giorno finale è il 28 febbraio:
AND configurationItem.configurationItemCaptureTime <= '2021-02-28T%') result
Aggiorna il giorno finale al 1 marzo:
AND configurationItem.configurationItemCaptureTime <= '2021-03-01T%') result
Interroga AWS Config in un ambiente Control Tower
Poiché Control Tower inserisce tutti i log di configurazione nello stesso bucket S3, puoi interrogare tutti gli account in AWS Organizations.
Per creare una tabella per una configurazione di Control Tower, esegui un'istruzione simile alla seguente:
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/' TBLPROPERTIES ( 'projection.enabled'='true', 'projection.account.type'='enum', 'projection.account.values'='account-id1, accountid2', 'projection.region.type'='enum', 'projection.region.values'='us-east-1,us-east-2,us-west-2', '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/')
Nota: aggiungi gli ID per ogni account della tua organizzazione e sostituisci tutte le regioni con le tue regioni.
L'istruzione precedente crea automaticamente le partizioni per gli account, il giorno, il mese e l'anno. Per interrogare il numero di elementi di configurazione di un mese specifico, esegui la seguente istruzione:
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 year='2024' AND month='9') result GROUP BY result.configurationitemcapturetime ORDER BY result.configurationitemcapturetime
Per ottenere il numero di modifiche per ciascuna risorsa nello stesso mese, esegui la seguente istruzione:
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 year='2024' AND month='9' GROUP BY configurationItem.resourceType, configurationItem.resourceId ORDER BY NumberOfChanges DESC
Informazioni correlate
Visualizzazione della cronologia di conformità per le tue risorse AWS con AWS Config
Video correlati


Contenuto pertinente
- AWS UFFICIALEAggiornata 3 anni fa
- AWS UFFICIALEAggiornata 3 anni fa
- AWS UFFICIALEAggiornata 7 mesi fa
- AWS UFFICIALEAggiornata 3 mesi fa