{"id":7772,"date":"2025-04-02T12:31:45","date_gmt":"2025-04-02T10:31:45","guid":{"rendered":"https:\/\/blog.besharp.it\/?p=7772"},"modified":"2025-04-02T12:56:52","modified_gmt":"2025-04-02T10:56:52","slug":"le-insidie-di-aws-cloudtrail-trappole-nascoste-e-best-practices-essenziali","status":"publish","type":"post","link":"https:\/\/blog.besharp.it\/it\/le-insidie-di-aws-cloudtrail-trappole-nascoste-e-best-practices-essenziali\/","title":{"rendered":"Le insidie di AWS CloudTrail: Trappole Nascoste e Best Practices Essenziali"},"content":{"rendered":"\n

Intro<\/h2>\n\n\n\n

Quante volte ci \u00e8 capitato di dover risalire ad azioni fatte in un ambiente AWS cercando di ricostruire l\u2019accaduto e capire chi ha fatto cosa? <\/p>\n\n\n\n

E quante volte abbiamo abbandonato l\u2019investigazione senza cavare un ragno dal buco? <\/p>\n\n\n\n

Molti di voi si saranno gi\u00e0 visti in questa situazione, soprattutto coloro che lavorano su account AWS condivisi da team numerosi, o, addirittura, su account AWS dedicati a pi\u00f9 progetti e su cui lavorano pi\u00f9 consulenti esterni.<\/p>\n\n\n\n

In alcuni casi, quando la governance di un ambiente AWS non \u00e8 ben strutturata, bisogna ricorrere a dei metodi alternativi per poter risalire alla root cause di un problema. Per fare questo utilizzeremo uno dei miei servizi preferiti: AWS CloudTrail.<\/p>\n\n\n\n

In questo articolo andremo ad analizzare qual \u00e8 il setup tipico di AWS CloudTrail in un account\/organization AWS, quali sono alcuni problemi tipici che potremmo incontrare nell\u2019utilizzo quotidiano, e quali sono gli accorgimenti da prendere per poter facilitare il lavoro e superare i limiti di un setup standard.<\/p>\n\n\n\n

Non c\u2019\u00e8 il Trail<\/h2>\n\n\n\n

Il primo dei problemi pi\u00f9 comuni \u00e8 l\u2019assenza del Trail stesso. <\/p>\n\n\n\n

Capita spesso di dover risalire all\u2019ownership di una particolare risorsa AWS per poter chiedere pi\u00f9 informazioni a riguardo. Purtroppo per\u00f2 capita spesso di non avere alcuna evidenza nei log di AWS CloudTrail perch\u00e9 la risorsa \u00e8 stata creata tempo prima; il servizio, infatti, tiene di default solo lo storico degli ultimi 90 giorni.<\/p>\n\n\n\n

Lesson learned:<\/strong> all\u2019apertura di un account AWS, impostare sempre un Trail per tenere uno storico a lungo termine di tutte le attivit\u00e0 nell\u2019account.<\/em><\/p>\n\n\n\n

Setup iniziale<\/h2>\n\n\n\n

Secondo le best practice di AWS Cloudtrail, dovremmo attivare un Trail e predisporre un Bucket S3 per lo storage a lungo termine.<\/p>\n\n\n\n

D\u2019altro canto, secondo le best practice di Amazon S3 dovremmo anche prevedere delle lifecycle policy per variare le storage class gli oggetti memorizzati in base all\u2019utilizzo che ne facciamo.<\/p>\n\n\n\n

Per punti bonus possiamo anche creare una tabella Amazon Athena con lo schema di default suggerito da AWS per poter fare query pi\u00f9 comodamente.<\/p>\n\n\n\n

\u201cOk, sto facendo la mia query su Athena, ma non vedo risultati oltre una certa data\u201d<\/h2>\n\n\n\n

Capita di voler investigare su un\u2019azione accaduta in un particolare giorno; andiamo quindi a effettuare una query filtrando per quello specifico arco temporale e\u2026. scopriamo che la query non presenta nessun risultato.<\/p>\n\n\n\n

Strano\u2026<\/em>”\u00a0 \u2013 average DevOps<\/p>\n\n\n\n

Un occhio poco attento pu\u00f2 trarre conclusioni affrettate riguardo all\u2019assenza del dato cercato. Ma se andassimo a controllare i log direttamente nel bucket S3, vedremmo invece che quel dato esiste: i file sono stati messi nel tier Glacier Flexible Retrieval.<\/p>\n\n\n\n

Lesson learned:<\/strong> una query su una tabella Athena di default ignora tutti gli oggetti in S3 Glacier Flexible Retrieval e in S3 Glacier Deep Archive. Athena \u00e8 in grado di effettuare query su questi file ma \u00e8 necessario prima abilitare questa opzione<\/a> per la specifica tabella che si vuole interrogare.<\/em><\/p>\n\n\n\n

\u201cSto cercando chi ha sovrascritto il mio record su Route53 ma non trovo niente\u201d.<\/h2>\n\n\n\n

Spesso cerchiamo delle azioni su particolari servizi di AWS (ad esempio IAM, Route53, ecc.), ma non troviamo niente. <\/p>\n\n\n\n

Perch\u00e8? <\/p>\n\n\n\n

Eppure abbiamo abilitato il Trail come da best practice. <\/p>\n\n\n\n

Alcune azioni vengono tracciate solo nella region North Virginia perch\u00e8 relative a servizi global;<\/em> \u00e8 il caso ad esempio di modifiche ai record Route53, creazione di IAM Roles, creazione di CloudFront Distributions, ecc…<\/p>\n\n\n\n

Lesson learned:<\/strong> creare il Trail con la feature multi-region abilitata e ricordarsi che i servizi AWS globali sono loggati in North Virginia.<\/em><\/p>\n\n\n\n

\u201cHo un sacco di log e le mie query sono molto lente, come faccio?\u201d<\/h2>\n\n\n\n

La risposta \u00e8 il partitioning. <\/p>\n\n\n\n

L\u2019alberatura usata da CloudTrail per memorizzare i log su S3 \u00e8:<\/p>\n\n\n\n

s3:\/\/<bucket-name>\/<optional-prefix>\/AWSLogs\/<account-id>\/CloudTrail\/<region>\/<year>\/<month>\/<day>\/<log-file>.json.gz<\/code><\/pre>\n\n\n\n

quindi \u00e8 gi\u00e0 ben strutturata, ma questo non basta; per eseguire query in modo efficiente dobbiamo partizionare i dati anche su Athena e abbiamo due opzioni per farlo:<\/p>\n\n\n\n

1. Definire le partizioni in modo manuale<\/a> con `ALTER TABLE ADD PARTITION`<\/p>\n\n\n\n

In questo modo, possiamo andare ad effettuare query per ogni partizione creata, ma abbiamo anche un lato negativo: la creazione e la gestione delle partizioni in maniera manuale aggiunge overhead e complessit\u00e0.<\/p>\n\n\n\n

2. Usare la partition projection<\/a><\/p>\n\n\n\n

Dato che la struttura dei log di AWS CloudTrail \u00e8 nota a priori, Athena pu\u00f2 fare un\u2019inferenza e capire la partizione di destinazione in automatico. Questo ci solleva dall\u2019incarico di dover aggiungere manualmente le nuove partizioni.<\/p>\n\n\n\n

Conlusione<\/h2>\n\n\n\n

Abbiamo visto alcune peculiarit\u00e0 e dettagli poco noti del servizio AWS CloudTrail e dei servizi annessi Amazon S3 e Amazon Athena. Abbiamo imparato che, in alcuni casi, le impostazioni delle lifecycle policy di S3 ci possono intralciare nell\u2019utilizzo quotidiano e che dobbiamo bilanciare i costi e la data availability. Abbiamo visto che, grazie all\u2019utilizzo delle partizioni, \u00e8 possibile ottimizzare le query su Athena per avere pi\u00f9 performance con poco effort di gestione.<\/p>\n\n\n\n

Eravate a conoscenza di questi aspetti? <\/p>\n\n\n\n

Vi siete scontrati con altri limiti o – speriamo – con ulteriori best practices?<\/p>\n\n\n\n

Fatecelo sapere! <\/p>\n\n\n\n


\n\n\n\n

About Proud2beCloud<\/h4>\n\n\n\n

Proud2beCloud \u00e8 il blog di beSharp<\/a>, APN Premier Consulting Partner italiano esperto nella progettazione, implementazione e gestione di infrastrutture Cloud complesse e servizi AWS avanzati. Prima di essere scrittori, siamo Solutions Architect che, dal 2007, lavorano quotidianamente con i servizi AWS. Siamo innovatori alla costante ricerca della soluzione pi\u00f9 all’avanguardia per noi e per i nostri clienti. Su Proud2beCloud condividiamo regolarmente i nostri migliori spunti con chi come noi, per lavoro o per passione, lavora con il Cloud di AWS. Partecipa alla discussione!<\/p>\n","protected":false},"excerpt":{"rendered":"

Intro Quante volte ci \u00e8 capitato di dover risalire ad azioni fatte in un ambiente AWS cercando di ricostruire l\u2019accaduto […]<\/p>\n","protected":false},"author":17,"featured_media":7777,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[467],"tags":[726],"class_list":["post-7772","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-management-governance","tag-aws-cloudtrail-it"],"yoast_head":"\nLe insidie di AWS CloudTrail: Trappole Nascoste e Best Practices Essenziali - Proud2beCloud Blog<\/title>\n<meta name=\"description\" content=\"AWS CloudTrail: come oltrepassare le limitazioni e le possibili criticit\u00e0 che un setup standard pu\u00f2 comportare.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.besharp.it\/it\/le-insidie-di-aws-cloudtrail-trappole-nascoste-e-best-practices-essenziali\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Le insidie di AWS CloudTrail: Trappole Nascoste e Best Practices Essenziali\" \/>\n<meta property=\"og:description\" content=\"AWS CloudTrail: come oltrepassare le limitazioni e le possibili criticit\u00e0 che un setup standard pu\u00f2 comportare.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.besharp.it\/it\/le-insidie-di-aws-cloudtrail-trappole-nascoste-e-best-practices-essenziali\/\" \/>\n<meta property=\"og:site_name\" content=\"Proud2beCloud Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-04-02T10:31:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-04-02T10:56:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.besharp.it\/wp-content\/uploads\/2025\/04\/Copertina-per-Social-30.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Mehmed Dourmouch\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Le insidie di AWS CloudTrail: Trappole Nascoste e Best Practices Essenziali\" \/>\n<meta name=\"twitter:description\" content=\"AWS CloudTrail: come oltrepassare le limitazioni e le possibili criticit\u00e0 che un setup standard pu\u00f2 comportare.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/blog.besharp.it\/wp-content\/uploads\/2025\/04\/Copertina-per-Social-30.jpg\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mehmed Dourmouch\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.besharp.it\/it\/le-insidie-di-aws-cloudtrail-trappole-nascoste-e-best-practices-essenziali\/\",\"url\":\"https:\/\/blog.besharp.it\/it\/le-insidie-di-aws-cloudtrail-trappole-nascoste-e-best-practices-essenziali\/\",\"name\":\"Le insidie di AWS CloudTrail: Trappole Nascoste e Best Practices Essenziali - Proud2beCloud Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.besharp.it\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.besharp.it\/it\/le-insidie-di-aws-cloudtrail-trappole-nascoste-e-best-practices-essenziali\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.besharp.it\/it\/le-insidie-di-aws-cloudtrail-trappole-nascoste-e-best-practices-essenziali\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.besharp.it\/wp-content\/uploads\/2025\/04\/Copertina-per-Blog-31.jpg\",\"datePublished\":\"2025-04-02T10:31:45+00:00\",\"dateModified\":\"2025-04-02T10:56:52+00:00\",\"author\":{\"@id\":\"https:\/\/blog.besharp.it\/it\/#\/schema\/person\/78fb370d0b81a13b4d125ff596518191\"},\"description\":\"AWS CloudTrail: come oltrepassare le limitazioni e le possibili criticit\u00e0 che un setup standard pu\u00f2 comportare.\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.besharp.it\/it\/le-insidie-di-aws-cloudtrail-trappole-nascoste-e-best-practices-essenziali\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.besharp.it\/it\/le-insidie-di-aws-cloudtrail-trappole-nascoste-e-best-practices-essenziali\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/blog.besharp.it\/it\/le-insidie-di-aws-cloudtrail-trappole-nascoste-e-best-practices-essenziali\/#primaryimage\",\"url\":\"https:\/\/blog.besharp.it\/wp-content\/uploads\/2025\/04\/Copertina-per-Blog-31.jpg\",\"contentUrl\":\"https:\/\/blog.besharp.it\/wp-content\/uploads\/2025\/04\/Copertina-per-Blog-31.jpg\",\"width\":1600,\"height\":900},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.besharp.it\/it\/le-insidie-di-aws-cloudtrail-trappole-nascoste-e-best-practices-essenziali\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.besharp.it\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Le insidie di AWS CloudTrail: Trappole Nascoste e Best Practices Essenziali\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.besharp.it\/it\/#website\",\"url\":\"https:\/\/blog.besharp.it\/it\/\",\"name\":\"Proud2beCloud Blog\",\"description\":\"il blog di beSharp\",\"alternateName\":\"Proud2beCloud Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.besharp.it\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.besharp.it\/it\/#\/schema\/person\/78fb370d0b81a13b4d125ff596518191\",\"name\":\"Mehmed Dourmouch\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/blog.besharp.it\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c88fc04e52b5db309092da7fba855aee?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c88fc04e52b5db309092da7fba855aee?s=96&d=mm&r=g\",\"caption\":\"Mehmed Dourmouch\"},\"description\":\"DevOps Engineer. Very Dev, not so Ops. I like to break things and see what happens, I also automate everything. I often participate in cybersecurity CTFs and in my free time I produce cacophony with my guitar.\",\"url\":\"https:\/\/blog.besharp.it\/it\/author\/mehmed-dourmouch\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Le insidie di AWS CloudTrail: Trappole Nascoste e Best Practices Essenziali - Proud2beCloud Blog","description":"AWS CloudTrail: come oltrepassare le limitazioni e le possibili criticit\u00e0 che un setup standard pu\u00f2 comportare.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.besharp.it\/it\/le-insidie-di-aws-cloudtrail-trappole-nascoste-e-best-practices-essenziali\/","og_locale":"it_IT","og_type":"article","og_title":"Le insidie di AWS CloudTrail: Trappole Nascoste e Best Practices Essenziali","og_description":"AWS CloudTrail: come oltrepassare le limitazioni e le possibili criticit\u00e0 che un setup standard pu\u00f2 comportare.","og_url":"https:\/\/blog.besharp.it\/it\/le-insidie-di-aws-cloudtrail-trappole-nascoste-e-best-practices-essenziali\/","og_site_name":"Proud2beCloud Blog","article_published_time":"2025-04-02T10:31:45+00:00","article_modified_time":"2025-04-02T10:56:52+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/blog.besharp.it\/wp-content\/uploads\/2025\/04\/Copertina-per-Social-30.jpg","type":"image\/jpeg"}],"author":"Mehmed Dourmouch","twitter_card":"summary_large_image","twitter_title":"Le insidie di AWS CloudTrail: Trappole Nascoste e Best Practices Essenziali","twitter_description":"AWS CloudTrail: come oltrepassare le limitazioni e le possibili criticit\u00e0 che un setup standard pu\u00f2 comportare.","twitter_image":"https:\/\/blog.besharp.it\/wp-content\/uploads\/2025\/04\/Copertina-per-Social-30.jpg","twitter_misc":{"Scritto da":"Mehmed Dourmouch","Tempo di lettura stimato":"5 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.besharp.it\/it\/le-insidie-di-aws-cloudtrail-trappole-nascoste-e-best-practices-essenziali\/","url":"https:\/\/blog.besharp.it\/it\/le-insidie-di-aws-cloudtrail-trappole-nascoste-e-best-practices-essenziali\/","name":"Le insidie di AWS CloudTrail: Trappole Nascoste e Best Practices Essenziali - Proud2beCloud Blog","isPartOf":{"@id":"https:\/\/blog.besharp.it\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.besharp.it\/it\/le-insidie-di-aws-cloudtrail-trappole-nascoste-e-best-practices-essenziali\/#primaryimage"},"image":{"@id":"https:\/\/blog.besharp.it\/it\/le-insidie-di-aws-cloudtrail-trappole-nascoste-e-best-practices-essenziali\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.besharp.it\/wp-content\/uploads\/2025\/04\/Copertina-per-Blog-31.jpg","datePublished":"2025-04-02T10:31:45+00:00","dateModified":"2025-04-02T10:56:52+00:00","author":{"@id":"https:\/\/blog.besharp.it\/it\/#\/schema\/person\/78fb370d0b81a13b4d125ff596518191"},"description":"AWS CloudTrail: come oltrepassare le limitazioni e le possibili criticit\u00e0 che un setup standard pu\u00f2 comportare.","breadcrumb":{"@id":"https:\/\/blog.besharp.it\/it\/le-insidie-di-aws-cloudtrail-trappole-nascoste-e-best-practices-essenziali\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.besharp.it\/it\/le-insidie-di-aws-cloudtrail-trappole-nascoste-e-best-practices-essenziali\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/blog.besharp.it\/it\/le-insidie-di-aws-cloudtrail-trappole-nascoste-e-best-practices-essenziali\/#primaryimage","url":"https:\/\/blog.besharp.it\/wp-content\/uploads\/2025\/04\/Copertina-per-Blog-31.jpg","contentUrl":"https:\/\/blog.besharp.it\/wp-content\/uploads\/2025\/04\/Copertina-per-Blog-31.jpg","width":1600,"height":900},{"@type":"BreadcrumbList","@id":"https:\/\/blog.besharp.it\/it\/le-insidie-di-aws-cloudtrail-trappole-nascoste-e-best-practices-essenziali\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.besharp.it\/it\/"},{"@type":"ListItem","position":2,"name":"Le insidie di AWS CloudTrail: Trappole Nascoste e Best Practices Essenziali"}]},{"@type":"WebSite","@id":"https:\/\/blog.besharp.it\/it\/#website","url":"https:\/\/blog.besharp.it\/it\/","name":"Proud2beCloud Blog","description":"il blog di beSharp","alternateName":"Proud2beCloud Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.besharp.it\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/blog.besharp.it\/it\/#\/schema\/person\/78fb370d0b81a13b4d125ff596518191","name":"Mehmed Dourmouch","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/blog.besharp.it\/it\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c88fc04e52b5db309092da7fba855aee?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c88fc04e52b5db309092da7fba855aee?s=96&d=mm&r=g","caption":"Mehmed Dourmouch"},"description":"DevOps Engineer. Very Dev, not so Ops. I like to break things and see what happens, I also automate everything. I often participate in cybersecurity CTFs and in my free time I produce cacophony with my guitar.","url":"https:\/\/blog.besharp.it\/it\/author\/mehmed-dourmouch\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/posts\/7772","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/comments?post=7772"}],"version-history":[{"count":1,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/posts\/7772\/revisions"}],"predecessor-version":[{"id":7773,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/posts\/7772\/revisions\/7773"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/media\/7777"}],"wp:attachment":[{"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/media?parent=7772"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/categories?post=7772"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/tags?post=7772"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}