Come posso utilizzare il numero di CI registrati al mese per comprendere la fatturazione di AWS Config?
Desidero recuperare il numero di elementi di configurazione (CI) registrati da AWS Config. Quindi desidero utilizzare queste informazioni per comprendere la mia fatturazione AWS Config.
Risoluzione
Per comprendere più agevolmente le tendenze di fatturazione precedenti e attuali, utilizza Amazon Athena per identificare il numero di CI mensili di un account.
Verifica che il bucket Amazon S3 contenga i file di configurazione
Il servizio AWS Config deve essere in grado di fornire correttamente i file della cronologia delle configurazioni al bucket Amazon Simple Storage Service (Amazon S3) designato. AWS Config fornisce gli elementi di configurazione al bucket come file della cronologia delle configurazioni ogni 6 ore. Per ulteriori informazioni, consulta Visualizzazione della cronologia di conformità per AWS le tue risorse con AWS Config.
Completa i seguenti passaggi:
- Apri la console AWS Config.
- Nel pannello di navigazione, scegli Impostazioni.
- Nella sezione Amazon S3 bucket (Bucket Amazon S3), annota il nome del bucket.
- Apri la console Amazon S3.
- Nel pannello di navigazione, scegli Bucket, quindi seleziona il bucket S3.
- Controlla che nel bucket S3 siano presenti i file di configurazione.
Nota: se i file di configurazione non sono presenti, il ruolo potrebbe non avere le autorizzazioni necessarie. Per ulteriori informazioni, consulta AWS Identity and Access Management (AWS IAM) per Amazon S3.
Crea una tabella in Athena
Apri la console Athena. Quindi crea una tabella con la sintassi per l'ambiente in uso.
Importante: nella seguente sintassi della tabella, sostituisci LOCATION con la posizione e la Regione AWS per gli elementi di AWS Config archiviati nel bucket S3. Per BUCKET-NAME, ACCOUNT-ID, REGION e ORG-ID utilizza le tue informazioni specifiche.
Per l'implementazione standard di AWS Config
Utilizza la seguente sintassi della tabella:
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/';
Per la versione 2 del motore Athena
Se utilizzi la versione 2 del motore Athena, la lunghezza massima della riga per i file di testo è 100 MB. Se disponi di molte risorse, gli elementi di AWS Config archiviati nel bucket S3 designato potrebbero superare questo limite. Ad esempio, AWS Config genera anche file di snapshot della configurazione nella stessa posizione (LOCATION) del bucket e il file di snapshot della configurazione potrebbe superare questo limite. Se superi il limite, quando esegui una query sull'elemento di AWS Config, ricevi un errore simile al seguente:
"HIVE_BAD_DATA: Line too long in text file: <s3_path_to_config_data_object>"
In questo caso, utilizza la seguente sintassi della tabella per indicare ad Athena di eseguire query direttamente sul percorso di Amazon S3 che memorizza 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: il seguente esempio di tabella partiziona la tabella Athena con una proiezione delle partizioni dal /1/1/2021/ al /31/12/2121/. Aggiorna le partizioni in base alle esigenze. Il formato della data del percorso Amazon S3 dei dati di AWS Config non è compatibile con il formato della data della proiezione delle partizioni Athena.
Per gli ambienti AWS Control Tower
Se utilizzi AWS Control Tower, per adattare la struttura dell'account, utilizza la seguente sintassi della tabella per creare la tabella 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
Esempio di query Athena
Il seguente esempio di query recupera il numero di modifiche per risorsa nel mese di 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
Quando escludi determinati tipi di risorse da AWS Config Recorder, quest'ultimo registra comunque la creazione e l'eliminazione di tali risorse. Le registrazioni vengono effettuate gratuitamente. Questi CI delle risorse includono i seguenti stati per il campo configurationItemStatus:
- ResourceNotRecorded
- ResourceDeletedNotRecorded
Le registrazioni includono anche metadati di base, come resource-id, ARN e CI, ma non includono informazioni sulla configurazione delle risorse e sulle relazioni.
Nota: questa query conta ancora le informazioni ResourceNotRecorded. Per escluderle, esegui questa query:
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
I risultati sono simili al seguente esempio:
resourcetype resourceid NumberOfChanges AWS::EC2::VPC vpc-9ed00bfa 7 AWS::EC2::Subnet subnet-4472e248 5 AWS::EC2::SecurityGroup sg-450c6531 4
Il seguente esempio di query recupera il numero di elementi di configurazione al giorno per il 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
Nota: per filtrare le risorse non registrate, puoi aggiungere la seguente clausola aggiuntiva prima dell'opzione GROUP BY:
"AND configurationItem.configurationItemStatus NOT IN ('ResourceNotRecorded','ResourceDeletedNotRecorded')"
I risultati sono simili al seguente esempio:
configurationitemcapturetime NumberOfChanges 2021-02-02 7 2021-02-03 3 2021-02-07 11 ...
Nota: quando confronti il numero di CI tra i risultati delle query di Athena e i dati di fatturazione AWS per lo stesso mese e Regione, può essere presente una discrepanza. I dati interrogati da Athena possono essere a cavallo tra due giorni e includere anche gli elementi di configurazione fatturati in mesi adiacenti. I CI di AWS Config vengono misurati in base a quando hai avviato configurationItemCaptureTime.
È consigliabile incrementare di uno il giorno finale specificato rispetto alla fine del mese.
Ad esempio, puoi modificare la query originale utilizzando la seguente query aggiornata.
Query originale:
AND configurationItem.configurationItemCaptureTime <= '2021-02-28T%') result
Query aggiornata:
AND configurationItem.configurationItemCaptureTime <= '2021-03-01T%') result
Nota: l'ultimo giorno del mese viene incrementato di un giorno.
Informazioni correlate
- Argomenti
- Management & Governance
- Tag
- AWS Config
- Lingua
- Italiano
Video correlati


Contenuto pertinente
AWS UFFICIALEAggiornata un anno fa
AWS UFFICIALEAggiornata 7 mesi fa