Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

AWS Config: come analizzare e ridurre i costi

By Nikhil PawarDec 23, 20248 min read

Questa pagina è disponibile anche in English, Deutsch, Español, Français, 日本語 e Português.

Foto di SuPatMaN da Shutterstock

Premetto che AWS Config è un ottimo servizio. Per chi non lo conoscesse, AWS Config consente di valutare, monitorare e registrare in modo continuativo le modifiche alla configurazione delle risorse. Non elencherò qui tutte le sue funzionalità: per approfondire può consultare questa pagina. La sezione pricing di AWS Config illustra come viene tariffato il servizio e propone alcuni esempi utili a comprenderlo meglio. In sintesi, i costi di AWS Config dipendono dal numero di configuration item registrati, dal numero di valutazioni attive delle regole AWS Config e dal numero di valutazioni dei conformance pack sul proprio account, a cui si sommano alcune voci accessorie come lo storage S3 e SNS. Se la sua infrastruttura è dinamica e soggetta a frequenti modifiche di configurazione, i costi di AWS Config possono crescere rapidamente. In questo articolo analizzeremo nel dettaglio i costi di AWS Config, alcune strategie per ridurli e qualche consiglio per indagare sui picchi di spesa imprevisti.

NOTA — Per ragioni di privacy, userò il mio AWS playground a scopo dimostrativo. Non dispongo di molti dati di configurazione, ma sono comunque sufficienti per illustrare la strategia adottata.

  • Configuration item registrati — Verifichi i configuration item registrati da AWS Config dalla AWS Config Dashboard (immagine 1) oppure consulti le stesse metriche disponibili in CloudWatch Metrics (immagine 2).

immagine 1 — Configuration item registrati — AWS Config Dashboard

immagine 2 — Configuration item registrati — AWS CloudWatch Metrics

  • Queste informazioni, da sole, dicono poco. Il numero di item registrati può però oscillare da poche centinaia a diverse migliaia al giorno, a seconda di ciò che accade sul suo account. Per capire meglio cosa viene effettivamente registrato, ho usato i dati di AWS Config presenti nel bucket S3 configurato (immagine 3) e ho provato ad analizzarli con il servizio AWS Athena. L'impostazione è disponibile in AWS Config > Settings > Delivery Method.

immagine 3 — S3 utilizzato come delivery method per i record di AWS Config

  • Accedendo a S3 troverà diversi file JSON consegnati da AWS Config e organizzati per organization ID, Account ID, Region, mese, data, ecc., come nell'esempio sotto; la dimensione dei file varia in base agli item registrati da AWS Config.

File consegnati da Config in S3

  • A questo punto ho provato a leggerli per vederne il contenuto. Ho preso, ad esempio, solo i primi 2 file.
nikhilpawar@MacBookPro Downloads % cat xxxxxxxxxx_Config_us-east-1_ConfigHistory_AWS__AppConfig__DeploymentStrategy_20241029T013419Z_20241029T013419Z_1.json
{"fileVersion":"1.0","configurationItems":[{"relatedEvents":[],"relationships":[],"configuration":{"Id":"AppConfig.AllAtOnce","ReplicateTo":"NONE","GrowthType":"LINEAR","Description":"Quick","DeploymentDurationInMinutes":0,"GrowthFactor":100.0,"FinalBakeTimeInMinutes":10,"Name":"AppConfig.AllAtOnce","Tags":[]},"supplementaryConfiguration":{},"tags":{},"configurationItemVersion":"1.3","configurationItemCaptureTime":"2024-10-29T01:34:19.420Z","configurationStateId":1730165659420,"awsAccountId":"xxxxxxxxxx","configurationItemStatus":"ResourceDiscovered","resourceType":"AWS::AppConfig::DeploymentStrategy","resourceId":"AppConfig.AllAtOnce","resourceName":"AppConfig.AllAtOnce","ARN":"arn:aws:appconfig:us-east-1:xxxxxxxxxx:deploymentstrategy/AppConfig.AllAtOnce","awsRegion":"us-east-1","availabilityZone":"Regional","configurationStateMd5Hash":""},{"relatedEvents":[],"relationships":[],"configuration":{"Id":"AppConfig.Canary10Percent20Minutes","ReplicateTo":"NONE","GrowthType":"EXPONENTIAL","Description":"AWS Recommended","DeploymentDurationInMinutes":20,"GrowthFactor":10.0,"FinalBakeTimeInMinutes":10,"Name":"AppConfig.Canary10Percent20Minutes","Tags":[]},"supplementaryConfiguration":{},"tags":{},"configurationItemVersion":"1.3","configurationItemCaptureTime":"2024-10-29T01:34:19.546Z","configurationStateId":1730165659546,"awsAccountId":"xxxxxxxxxx","configurationItemStatus":"ResourceDiscovered","resourceType":"AWS::AppConfig::DeploymentStrategy","resourceId":"AppConfig.Canary10Percent20Minutes","resourceName":"AppConfig.Canary10Percent20Minutes","ARN":"arn:aws:appconfig:us-east-1:xxxxxxxxxx:deploymentstrategy/AppConfig.Canary10Percent20Minutes","awsRegion":"us-east-1","availabilityZone":"Regional","configurationStateMd5Hash":""},{"relatedEvents":[],"relationships":[],"configuration":{"Id":"AppConfig.Linear20PercentEvery6Minutes","ReplicateTo":"NONE","GrowthType":"LINEAR","Description":"AWS Recommended","DeploymentDurationInMinutes":30,"GrowthFactor":20.0,"FinalBakeTimeInMinutes":30,"Name":"AppConfig.Linear20PercentEvery6Minutes","Tags":[]},"supplementaryConfiguration":{},"tags":{},"configurationItemVersion":"1.3","configurationItemCaptureTime":"2024-10-29T01:34:19.625Z","configurationStateId":1730165659625,"awsAccountId":"xxxxxxxxxx","configurationItemStatus":"ResourceDiscovered","resourceType":"AWS::AppConfig::DeploymentStrategy","resourceId":"AppConfig.Linear20PercentEvery6Minutes","resourceName":"AppConfig.Linear20PercentEvery6Minutes","ARN":"arn:aws:appconfig:us-east-1:xxxxxxxxxx:deploymentstrategy/AppConfig.Linear20PercentEvery6Minutes","awsRegion":"us-east-1","availabilityZone":"Regional","configurationStateMd5Hash":""},{"relatedEvents":[],"relationships":[],"configuration":{"Id":"AppConfig.Linear50PercentEvery30Seconds","ReplicateTo":"NONE","GrowthType":"LINEAR","Description":"Test/Demo","DeploymentDurationInMinutes":1,"GrowthFactor":50.0,"FinalBakeTimeInMinutes":1,"Name":"AppConfig.Linear50PercentEvery30Seconds","Tags":[]},"supplementaryConfiguration":{},"tags":{},"configurationItemVersion":"1.3","configurationItemCaptureTime":"2024-10-29T01:34:19.475Z","configurationStateId":1730165659475,"awsAccountId":"xxxxxxxxxx","configurationItemStatus":"ResourceDiscovered","resourceType":"AWS::AppConfig::DeploymentStrategy","resourceId":"AppConfig.Linear50PercentEvery30Seconds","resourceName":"AppConfig.Linear50PercentEvery30Seconds","ARN":"arn:aws:appconfig:us-east-1:xxxxxxxxxx:deploymentstrategy/AppConfig.Linear50PercentEvery30Seconds","awsRegion":"us-east-1","availabilityZone":"Regional","configurationStateMd5Hash":""}]}%                                                  nikhilpawar@MacBookPro Downloads % cat xxxxxxxxxx_Config_us-east-1_ConfigHistory_AWS__AppConfig__DeploymentStrategy_20241029T013419Z_20241029T013419Z_1.json | jq
{
  "fileVersion": "1.0",
  "configurationItems": [\
    {\
      "relatedEvents": [],\
      "relationships": [],\
      "configuration": {\
        "Id": "AppConfig.AllAtOnce",\
        "ReplicateTo": "NONE",\
        "GrowthType": "LINEAR",\
        "Description": "Quick",\
        "DeploymentDurationInMinutes": 0,\
        "GrowthFactor": 100.0,\
        "FinalBakeTimeInMinutes": 10,\
        "Name": "AppConfig.AllAtOnce",\
        "Tags": []\
      },\
      "supplementaryConfiguration": {},\
      "tags": {},\
      "configurationItemVersion": "1.3",\
      "configurationItemCaptureTime": "2024-10-29T01:34:19.420Z",\
      "configurationStateId": 1730165659420,\
      "awsAccountId": "xxxxxxxxxx",\
      "configurationItemStatus": "ResourceDiscovered",\
      "resourceType": "AWS::AppConfig::DeploymentStrategy",\
      "resourceId": "AppConfig.AllAtOnce",\
      "resourceName": "AppConfig.AllAtOnce",\
      "ARN": "arn:aws:appconfig:us-east-1:xxxxxxxxxx:deploymentstrategy/AppConfig.AllAtOnce",\
      "awsRegion": "us-east-1",\
      "availabilityZone": "Regional",\
      "configurationStateMd5Hash": ""\
    },\
    {\
      "relatedEvents": [],\
      "relationships": [],\
      "configuration": {\
        "Id": "AppConfig.Canary10Percent20Minutes",\
        "ReplicateTo": "NONE",\
        "GrowthType": "EXPONENTIAL",\
        "Description": "AWS Recommended",\
        "DeploymentDurationInMinutes": 20,\
        "GrowthFactor": 10.0,\
        "FinalBakeTimeInMinutes": 10,\
        "Name": "AppConfig.Canary10Percent20Minutes",\
        "Tags": []\
      },\
      "supplementaryConfiguration": {},\
      "tags": {},\
      "configurationItemVersion": "1.3",\
      "configurationItemCaptureTime": "2024-10-29T01:34:19.546Z",\
      "configurationStateId": 1730165659546,\
      "awsAccountId": "xxxxxxxxxx",\
      "configurationItemStatus": "ResourceDiscovered",\
      "resourceType": "AWS::AppConfig::DeploymentStrategy",\
      "resourceId": "AppConfig.Canary10Percent20Minutes",\
      "resourceName": "AppConfig.Canary10Percent20Minutes",\
      "ARN": "arn:aws:appconfig:us-east-1:xxxxxxxxxx:deploymentstrategy/AppConfig.Canary10Percent20Minutes",\
      "awsRegion": "us-east-1",\
      "availabilityZone": "Regional",\
      "configurationStateMd5Hash": ""\
    },\
    {\
      "relatedEvents": [],\
      "relationships": [],\
      "configuration": {\
        "Id": "AppConfig.Linear50PercentEvery30Seconds",\
        "ReplicateTo": "NONE",\
        "GrowthType": "LINEAR",\
        "Description": "Test/Demo",\
        "DeploymentDurationInMinutes": 1,\
        "GrowthFactor": 50.0,\
        "FinalBakeTimeInMinutes": 1,\
        "Name": "AppConfig.Linear50PercentEvery30Seconds",\
        "Tags": []\
      },\
      "supplementaryConfiguration": {},\
      "tags": {},\
      "configurationItemVersion": "1.3",\
      "configurationItemCaptureTime": "2024-10-29T01:34:19.475Z",\
      "configurationStateId": 1730165659475,\
      "awsAccountId": "xxxxxxxxxx",\
      "configurationItemStatus": "ResourceDiscovered",\
      "resourceType": "AWS::AppConfig::DeploymentStrategy",\
      "resourceId": "AppConfig.Linear50PercentEvery30Seconds",\
      "resourceName": "AppConfig.Linear50PercentEvery30Seconds",\
      "ARN": "arn:aws:appconfig:us-east-1:xxxxxxxxxx:deploymentstrategy/AppConfig.Linear50PercentEvery30Seconds",\
      "awsRegion": "us-east-1",\
      "availabilityZone": "Regional",\
      "configurationStateMd5Hash": ""\
    }\
  ]
}
  • Leggere quei file JSON manualmente o tramite script è piuttosto laborioso. La soluzione migliore è ricorrere ad AWS Athena: un altro servizio decisamente potente.
  • Creare una tabella Athena — Quando si creano tabelle Athena per i dati di AWS Config, è possibile personalizzare le query in base a periodi e ambiti dati diversi. La sintassi di creazione varia in funzione di ciò che si desidera analizzare:
  • Snapshot di un singolo giorno
  • Dati distribuiti su più giorni
  • Mese o anno specifico
  • Cronologia completa dei dati Config

NOTA — Sostituisca 'xxxxxxxxxx' con il proprio AWS account ID nelle query seguenti. Le consiglio inoltre di non eseguire la scansione sull'intero set di dati, ma solo sull'intervallo temporale che le serve. ( Athena pricing)

1. Snapshot di un singolo giorno

1.1:- Creare la tabella Athena: es. aws_config_table_single_day_2024_11_08

CREATE EXTERNAL TABLE aws_config_table_single_day_2024_11_08 (
  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://config-bucket-xxxxxxxxxxxx/AWSLogs/xxxxxxxxxxxx/Config/us-east-1/2024/11/8';

1.1:- Tabella Athena — Snapshot di un singolo giorno

1.2:- Conteggio del totale dei record: (Facoltativo: può verificare il totale dei record, che dovrebbe corrispondere alle metriche CloudWatch viste in apertura.)

SELECT
  COUNT(1) AS record_count
FROM
  default.aws_config_table_single_day_2024_11_08
CROSS JOIN
  UNNEST(configurationitems) AS t(configurationItem)
WHERE
  configurationItem.resourceType IS NOT NULL

1.2:- Totale record per il giorno

1.3:- Ottenere il tipo di risorsa e il numero di modifiche registrate: La query seguente aiuta a individuare i tipi di risorsa che generano il maggior numero di modifiche di configurazione, consentendo così di identificare i potenziali driver di costo nel monitoraggio AWS Config.

SELECT
  configurationItem.resourceType,
  COUNT(configurationItem.resourceId) AS NumberOfChanges
FROM
  default.aws_config_table_single_day_2024_11_08
CROSS JOIN
  UNNEST(configurationitems) AS t(configurationItem)
GROUP BY
  configurationItem.resourceType
ORDER BY
  NumberOfChanges DESC;

1.3:- Tipi di risorsa e numero di modifiche registrate

1.4:- Ottenere i resource ID: Per approfondire i tipi di risorsa con più modifiche, può scendere fino al dettaglio delle singole risorse. Ad esempio, la query precedente ha evidenziato che AWS:EC2:Subnet presenta il maggior numero di modifiche di configurazione. La query seguente aiuta a individuare quali specifici subnet ID stanno contribuendo a questa frequenza di modifiche.

SELECT
  configurationItem.resourceType,
  configurationItem.resourceId,
  COUNT(configurationItem.resourceId) AS NumberOfChanges
FROM
  default.aws_config_table_single_day_2024_11_08
CROSS JOIN
  UNNEST(configurationitems) AS t(configurationItem)
GROUP BY
  configurationItem.resourceType,
  configurationItem.resourceId
ORDER BY
  NumberOfChanges DESC

1.4:- Resource ID identificati

Questo dovrebbe restituire un quadro chiaro della situazione. Gli stessi pattern di query si possono applicare a intervalli di tempo diversi: che si tratti di analizzare i trend mensili, intervalli di date specifici o l'intera cronologia di Config, è sufficiente modificare i parametri temporali mantenendo lo stesso approccio analitico.

2. Mese specifico

2.1:- Creare la tabella Athena: es. aws_config_table_november_2024

CREATE EXTERNAL TABLE aws_config_table_november_2024 (
  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://config-bucket-xxxxxxxxxxxx/AWSLogs/xxxxxxxxxxxx/Config/us-east-1/2024/10/';

2.1:- Tabella Athena — dati di un mese

2.2:- Conteggio del totale dei record: Faccia riferimento al passaggio 1.2 (Conteggio del totale dei record) e aggiorni il nome della tabella.

2.2:- Totale record per il mese

2.3:- Ottenere il tipo di risorsa e il numero di modifiche registrate: Faccia riferimento al passaggio 1.3 (Ottenere il tipo di risorsa e il numero di modifiche registrate) e aggiorni il nome della tabella.

2.3:- Tipi di risorsa e numero di modifiche registrate

2.4:- Ottenere i resource ID: Faccia riferimento al passaggio 1.4 (Ottenere i resource ID) e aggiorni il nome della tabella.

2.4:- Resource ID identificati

3. Tutti i dati Config

3.1:- Creare la tabella Athena: es. aws_config_table_all

CREATE EXTERNAL TABLE aws_config_table_all (
  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://config-bucket-XXXXXXXXXXXX/AWSLogs/XXXXXXXXXXXX/Config/us-east-1/';

3.1:- Tabella Athena — tutti i dati config

3.2:- Totale record: Faccia riferimento al passaggio 1.2 (Conteggio del totale dei record) e aggiorni il nome della tabella.

3.2:- Totale record

3.3:- Ottenere il tipo di risorsa e il numero di modifiche registrate: Faccia riferimento al passaggio 1.3 (Ottenere il tipo di risorsa e il numero di modifiche registrate) e aggiorni il nome della tabella.

3.3:- Tipi di risorsa e numero di modifiche registrate

3.4:- Ottenere i resource ID: Faccia riferimento al passaggio 1.4 (Ottenere i resource ID) e aggiorni il nome della tabella.

3.4:- Resource ID identificati

4. Dati distribuiti su più giorni

4.1 Creare la tabella Athena: In questo scenario partizioneremo la tabella Athena con la partition projection dal 7/11/2024 al 10/11/2024. Personalizzi il periodo in base alle proprie esigenze.

CREATE EXTERNAL TABLE aws_config_table_period_2024_11_07to2024_11_10 (
  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://config-bucket-xxxxxxxxxxxx/AWSLogs/xxxxxxxxxxxx/Config/us-east-1'
TBLPROPERTIES (
  'projection.enabled'='true',
  'projection.year.interval'='1',
  'projection.year.range'='2024,2024',
  'projection.year.type'='integer',
  'projection.month.interval'='1',
  'projection.month.range'='10,11',
  'projection.month.type'='integer',
  'projection.day.interval'='1',
  'projection.day.range'='7,10',
  'projection.day.type'='integer',
  'storage.location.template'='s3://config-bucket-xxxxxxxxxxxx/AWSLogs/xxxxxxxxxxxx/Config/us-east-1/${year}/${month}/${day}/ConfigHistory/')

4.1:- Tabella Athena — intervallo selezionato

4.2:- Totale record:

SELECT result.configurationitemcapturetime,
         count(result.configurationitemcapturetime) AS NumberOfChanges
FROM
    (SELECT regexp_replace(configurationItem.configurationItemCaptureTime,
         '(.+)(T.+)', '$1') AS configurationitemcapturetime
    FROM default.aws_config_table_period_2024_11_07to2024_11_10
    CROSS JOIN UNNEST(configurationitems) AS t(configurationItem)
    WHERE "$path" LIKE '%ConfigHistory%'
            AND configurationItem.configurationItemCaptureTime >= '2024-11-05T%'
            AND configurationItem.configurationItemCaptureTime <= '2024-11-12T%') result
GROUP BY  result.configurationitemcapturetime
ORDER BY  result.configurationitemcapturetime

4.2:- Totale record

4.3:- Ottenere il tipo di risorsa e il numero di modifiche registrate:

SELECT configurationItem.resourceType,
       configurationItem.resourceId,
       COUNT(configurationItem.resourceId) AS NumberOfChanges
FROM default.aws_config_table_period_2024_11_07to2024_11_10
CROSS JOIN UNNEST(configurationitems) AS t(configurationItem)
WHERE "$path" LIKE '%ConfigHistory%'
        AND configurationItem.configurationItemCaptureTime >= '2024-11-05T%'
        AND configurationItem.configurationItemCaptureTime <= '2024-11-12T%'
GROUP BY  configurationItem.resourceType, configurationItem.resourceId
ORDER BY  NumberOfChanges DESC

### oppure ###

SELECT configurationItem.resourceType,
       configurationItem.resourceId,
       CAST(COUNT(configurationItem.resourceId) AS INTEGER) AS NumberOfChanges
FROM default.aws_config_table_period_2024_11_07to2024_11_10
CROSS JOIN UNNEST(configurationitems) AS t(configurationItem)
WHERE "$path" LIKE '%ConfigHistory%'
      AND configurationItem.configurationItemCaptureTime >= '2024-11-05T%'
      AND configurationItem.configurationItemCaptureTime <= '2024-11-12T%'
GROUP BY configurationItem.resourceType, configurationItem.resourceId
ORDER BY NumberOfChanges DESC

4.3:- Tipi di risorsa e numero di modifiche registrate

4.4:- Ottenere i resource ID

SELECT configurationItem.resourceId,
       configurationItem.resourceType,
       COUNT(configurationItem.resourceId) AS NumberOfChanges
FROM default.aws_config_table_period_2024_11_07to2024_11_10
CROSS JOIN UNNEST(configurationitems) AS t(configurationItem)
WHERE "$path" LIKE '%ConfigHistory%'
      AND configurationItem.configurationItemCaptureTime >= '2024-11-05T%'
      AND configurationItem.configurationItemCaptureTime <= '2024-11-12T%'
GROUP BY
     configurationItem.resourceId,
     configurationItem.resourceType
ORDER BY NumberOfChanges DESC

4.4:- Resource ID identificati

  • A questo punto ha individuato il resource ID e il tipo di risorsa con il maggior numero di item registrati nel periodo che le interessa.

Da giugno 2023 AWS Config supporta l'esclusione della registrazione per tipo di risorsa. Può quindi rivedere le impostazioni per i tipi di risorsa e modificarle di conseguenza, oppure indagare su picchi di costo anomali in giorni specifici.

Risorse registrate

Un altro aspetto da segnalare è il periodo di conservazione dei dati: può adattarlo alle sue esigenze.

Periodo di conservazione

In conclusione, AWS Config è un servizio molto potente, ma può diventare rapidamente costoso, soprattutto in ambienti dinamici. Adottando approcci strategici come l'analisi dei configuration item registrati, l'utilizzo di AWS Athena per indagini approfondite, lo sfruttamento dell'esclusione della registrazione delle configurazioni e una gestione attenta dei periodi di retention, le organizzazioni possono ottenere insight granulari sui costi di AWS Config, mantenendo al contempo una solida visibilità sull'infrastruttura. Il punto non è eliminare il monitoraggio, ma ottimizzare cosa e come si traccia. Comprendendo i pattern di modifica delle proprie risorse e registrando le configurazioni in modo selettivo, può trovare il giusto equilibrio tra un monitoraggio completo e una gestione dei costi efficace.

Se desidera sfruttare al massimo il potenziale di AWS Config o è interessato ai nostri servizi, non esiti a contattarci. Può farlo da qui.