<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: sylvainbruas</title>
    <description>The latest articles on DEV Community by sylvainbruas (@sylvainbruas).</description>
    <link>https://dev.to/sylvainbruas</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1362992%2F238c4231-8472-4232-b8bb-9ced0775153b.png</url>
      <title>DEV Community: sylvainbruas</title>
      <link>https://dev.to/sylvainbruas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sylvainbruas"/>
    <language>en</language>
    <item>
      <title>AWS European Sovereign Cloud (partie 2) : défis techniques, opérationnels et recommandations pratiques</title>
      <dc:creator>sylvainbruas</dc:creator>
      <pubDate>Mon, 11 May 2026 12:14:57 +0000</pubDate>
      <link>https://dev.to/sylvainbruas/aws-european-sovereign-cloud-partie-2-defis-techniques-operationnels-et-recommandations-gbp</link>
      <guid>https://dev.to/sylvainbruas/aws-european-sovereign-cloud-partie-2-defis-techniques-operationnels-et-recommandations-gbp</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhlvsihk6n7sa56m070y2.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhlvsihk6n7sa56m070y2.webp" alt="AWS European Sovereign Cloud (partie 2) : défis techniques, opérationnels et recommandations pratiques" width="800" height="808"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Cet article est la seconde partie de notre analyse d'AWS European Sovereign Cloud. Dans la &lt;a href="https://dev.to/blog/2026/04/esc-part1"&gt;première partie&lt;/a&gt;, nous avons posé les fondations : ce qu'est la souveraineté numérique (et ce qu'elle n'est pas), l'architecture de l'ESC, les garanties offertes par Nitro, la stratégie de chiffrement, les enjeux sectoriels et la question de SecNumCloud.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Maintenant, passons aux choses concrètes. Quand on ouvre la console ESC pour la première fois, qu'est-ce qui change vraiment ? Quels sont les pièges à éviter et les patterns qui fonctionnent ?&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Les défis techniques
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Parité de services
&lt;/h3&gt;

&lt;p&gt;L'un des défis techniques majeurs de l'ESC est la parité de services avec AWS commercial. Au lancement, seul un sous-ensemble des services AWS est disponible. Cela signifie que les architectures conçues pour AWS commercial ne sont pas nécessairement transposables telles quelles vers l'ESC.&lt;/p&gt;

&lt;p&gt;Les équipes d'architecture doivent :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inventorier les services utilisés et vérifier leur disponibilité dans l'ESC&lt;/li&gt;
&lt;li&gt;Identifier des alternatives pour les services manquants&lt;/li&gt;
&lt;li&gt;Adapter les patterns d'architecture en conséquence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Par exemple, si votre architecture repose sur &lt;a href="https://docs.aws.amazon.com/opensearch-service/" rel="noopener noreferrer"&gt;Amazon OpenSearch Serverless&lt;/a&gt;, ce service n'est pas disponible au lancement de l'ESC. D'autres services comme &lt;a href="https://docs.aws.amazon.com/bedrock/" rel="noopener noreferrer"&gt;Amazon Bedrock&lt;/a&gt; sont présents mais avec un catalogue de modèles et de fonctionnalités plus limité que dans la partition commerciale — il est donc essentiel de vérifier la couverture exacte avant de s'engager.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gestion des identités et des accès
&lt;/h3&gt;

&lt;p&gt;La séparation du plan de contrôle implique que les comptes AWS ESC sont distincts des comptes AWS commerciaux. L'ESC dispose de son propre service &lt;a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html" rel="noopener noreferrer"&gt;IAM&lt;/a&gt;, entièrement séparé de celui de la partition commerciale. IAM dans l'ESC est global au sein de la partition ESC, exactement comme IAM est global au sein de la partition commerciale. Mais les deux IAM sont cloisonnés : aucune identité, aucun rôle, aucune politique ne traverse la frontière entre partitions.&lt;/p&gt;

&lt;p&gt;Cela a des implications majeures :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://docs.aws.amazon.com/organizations/" rel="noopener noreferrer"&gt;AWS Organizations&lt;/a&gt;&lt;/strong&gt; : les organisations ESC sont séparées des organisations commerciales. Vous gérez deux hiérarchies de comptes indépendantes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IAM séparé&lt;/strong&gt; : les rôles, politiques et utilisateurs IAM créés dans la partition commerciale n'existent pas dans l'ESC et vice versa. Les endpoints IAM de l'ESC utilisent le domaine &lt;code&gt;amazonaws.eu&lt;/code&gt; (par exemple &lt;code&gt;iam.eusc-de-east-1.amazonaws.eu&lt;/code&gt;). L'ensemble des identités doit être recréé dans l'ESC.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSO/Federation&lt;/strong&gt; : les intégrations avec les fournisseurs d'identité doivent être reconfigurées. Il est possible de pointer les deux instances &lt;a href="https://docs.aws.amazon.com/singlesignon/" rel="noopener noreferrer"&gt;IAM Identity Center&lt;/a&gt; (commerciale et ESC) vers le même IdP d'entreprise (Entra ID, Okta, etc.), mais les permission sets, les assignments de comptes et les groupes doivent être gérés séparément dans chaque partition.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-partition access&lt;/strong&gt; : pas de possibilité d'accès croisé entre comptes ESC et comptes commerciaux. Un rôle dans &lt;code&gt;arn:aws:iam::123456789012:role/MyRole&lt;/code&gt; ne peut pas assumer un rôle dans &lt;code&gt;arn:aws-eusc:iam::987654321098:role/MyRole&lt;/code&gt; — les deux partitions ne se voient tout simplement pas. C'est le même cloisonnement qui existe entre AWS commercial et &lt;a href="https://docs.aws.amazon.com/govcloud-us/" rel="noopener noreferrer"&gt;AWS GovCloud&lt;/a&gt; ou AWS Chine.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyvwzgequf1k0zjruuwqj.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyvwzgequf1k0zjruuwqj.webp" alt="Gestion des identités et des accès AWS ESC" width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Réseau et connectivité
&lt;/h3&gt;

&lt;p&gt;La séparation réseau entre l'ESC et AWS commercial pose des défis de connectivité :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pas de &lt;a href="https://docs.aws.amazon.com/vpc/" rel="noopener noreferrer"&gt;VPC&lt;/a&gt; peering entre ESC et régions commerciales&lt;/li&gt;
&lt;li&gt;Pas de &lt;a href="https://docs.aws.amazon.com/vpc/latest/tgw/" rel="noopener noreferrer"&gt;Transit Gateway&lt;/a&gt; partagé&lt;/li&gt;
&lt;li&gt;Les connexions &lt;a href="https://docs.aws.amazon.com/directconnect/" rel="noopener noreferrer"&gt;Direct Connect&lt;/a&gt; doivent être dédiées&lt;/li&gt;
&lt;li&gt;Les architectures multi-régions doivent être repensées&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Liaison réseau entre l'ESC et la partition commerciale
&lt;/h3&gt;

&lt;p&gt;La question de la connectivité entre l'ESC et AWS commercial est cruciale pour les entreprises en mode hybride. Puisque les deux partitions sont logiquement et physiquement séparées, il n'existe pas de mécanisme natif de peering interne — pas de VPC peering, pas de Transit Gateway peering, pas de &lt;a href="https://docs.aws.amazon.com/vpc/latest/privatelink/" rel="noopener noreferrer"&gt;PrivateLink&lt;/a&gt; entre partitions. Voici les options disponibles, détaillées dans l'article de référence d'AWS : &lt;a href="https://builder.aws.com/content/39IQ7P5k9lFISRIcglYzdSbSHJU/connectivity-patterns-between-aws-european-sovereign-cloud-and-aws-commercial-partition" rel="noopener noreferrer"&gt;Connectivity patterns between AWS European Sovereign Cloud and AWS commercial partition&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhid32oc9vu02ystze31f.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhid32oc9vu02ystze31f.webp" alt="Options réseau AWS ESC " width="800" height="623"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Option 1 : Connectivité via Internet avec chiffrement TLS natif
&lt;/h4&gt;

&lt;p&gt;Si l'application utilise nativement le chiffrement TLS (par exemple, du trafic API sur HTTPS/443), il est possible d'utiliser des &lt;a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html" rel="noopener noreferrer"&gt;Elastic IP addresses&lt;/a&gt; pour communiquer entre les partitions. C'est le pattern le plus performant et le plus simple à opérer : il ne nécessite pas de maintenir des appliances VPN sur des instances &lt;a href="https://docs.aws.amazon.com/ec2/" rel="noopener noreferrer"&gt;EC2&lt;/a&gt; ni de configurer un &lt;a href="https://docs.aws.amazon.com/directconnect/latest/UserGuide/direct-connect-gateways.html" rel="noopener noreferrer"&gt;Direct Connect Gateway&lt;/a&gt;. En revanche, cette option ne fournit pas de chiffrement au niveau de la couche transport réseau — la responsabilité du chiffrement en transit repose sur l'application.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff0zqoobhbc52n4hsuhua.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff0zqoobhbc52n4hsuhua.webp" alt="Option 1 réseau AWS ESC" width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Option 2 : VPN IPSec site-to-site entre partitions (service managé côté ESC)
&lt;/h4&gt;

&lt;p&gt;Ce pattern établit des tunnels VPN IPSec directement entre les deux partitions, sans passer par une infrastructure on-premises. Côté ESC, le tunnel est terminé par le service managé &lt;a href="https://docs.aws.amazon.com/vpn/latest/s2svpn/" rel="noopener noreferrer"&gt;AWS Site-to-Site VPN&lt;/a&gt;, attaché à un Transit Gateway — aucune appliance tierce n'est nécessaire dans la partition souveraine. Côté AWS commercial, une appliance virtuelle tierce (Cisco CSR, Palo Alto, Fortinet, StrongSwan, etc.) fait office de Customer Gateway et termine l'autre extrémité du tunnel. Le débit maximum par tunnel VPN est de 1,25 Gbps ; pour des besoins supérieurs, activez le routage ECMP (Equal-Cost Multi-Path) pour agréger le débit sur plusieurs connexions VPN. Ce pattern est adapté aux applications qui ne supportent pas le chiffrement au niveau applicatif ou qui ne doivent pas être exposées via un Internet Gateway.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2sgp7c2vjbr2az9aos1r.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2sgp7c2vjbr2az9aos1r.webp" alt="Option 2 réseau AWS ESC" width="800" height="489"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Option 3 : Connectivité via Direct Connect et infrastructure on-premises ou fournisseur de services
&lt;/h4&gt;

&lt;p&gt;Ce modèle hub-and-spoke route le trafic inter-partition via une infrastructure client connectée par AWS Direct Connect. Deux variantes existent :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Via un datacenter on-premises&lt;/strong&gt; : des connexions Direct Connect séparées relient chaque partition au datacenter, où des équipements réseau (firewalls, routeurs) contrôlent le trafic inter-partition.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Via un fournisseur de services cloud exchange&lt;/strong&gt; (Equinix, Digital Realty, etc.) : pour les organisations sans datacenter, une infrastructure gateway virtuelle hébergée chez le fournisseur assure le même rôle.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Le trafic est « hairpinné » via l'infrastructure client, ce qui ajoute de la latence, des coûts de transfert de données sortantes (DTO) et des frais de traitement Transit Gateway. Le Direct Connect Gateway est un construct global qui permet la connectivité vers n'importe quelle région AWS, mais ne propage pas les préfixes BGP entre les Transit Gateways associés.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F48w7y3s4gqtdjtqmo1wn.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F48w7y3s4gqtdjtqmo1wn.webp" alt="Option 3 réseau AWS ESC" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Option 4 : Transit VPC avec Transit Gateway Connect
&lt;/h4&gt;

&lt;p&gt;Ce pattern utilise un Transit VPC avec des appliances virtuelles tierces redondantes dans différentes zones de disponibilité, connectées au Transit Gateway via des attachments Transit Gateway Connect. Cette approche utilise BGP over GRE (Generic Routing Encapsulation) pour simplifier la connectivité avec le Transit Gateway. À noter que GRE ne fournit pas de chiffrement — si le chiffrement est nécessaire, il faut utiliser un VPN IPSec entre les appliances et le Transit Gateway (comme dans l'option 2).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu5dpoeccf283u03xd33y.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu5dpoeccf283u03xd33y.webp" alt="Option 4 réseau AWS ESC" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Option 5 : Pas de liaison directe (air gap logique)
&lt;/h4&gt;

&lt;p&gt;Pour les workloads les plus sensibles, la meilleure option peut être de ne pas établir de liaison réseau du tout entre l'ESC et la partition commerciale. Les données sont transférées via des mécanismes asynchrones contrôlés (export/import chiffré, files de messages avec validation), ce qui garantit une séparation maximale.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiwck481zliinpb96v5gb.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiwck481zliinpb96v5gb.webp" alt="Option 5 réseau AWS ESC" width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Backbone AWS et trafic inter-partition
&lt;/h4&gt;

&lt;p&gt;L'ESC dispose de son propre backbone séparé de celui de la partition commerciale (similaire à AWS Chine). Cette séparation d'infrastructure renforce le modèle de souveraineté de l'ESC.&lt;/p&gt;

&lt;h4&gt;
  
  
  Considérations importantes
&lt;/h4&gt;

&lt;p&gt;Quelle que soit l'option choisie, gardez à l'esprit :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;La latence sera plus élevée qu'entre deux régions commerciales&lt;/li&gt;
&lt;li&gt;Vous devez documenter et justifier chaque flux de données entre les partitions pour des raisons de conformité&lt;/li&gt;
&lt;li&gt;Les coûts de transfert de données s'appliquent dans les deux sens&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Observabilité et monitoring
&lt;/h3&gt;

&lt;p&gt;Les outils de monitoring centralisés (&lt;a href="https://docs.aws.amazon.com/cloudwatch/" rel="noopener noreferrer"&gt;Amazon CloudWatch&lt;/a&gt;, &lt;a href="https://docs.aws.amazon.com/cloudtrail/" rel="noopener noreferrer"&gt;AWS CloudTrail&lt;/a&gt;) fonctionnent de manière isolée dans l'ESC. Les entreprises qui ont investi dans des dashboards centralisés couvrant plusieurs régions AWS commerciales devront adapter leur approche pour intégrer les métriques de l'ESC.&lt;/p&gt;

&lt;h2&gt;
  
  
  Les défis opérationnels
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Le mode hybride : la complexité au quotidien
&lt;/h3&gt;

&lt;p&gt;C'est probablement le défi le plus sous-estimé. La plupart des entreprises ne migreront pas 100 % de leurs workloads vers l'ESC. Elles adopteront un mode hybride où certaines charges de travail (les plus sensibles) seront dans l'ESC, tandis que d'autres resteront dans AWS commercial.&lt;/p&gt;

&lt;p&gt;Cette hybridation crée une complexité opérationnelle considérable :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gestion de deux environnements distincts&lt;/strong&gt; : les équipes doivent maîtriser deux écosystèmes qui, bien que similaires, ont des différences subtiles (services disponibles, versions, limites).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Infrastructure as Code&lt;/strong&gt; : les templates Terraform ou &lt;a href="https://docs.aws.amazon.com/cloudformation/" rel="noopener noreferrer"&gt;CloudFormation&lt;/a&gt; doivent être adaptés pour gérer les deux environnements. Les modules doivent être conditionnels, les providers configurés différemment, et les pipelines CI/CD dupliqués ou paramétrés.&lt;/p&gt;

&lt;h4&gt;
  
  
  Exemple Terraform : déploiement sur la partition commerciale vs l'ESC
&lt;/h4&gt;

&lt;p&gt;Pour illustrer concrètement la différence, voici un exemple de déploiement d'une instance EC2 avec un bucket &lt;a href="https://docs.aws.amazon.com/s3/" rel="noopener noreferrer"&gt;S3&lt;/a&gt; sur les deux partitions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Déploiement sur AWS commercial (partition &lt;code&gt;aws&lt;/code&gt;) :&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight hcl"&gt;&lt;code&gt;&lt;span class="c1"&gt;# providers.tf - Partition commerciale&lt;/span&gt;
&lt;span class="nx"&gt;terraform&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;required_providers&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;aws&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;source&lt;/span&gt;  &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"hashicorp/aws"&lt;/span&gt;
      &lt;span class="nx"&gt;version&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"~&amp;gt; 5.0"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;provider&lt;/span&gt; &lt;span class="s2"&gt;"aws"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;region&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"eu-west-3"&lt;/span&gt; &lt;span class="c1"&gt;# Paris&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# main.tf - Ressources sur la partition commerciale&lt;/span&gt;
&lt;span class="nx"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_vpc"&lt;/span&gt; &lt;span class="s2"&gt;"main"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;cidr_block&lt;/span&gt;           &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"10.0.0.0/16"&lt;/span&gt;
  &lt;span class="nx"&gt;enable_dns_hostnames&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="nx"&gt;enable_dns_support&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="nx"&gt;tags&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;Name&lt;/span&gt;        &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"commercial-vpc"&lt;/span&gt;
    &lt;span class="nx"&gt;Environment&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"production"&lt;/span&gt;
    &lt;span class="nx"&gt;Partition&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"aws-commercial"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_subnet"&lt;/span&gt; &lt;span class="s2"&gt;"private"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;vpc_id&lt;/span&gt;            &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;aws_vpc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;
  &lt;span class="nx"&gt;cidr_block&lt;/span&gt;        &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"10.0.1.0/24"&lt;/span&gt;
  &lt;span class="nx"&gt;availability_zone&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"eu-west-3a"&lt;/span&gt;

  &lt;span class="nx"&gt;tags&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"commercial-private-subnet"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_instance"&lt;/span&gt; &lt;span class="s2"&gt;"app_server"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;ami&lt;/span&gt;           &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"ami-0a1b2c3d4e5f67890"&lt;/span&gt; &lt;span class="c1"&gt;# Amazon Linux 2023 - eu-west-3&lt;/span&gt;
  &lt;span class="nx"&gt;instance_type&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"m6i.large"&lt;/span&gt;
  &lt;span class="nx"&gt;subnet_id&lt;/span&gt;     &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;aws_subnet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;private&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;

  &lt;span class="nx"&gt;metadata_options&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;http_tokens&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"required"&lt;/span&gt; &lt;span class="c1"&gt;# IMDSv2 obligatoire&lt;/span&gt;
    &lt;span class="nx"&gt;http_endpoint&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"enabled"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nx"&gt;tags&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;Name&lt;/span&gt;        &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"app-server-commercial"&lt;/span&gt;
    &lt;span class="nx"&gt;Environment&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"production"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_s3_bucket"&lt;/span&gt; &lt;span class="s2"&gt;"data"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;bucket&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"mon-entreprise-data-commercial"&lt;/span&gt;

  &lt;span class="nx"&gt;tags&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;Name&lt;/span&gt;        &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"data-bucket-commercial"&lt;/span&gt;
    &lt;span class="nx"&gt;Partition&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"aws-commercial"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_s3_bucket_server_side_encryption_configuration"&lt;/span&gt; &lt;span class="s2"&gt;"data"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;bucket&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;aws_s3_bucket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;

  &lt;span class="nx"&gt;rule&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;apply_server_side_encryption_by_default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;sse_algorithm&lt;/span&gt;     &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"aws:kms"&lt;/span&gt;
      &lt;span class="nx"&gt;kms_master_key_id&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;aws_kms_key&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data_key&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;arn&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_kms_key"&lt;/span&gt; &lt;span class="s2"&gt;"data_key"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;description&lt;/span&gt;             &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Clé de chiffrement des données - Commercial"&lt;/span&gt;
  &lt;span class="nx"&gt;deletion_window_in_days&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;
  &lt;span class="nx"&gt;enable_key_rotation&lt;/span&gt;     &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Déploiement sur AWS ESC (partition &lt;code&gt;aws-eusc&lt;/code&gt;) :&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight hcl"&gt;&lt;code&gt;&lt;span class="c1"&gt;# providers.tf - Partition ESC&lt;/span&gt;
&lt;span class="nx"&gt;terraform&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;required_providers&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;aws&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;source&lt;/span&gt;  &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"hashicorp/aws"&lt;/span&gt;
      &lt;span class="nx"&gt;version&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"~&amp;gt; 6.0"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# Terraform 1.14+ avec le provider AWS 6.x résout nativement&lt;/span&gt;
&lt;span class="c1"&gt;# les endpoints ESC — il suffit de spécifier la région.&lt;/span&gt;
&lt;span class="c1"&gt;# Pas besoin de configurer les endpoints manuellement.&lt;/span&gt;
&lt;span class="nx"&gt;provider&lt;/span&gt; &lt;span class="s2"&gt;"aws"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;region&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"eusc-de-east-1"&lt;/span&gt; &lt;span class="c1"&gt;# Brandenburg, Allemagne&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# Data source pour construire les ARN dynamiquement&lt;/span&gt;
&lt;span class="c1"&gt;# Retourne "aws-eusc" dans l'ESC, "aws" dans la partition commerciale&lt;/span&gt;
&lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="s2"&gt;"aws_partition"&lt;/span&gt; &lt;span class="s2"&gt;"current"&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="s2"&gt;"aws_caller_identity"&lt;/span&gt; &lt;span class="s2"&gt;"current"&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;

&lt;span class="c1"&gt;# main.tf - Ressources sur la partition ESC&lt;/span&gt;
&lt;span class="nx"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_vpc"&lt;/span&gt; &lt;span class="s2"&gt;"main"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;cidr_block&lt;/span&gt;           &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"10.0.0.0/16"&lt;/span&gt;
  &lt;span class="nx"&gt;enable_dns_hostnames&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="nx"&gt;enable_dns_support&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="nx"&gt;tags&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;Name&lt;/span&gt;        &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"sovereign-vpc"&lt;/span&gt;
    &lt;span class="nx"&gt;Environment&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"production"&lt;/span&gt;
    &lt;span class="nx"&gt;Partition&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;aws_partition&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;partition&lt;/span&gt;
    &lt;span class="nx"&gt;DataClass&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"sensible"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_subnet"&lt;/span&gt; &lt;span class="s2"&gt;"private"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;vpc_id&lt;/span&gt;            &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;aws_vpc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;
  &lt;span class="nx"&gt;cidr_block&lt;/span&gt;        &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"10.0.1.0/24"&lt;/span&gt;
  &lt;span class="nx"&gt;availability_zone&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"eusc-de-east-1a"&lt;/span&gt;

  &lt;span class="nx"&gt;tags&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"sovereign-private-subnet"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_instance"&lt;/span&gt; &lt;span class="s2"&gt;"app_server"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;ami&lt;/span&gt;           &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"ami-0esc1a2b3c4d5e6f7"&lt;/span&gt; &lt;span class="c1"&gt;# AMI spécifique ESC&lt;/span&gt;
  &lt;span class="nx"&gt;instance_type&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"m6i.large"&lt;/span&gt;
  &lt;span class="nx"&gt;subnet_id&lt;/span&gt;     &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;aws_subnet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;private&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;

  &lt;span class="nx"&gt;metadata_options&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;http_tokens&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"required"&lt;/span&gt;
    &lt;span class="nx"&gt;http_endpoint&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"enabled"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nx"&gt;tags&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;Name&lt;/span&gt;        &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"app-server-sovereign"&lt;/span&gt;
    &lt;span class="nx"&gt;Environment&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"production"&lt;/span&gt;
    &lt;span class="nx"&gt;DataClass&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"sensible"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_s3_bucket"&lt;/span&gt; &lt;span class="s2"&gt;"data"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;bucket&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"mon-entreprise-data-sovereign"&lt;/span&gt;

  &lt;span class="nx"&gt;tags&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;Name&lt;/span&gt;        &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"data-bucket-sovereign"&lt;/span&gt;
    &lt;span class="nx"&gt;Partition&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;aws_partition&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;partition&lt;/span&gt;
    &lt;span class="nx"&gt;DataClass&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"sensible"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_s3_bucket_server_side_encryption_configuration"&lt;/span&gt; &lt;span class="s2"&gt;"data"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;bucket&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;aws_s3_bucket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;

  &lt;span class="nx"&gt;rule&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;apply_server_side_encryption_by_default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;sse_algorithm&lt;/span&gt;     &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"aws:kms"&lt;/span&gt;
      &lt;span class="nx"&gt;kms_master_key_id&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;aws_kms_key&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data_key&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;arn&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_kms_key"&lt;/span&gt; &lt;span class="s2"&gt;"data_key"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;description&lt;/span&gt;             &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Clé de chiffrement des données - Souverain"&lt;/span&gt;
  &lt;span class="nx"&gt;deletion_window_in_days&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;
  &lt;span class="nx"&gt;enable_key_rotation&lt;/span&gt;     &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="c1"&gt;# La clé reste exclusivement dans la partition ESC&lt;/span&gt;
  &lt;span class="c1"&gt;# Aucune réplication vers la partition commerciale&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# Exemple d'ARN dynamique — fonctionne sur toute partition&lt;/span&gt;
&lt;span class="nx"&gt;output&lt;/span&gt; &lt;span class="s2"&gt;"kms_key_arn"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;aws_kms_key&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data_key&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;arn&lt;/span&gt;
  &lt;span class="c1"&gt;# Produit : arn:aws-eusc:kms:eusc-de-east-1:123456789012:key/...&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Les différences clés à noter :&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;La région&lt;/strong&gt; : &lt;code&gt;eusc-de-east-1&lt;/code&gt; (Brandenburg, Allemagne) au lieu de &lt;code&gt;eu-west-3&lt;/code&gt;. Les noms de régions ESC suivent le format &lt;code&gt;eusc-{pays}-{direction}-{numéro}&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Le domaine DNS&lt;/strong&gt; : l'ESC utilise le domaine &lt;code&gt;amazonaws.eu&lt;/code&gt; au lieu de &lt;code&gt;amazonaws.com&lt;/code&gt;. Par exemple : &lt;code&gt;ec2.eusc-de-east-1.amazonaws.eu&lt;/code&gt;, &lt;code&gt;s3.eusc-de-east-1.amazonaws.eu&lt;/code&gt;. La console est accessible sur &lt;code&gt;console.amazonaws-eusc.eu&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;La partition ARN&lt;/strong&gt; : les ARN utilisent &lt;code&gt;aws-eusc&lt;/code&gt; au lieu de &lt;code&gt;aws&lt;/code&gt;. Par exemple : &lt;code&gt;arn:aws-eusc:s3:::mon-bucket&lt;/code&gt; vs &lt;code&gt;arn:aws:s3:::mon-bucket&lt;/code&gt;. Utilisez &lt;code&gt;data "aws_partition" "current" {}&lt;/code&gt; dans Terraform pour construire les ARN dynamiquement plutôt que de les hardcoder.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Les AMI&lt;/strong&gt; : les images machine sont spécifiques à l'ESC et ne sont pas partagées avec la partition commerciale.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Les credentials&lt;/strong&gt; : les identifiants IAM de la partition commerciale ne fonctionnent pas sur l'ESC et vice versa. Vous devez gérer deux jeux de credentials séparés. Si vous utilisez un pipeline CI/CD, configurez deux fournisseurs OIDC distincts, chacun pointant vers sa partition respective.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Terraform&lt;/strong&gt; : à partir de Terraform 1.14+ avec le provider AWS 6.x (et OpenTofu 1.11+), les endpoints ESC sont résolus nativement — il suffit de spécifier la région, sans configuration manuelle des endpoints.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Gestion des secrets et du chiffrement&lt;/strong&gt; : les clés &lt;a href="https://docs.aws.amazon.com/kms/" rel="noopener noreferrer"&gt;KMS&lt;/a&gt; de l'ESC ne sont pas accessibles depuis AWS commercial et vice versa. Les données chiffrées dans un environnement ne peuvent pas être déchiffrées dans l'autre sans mécanismes de re-chiffrement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Synchronisation des données&lt;/strong&gt; : si certaines données doivent être partagées entre les deux environnements (par exemple, des données de référence non sensibles), il faut mettre en place des mécanismes de réplication qui respectent les contraintes de souveraineté.&lt;/p&gt;

&lt;h3&gt;
  
  
  Compétences et formation
&lt;/h3&gt;

&lt;p&gt;L'ESC introduit de nouvelles contraintes que les équipes doivent intégrer :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Comprendre les différences entre ESC et AWS commercial&lt;/li&gt;
&lt;li&gt;Adapter les pratiques DevOps aux contraintes de séparation&lt;/li&gt;
&lt;li&gt;Former les équipes aux spécificités de la gouvernance souveraine&lt;/li&gt;
&lt;li&gt;Mettre à jour les runbooks et procédures opérationnelles&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Coûts et optimisation
&lt;/h3&gt;

&lt;p&gt;Le mode hybride a un impact sur les coûts :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Duplication d'infrastructure&lt;/strong&gt; : certains composants (monitoring, sécurité, réseau) doivent être déployés dans les deux environnements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Licences&lt;/strong&gt; : certains outils tiers peuvent nécessiter des licences séparées pour l'ESC.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Personnel&lt;/strong&gt; : la complexité accrue peut nécessiter des ressources supplémentaires.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prix de souveraineté&lt;/strong&gt; : les prix dans l'ESC sont estimés à 10-15 % supérieurs à ceux de la région Francfort (eu-central-1) pour des services comparables, en raison des contraintes opérationnelles supplémentaires liées à la souveraineté.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Facturation et séparation financière
&lt;/h3&gt;

&lt;p&gt;La facturation de l'ESC est entièrement séparée de celle de la partition commerciale. Voici les points clés :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Entité contractuelle distincte&lt;/strong&gt; : la facturation ESC est gérée par AWS EMEA SARL (Luxembourg), et non par AWS Inc. (Seattle) comme pour la partition commerciale. Cela a des implications pour les équipes procurement et finance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Facturation en euros&lt;/strong&gt; : contrairement à la partition commerciale (facturée en USD), l'ESC est facturé en euros.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Savings Plans et Reserved Instances non transférables&lt;/strong&gt; : les Enterprise Discount Programs (EDP), les Savings Plans et les Reserved Instances achetés dans la partition commerciale ne s'appliquent pas à l'ESC. Vous devez négocier et acheter des engagements séparés pour chaque partition.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comptes et Organizations séparés&lt;/strong&gt; : les comptes ESC ayant leur propre Organization, les tags d'allocation de coûts, les budgets et les rapports Cost and Usage Reports sont indépendants. Si votre équipe FinOps suit les dépenses cloud par account ID, elle devra adapter ses processus pour intégrer les deux partitions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Gouvernance et conformité
&lt;/h3&gt;

&lt;p&gt;La gouvernance d'un environnement hybride nécessite :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Des politiques claires de classification des données (quelles données vont dans l'ESC, lesquelles restent dans AWS commercial)&lt;/li&gt;
&lt;li&gt;Des processus de validation pour tout nouveau déploiement&lt;/li&gt;
&lt;li&gt;Un suivi continu de la conformité dans les deux environnements&lt;/li&gt;
&lt;li&gt;Des audits réguliers pour vérifier que les données sensibles ne « fuient » pas vers l'environnement commercial&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Recommandations pratiques
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Évaluer son besoin réel de souveraineté
&lt;/h3&gt;

&lt;p&gt;Avant de se lancer dans une migration vers l'ESC, il est essentiel de :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Classifier ses données&lt;/strong&gt; : toutes les données n'ont pas le même niveau de sensibilité. Seules les données véritablement sensibles (données personnelles critiques, secrets industriels, données régulées) justifient le surcoût et la complexité de l'ESC.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Identifier ses obligations réglementaires&lt;/strong&gt; : quelles réglementations s'appliquent réellement à votre organisation ? Êtes-vous soumis à la doctrine « Cloud au centre » ? À DORA ? À des exigences sectorielles spécifiques ?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Évaluer le risque géopolitique&lt;/strong&gt; : quelle est la probabilité réelle que vos données soient impactées par des mécanismes extraterritoriaux ? Ce risque justifie-t-il la complexité supplémentaire ?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Adopter une approche progressive
&lt;/h3&gt;

&lt;p&gt;Plutôt qu'une migration « big bang », privilégiez une approche incrémentale :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Commencez par un workload pilote bien délimité&lt;/li&gt;
&lt;li&gt;Validez les patterns d'architecture et les processus opérationnels&lt;/li&gt;
&lt;li&gt;Documentez les différences et les pièges rencontrés&lt;/li&gt;
&lt;li&gt;Étendez progressivement à d'autres workloads&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftnyx289zkhpeta1d9p1r.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftnyx289zkhpeta1d9p1r.webp" alt="Migration vers ESC" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Investir dans l'automatisation
&lt;/h3&gt;

&lt;p&gt;L'automatisation est la clé pour gérer la complexité du mode hybride :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Utilisez des abstractions dans votre Infrastructure as Code pour gérer les deux environnements&lt;/li&gt;
&lt;li&gt;Automatisez les contrôles de conformité (données au bon endroit, accès correctement configurés)&lt;/li&gt;
&lt;li&gt;Mettez en place des pipelines de déploiement qui gèrent nativement les deux cibles&lt;/li&gt;
&lt;li&gt;Automatisez la détection de drift entre les environnements&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Anticiper l'évolution du paysage
&lt;/h3&gt;

&lt;p&gt;Le domaine de la souveraineté cloud évolue rapidement :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Le schéma EUCS va probablement redéfinir les standards au niveau européen&lt;/li&gt;
&lt;li&gt;AWS va continuer à enrichir le catalogue de services de l'ESC&lt;/li&gt;
&lt;li&gt;Les réglementations nationales et européennes vont continuer à évoluer&lt;/li&gt;
&lt;li&gt;De nouvelles offres souveraines vont émerger&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Construisez vos architectures de manière à pouvoir évoluer avec ce paysage changeant.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;AWS European Sovereign Cloud représente une avancée significative dans la réponse aux enjeux de souveraineté numérique européenne. En proposant une infrastructure physiquement et logiquement séparée, opérée exclusivement par du personnel européen, AWS adresse une grande partie des préoccupations liées à la souveraineté des données.&lt;/p&gt;

&lt;p&gt;Cependant, il est crucial de ne pas confondre souveraineté et cybersécurité. L'ESC répond à des enjeux de gouvernance et de contrôle, pas à des problématiques de protection contre les cybermenaces (même si les deux se complètent).&lt;/p&gt;

&lt;p&gt;La question de SecNumCloud reste ouverte : pour les organisations soumises à la doctrine française, elle reste incontournable. Pour les autres, l'ESC offre un compromis pragmatique entre souveraineté et accès à l'écosystème AWS.&lt;/p&gt;

&lt;p&gt;Le véritable défi réside dans l'opérationnel : gérer un mode hybride entre AWS commercial et l'ESC demande une maturité organisationnelle, des compétences spécifiques et des investissements en automatisation. Les entreprises qui réussiront cette transition seront celles qui auront pris le temps de bien classifier leurs données, d'adopter une approche progressive et d'investir dans l'outillage nécessaire.&lt;/p&gt;

&lt;p&gt;La souveraineté numérique n'est pas une destination, c'est un chemin. Et ce chemin passe par des choix éclairés, une compréhension fine des enjeux, et une exécution rigoureuse.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>souverainete</category>
      <category>cloud</category>
      <category>architecture</category>
    </item>
    <item>
      <title>AWS European Sovereign Cloud (partie 1) : souveraineté numérique, architecture et enjeux</title>
      <dc:creator>sylvainbruas</dc:creator>
      <pubDate>Mon, 11 May 2026 12:14:42 +0000</pubDate>
      <link>https://dev.to/sylvainbruas/aws-european-sovereign-cloud-partie-1-souverainete-numerique-architecture-et-enjeux-44ap</link>
      <guid>https://dev.to/sylvainbruas/aws-european-sovereign-cloud-partie-1-souverainete-numerique-architecture-et-enjeux-44ap</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhlvsihk6n7sa56m070y2.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhlvsihk6n7sa56m070y2.webp" alt="AWS European Sovereign Cloud (partie 1) : souveraineté numérique, architecture et enjeux" width="800" height="808"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;La souveraineté numérique est devenue un sujet central dans les stratégies IT des entreprises européennes. Entre les réglementations de plus en plus strictes, les tensions géopolitiques et la dépendance croissante aux hyperscalers américains, les organisations doivent repenser leur approche du cloud. C'est dans ce contexte qu'Amazon Web Services a annoncé le lancement d'AWS European Sovereign Cloud (ESC), une infrastructure cloud dédiée, physiquement et logiquement séparée des régions AWS commerciales existantes.&lt;/p&gt;

&lt;p&gt;Mais qu'est-ce que la souveraineté numérique exactement ? En quoi diffère-t-elle de la cybersécurité ? Quels sont les véritables enjeux pour les entreprises qui envisagent de migrer vers cette offre ? Et surtout, comment naviguer dans la complexité d'un mode hybride entre AWS commercial et l'ESC ?&lt;/p&gt;

&lt;p&gt;Cette série de deux articles propose une analyse approfondie de ces questions. Dans cette première partie, nous abordons les fondamentaux : définition de la souveraineté, architecture de l'ESC, rôle de Nitro, stratégie de chiffrement, enjeux sectoriels et question de SecNumCloud. La &lt;a href="https://dev.to/blog/2026/05/esc-part2"&gt;seconde partie&lt;/a&gt; couvre les défis techniques, opérationnels et les recommandations pratiques.&lt;/p&gt;

&lt;h2&gt;
  
  
  Souveraineté numérique : de quoi parle-t-on ?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Définition et périmètre
&lt;/h3&gt;

&lt;p&gt;La souveraineté numérique désigne la capacité d'un État, d'une organisation ou d'un individu à exercer un contrôle sur ses données, ses infrastructures numériques et ses processus de décision dans l'espace numérique. Elle englobe plusieurs dimensions :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;La souveraineté des données&lt;/strong&gt; : savoir où sont stockées les données, qui y a accès, et sous quelle juridiction elles tombent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;La souveraineté opérationnelle&lt;/strong&gt; : garantir que l'exploitation des infrastructures est réalisée par du personnel soumis au droit européen, sans possibilité d'ingérence étrangère.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;La souveraineté technologique&lt;/strong&gt; : disposer de la maîtrise des technologies utilisées, ou a minima d'une indépendance suffisante pour ne pas être soumis à des décisions unilatérales d'un fournisseur étranger.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Ne pas confondre souveraineté et cybersécurité
&lt;/h3&gt;

&lt;p&gt;C'est probablement la confusion la plus répandue dans les discussions autour du cloud souverain. La cybersécurité et la souveraineté numérique sont deux concepts distincts, bien qu'ils se recoupent partiellement.&lt;/p&gt;

&lt;p&gt;La &lt;strong&gt;cybersécurité&lt;/strong&gt; concerne la protection des systèmes d'information contre les menaces : attaques, intrusions, fuites de données, ransomwares, etc. Elle répond à la question « comment protéger mes données contre les attaquants ? ».&lt;/p&gt;

&lt;p&gt;La &lt;strong&gt;souveraineté numérique&lt;/strong&gt; concerne le contrôle et la gouvernance des données et des infrastructures. Elle répond à la question « qui a le pouvoir de décision sur mes données et mes systèmes ? ».&lt;/p&gt;

&lt;p&gt;Un cloud peut être parfaitement sécurisé au sens cybersécurité (chiffrement, contrôle d'accès, détection d'intrusion) tout en posant des problèmes de souveraineté si, par exemple, un gouvernement étranger peut légalement contraindre le fournisseur à divulguer des données via des mécanismes comme le CLOUD Act américain.&lt;/p&gt;

&lt;p&gt;Inversement, un cloud souverain mal configuré peut présenter des failles de sécurité béantes. La souveraineté ne garantit pas la sécurité, et la sécurité ne garantit pas la souveraineté. Les deux sont nécessaires, mais aucun ne suffit seul.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5533bfqd10z4wu9ueosv.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5533bfqd10z4wu9ueosv.webp" alt="Souveraineté vs cybersécurité" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Le contexte réglementaire européen
&lt;/h3&gt;

&lt;p&gt;Plusieurs textes législatifs européens encadrent désormais la gestion des données et poussent vers plus de souveraineté :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RGPD (2018)&lt;/strong&gt; : protection des données personnelles, avec des restrictions sur les transferts hors UE.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NIS2 (2024)&lt;/strong&gt; : renforcement des obligations de cybersécurité pour les entités essentielles et importantes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DORA (2025)&lt;/strong&gt; : résilience opérationnelle numérique pour le secteur financier.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Act (2025)&lt;/strong&gt; : portabilité des données et conditions d'accès.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;EUCS (en cours)&lt;/strong&gt; : schéma européen de certification cloud, qui devrait définir des niveaux d'assurance pour les services cloud.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;C'est dans ce paysage réglementaire dense que s'inscrit l'offre AWS ESC.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzqcc4jez5akr0r93yt2p.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzqcc4jez5akr0r93yt2p.webp" alt="réglementations Européenne" width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  AWS European Sovereign Cloud : architecture et principes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Qu'est-ce que l'ESC ?
&lt;/h3&gt;

&lt;p&gt;AWS European Sovereign Cloud est une infrastructure cloud complètement séparée des régions AWS commerciales. Contrairement à une simple région européenne d'AWS (comme eu-west-1 à Dublin ou eu-central-1 à Francfort), l'ESC repose sur :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Une séparation physique&lt;/strong&gt; : des datacenters dédiés, situés exclusivement sur le territoire de l'Union européenne.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Une séparation logique&lt;/strong&gt; : un plan de contrôle indépendant, des systèmes de facturation séparés, et aucune interconnexion avec l'infrastructure AWS globale.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Un personnel exclusivement européen&lt;/strong&gt; : les opérations sont réalisées par des employés résidant dans l'UE et soumis au droit européen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Une gouvernance européenne&lt;/strong&gt; : les décisions opérationnelles sont prises au sein de l'UE, sans possibilité d'intervention depuis les États-Unis.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr8fux2wi7ppueotkymp9.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr8fux2wi7ppueotkymp9.webp" alt="ESC vs AWS Commercial" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Les services disponibles
&lt;/h3&gt;

&lt;p&gt;L'ESC propose progressivement les services AWS les plus utilisés, adaptés aux exigences de souveraineté. On y retrouve notamment &lt;a href="https://docs.aws.amazon.com/ec2/" rel="noopener noreferrer"&gt;Amazon Elastic Compute Cloud (EC2)&lt;/a&gt;, &lt;a href="https://docs.aws.amazon.com/s3/" rel="noopener noreferrer"&gt;Amazon Simple Storage Service (S3)&lt;/a&gt;, &lt;a href="https://docs.aws.amazon.com/rds/" rel="noopener noreferrer"&gt;Amazon Relational Database Service (RDS)&lt;/a&gt;, &lt;a href="https://docs.aws.amazon.com/lambda/" rel="noopener noreferrer"&gt;AWS Lambda&lt;/a&gt;, &lt;a href="https://docs.aws.amazon.com/vpc/" rel="noopener noreferrer"&gt;Amazon Virtual Private Cloud (VPC)&lt;/a&gt;, et les services de sécurité comme &lt;a href="https://docs.aws.amazon.com/kms/" rel="noopener noreferrer"&gt;AWS Key Management Service (KMS)&lt;/a&gt; avec des clés gérées exclusivement dans l'ESC.&lt;/p&gt;

&lt;p&gt;Cependant, tous les services AWS ne sont pas disponibles dans l'ESC. C'est l'un des défis majeurs que nous aborderons dans la &lt;a href="https://dev.to/blog/2026/05/esc-part2"&gt;seconde partie&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Pour suivre l'évolution des services disponibles et planifier vos architectures en fonction des capacités actuelles et à venir, AWS met à disposition un outil interactif : &lt;a href="https://builder.aws.com/build/capabilities" rel="noopener noreferrer"&gt;AWS Builder - Capabilities&lt;/a&gt;. Cet outil permet de visualiser les services disponibles par région et par partition, y compris l'ESC. Il est particulièrement utile pour les architectes qui doivent valider la faisabilité d'un déploiement sur l'ESC avant de s'engager dans une migration. Vous pouvez y filtrer par catégorie de service (compute, storage, database, analytics, etc.) et comparer la couverture entre la partition commerciale et la partition souveraine.&lt;/p&gt;

&lt;h3&gt;
  
  
  AWS Nitro System : la fondation sécuritaire de l'ESC
&lt;/h3&gt;

&lt;p&gt;Un élément fondamental de l'architecture de sécurité d'AWS — et donc de l'ESC — est le système AWS Nitro. Comprendre Nitro est essentiel pour appréhender les garanties de sécurité offertes par l'infrastructure souveraine.&lt;/p&gt;

&lt;h4&gt;
  
  
  Qu'est-ce que Nitro ?
&lt;/h4&gt;

&lt;p&gt;AWS Nitro System est l'architecture matérielle et logicielle sous-jacente à toutes les instances EC2 modernes. Il se compose de trois éléments principaux :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Les cartes Nitro&lt;/strong&gt; : des composants matériels dédiés qui gèrent le réseau, le stockage (&lt;a href="https://docs.aws.amazon.com/ebs/" rel="noopener noreferrer"&gt;EBS&lt;/a&gt;) et le monitoring, en les déchargeant complètement de l'hyperviseur.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Le Nitro Security Chip&lt;/strong&gt; : une puce dédiée qui contrôle l'accès au matériel serveur et fournit une racine de confiance matérielle (hardware root of trust).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Le Nitro Hypervisor&lt;/strong&gt; : un hyperviseur minimaliste et durci, dont la surface d'attaque est considérablement réduite par rapport aux hyperviseurs traditionnels.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwaw13uxjd019stkqdgb0.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwaw13uxjd019stkqdgb0.webp" alt="AWS Nitro" width="800" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Ce que Nitro apporte à la souveraineté
&lt;/h4&gt;

&lt;p&gt;Dans le contexte de l'ESC, Nitro offre des garanties de sécurité qui renforcent la posture de souveraineté :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Isolation cryptographique&lt;/strong&gt; : chaque instance EC2 est isolée au niveau matériel. Même un employé AWS ayant un accès physique au serveur ne peut pas accéder à la mémoire ou au stockage d'une instance en cours d'exécution. Le Nitro Security Chip empêche physiquement toute lecture de la mémoire volatile.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pas d'accès opérateur&lt;/strong&gt; : contrairement aux architectures traditionnelles où un administrateur système peut potentiellement accéder aux données des machines virtuelles, Nitro élimine cette possibilité par conception. Il n'existe aucun mécanisme — ni SSH, ni console de debug, ni port de maintenance — permettant à un opérateur AWS d'accéder au contenu d'une instance client.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Attestation matérielle&lt;/strong&gt; : &lt;a href="https://aws.amazon.com/fr/ec2/nitro/nitro-enclaves/" rel="noopener noreferrer"&gt;Nitro Enclaves&lt;/a&gt; permet d'exécuter du code dans un environnement d'exécution de confiance (TEE - Trusted Execution Environment) avec une attestation cryptographique. Cela garantit que le code exécuté n'a pas été altéré et que les données traitées restent confidentielles, même vis-à-vis de l'opérateur de l'infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Intégrité du firmware&lt;/strong&gt; : le Nitro Security Chip vérifie l'intégrité du firmware à chaque démarrage. Toute modification non autorisée du firmware est détectée et empêche le démarrage du serveur.&lt;/p&gt;

&lt;h4&gt;
  
  
  Une architecture reconnue dans la littérature académique
&lt;/h4&gt;

&lt;p&gt;Il est intéressant de noter que l'architecture Nitro n'est pas simplement un produit marketing. Elle est citée et étudiée dans des ouvrages de référence sur l'architecture des processeurs et la virtualisation matérielle. Le concept de déport des fonctions d'I/O vers des composants matériels dédiés (offloading), la séparation stricte entre le plan de données et le plan de contrôle au niveau silicium, et l'utilisation d'une racine de confiance matérielle sont des patterns architecturaux documentés dans la littérature sur les systèmes sur puce (SoC) et les architectures de sécurité matérielle.&lt;/p&gt;

&lt;p&gt;Des ouvrages comme &lt;em&gt;Computer Architecture: A Quantitative Approach&lt;/em&gt; (Hennessy &amp;amp; Patterson) abordent les principes fondamentaux sur lesquels repose Nitro : la spécialisation matérielle, les accélérateurs dédiés et l'isolation par le matériel. L'approche de Nitro — qui consiste à retirer l'hyperviseur du chemin critique des données et à confier les opérations sensibles à des puces dédiées — s'inscrit dans une tendance plus large de l'industrie vers les SmartNICs et les DPU (Data Processing Units), documentée dans les publications IEEE et ACM sur les architectures de datacenter modernes.&lt;/p&gt;

&lt;p&gt;Cette reconnaissance académique renforce la crédibilité des garanties de sécurité offertes par Nitro : il ne s'agit pas d'une simple promesse contractuelle, mais d'une impossibilité technique vérifiable et documentée.&lt;/p&gt;

&lt;h4&gt;
  
  
  Nitro et la réponse au CLOUD Act
&lt;/h4&gt;

&lt;p&gt;L'un des arguments les plus puissants de Nitro dans le contexte de la souveraineté est le suivant : même si, théoriquement, une autorité étrangère obtenait une injonction légale contre AWS, l'architecture Nitro rend techniquement impossible l'accès aux données en cours de traitement sur les instances. AWS ne peut pas fournir ce à quoi il n'a pas accès. Combiné à un chiffrement côté client avec des clés gérées par le client (Customer Managed Keys dans KMS ESC), cela crée une protection technique qui complète la protection juridique offerte par la séparation de l'ESC.&lt;/p&gt;

&lt;h3&gt;
  
  
  KMS, chiffrement au repos et souveraineté : faut-il des CMK pour être souverain ?
&lt;/h3&gt;

&lt;p&gt;Le chiffrement au repos est souvent présenté comme la pierre angulaire de la protection des données dans le cloud. Mais dans le contexte de la souveraineté, la question n'est pas simplement « mes données sont-elles chiffrées ? » mais plutôt « qui contrôle les clés de chiffrement ? ».&lt;/p&gt;

&lt;h4&gt;
  
  
  Les options de chiffrement sur AWS
&lt;/h4&gt;

&lt;p&gt;AWS propose plusieurs niveaux de chiffrement au repos :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SSE-S3 (Server-Side Encryption with S3 Managed Keys)&lt;/strong&gt; : AWS gère entièrement les clés. Le chiffrement est transparent pour l'utilisateur. C'est le niveau par défaut depuis janvier 2023.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSE-KMS avec clé gérée par AWS (aws/s3)&lt;/strong&gt; : AWS KMS gère la clé, mais vous bénéficiez d'un audit via &lt;a href="https://docs.aws.amazon.com/cloudtrail/" rel="noopener noreferrer"&gt;CloudTrail&lt;/a&gt; et de politiques de contrôle d'accès.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSE-KMS avec CMK (Customer Managed Key)&lt;/strong&gt; : vous créez et contrôlez la clé dans KMS. Vous définissez qui peut l'utiliser, vous pouvez la désactiver ou la supprimer, et vous contrôlez sa rotation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSE-C (Server-Side Encryption with Customer-Provided Keys)&lt;/strong&gt; : vous fournissez la clé à chaque requête via les headers HTTPS. AWS l'utilise pour chiffrer/déchiffrer en mémoire puis la supprime immédiatement — elle n'est jamais stockée côté AWS. Cette option est pleinement compatible avec l'ESC puisqu'elle repose uniquement sur le protocole S3 standard, sans dépendance à un service de gestion de clés spécifique à une partition.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chiffrement côté client (Client-Side Encryption)&lt;/strong&gt; : vous chiffrez les données dans votre application avant de les envoyer à AWS. AWS ne voit jamais les données en clair et ne manipule aucune clé. C'est l'option la plus agnostique : elle fonctionne sur toute partition (commerciale, ESC, GovCloud) puisque le chiffrement est entièrement décorrélé de l'infrastructure AWS. C'est aussi l'option qui offre le niveau de souveraineté le plus élevé — même avec un accès physique aux disques ou aux HSM, les données restent illisibles sans vos clés.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F55gurr9pwdur79iqlapp.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F55gurr9pwdur79iqlapp.webp" alt="Chiffrement" width="800" height="560"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Doit-on avoir des CMK pour être souverain ?
&lt;/h4&gt;

&lt;p&gt;C'est une question qui revient systématiquement dans les discussions sur la souveraineté, et la réponse mérite d'être nuancée.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;L'argument en faveur des CMK&lt;/strong&gt; : avec une Customer Managed Key, vous avez le contrôle total sur le cycle de vie de la clé. Vous pouvez la révoquer à tout moment, rendant les données illisibles. C'est un mécanisme de « kill switch » qui vous donne un pouvoir concret sur vos données, indépendamment du fournisseur cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mais les CMK ne suffisent pas à garantir la souveraineté&lt;/strong&gt; : une CMK dans KMS reste gérée par le service KMS d'AWS. Même si vous contrôlez la politique d'accès, c'est AWS qui opère le HSM (Hardware Security Module) sous-jacent. Dans la partition commerciale, un employé AWS aux États-Unis pourrait théoriquement avoir accès au plan de contrôle de KMS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dans l'ESC, la donne change&lt;/strong&gt; : les HSM de KMS dans l'ESC sont opérés exclusivement par du personnel européen, dans des datacenters européens, avec un plan de contrôle séparé. Une CMK dans KMS ESC offre donc un niveau de souveraineté significativement supérieur à une CMK dans KMS commercial.&lt;/p&gt;

&lt;h4&gt;
  
  
  Quand les CMK sont-elles indispensables ?
&lt;/h4&gt;

&lt;p&gt;Les CMK sont recommandées (voire obligatoires selon les contextes) dans les cas suivants :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Données régulées&lt;/strong&gt; : si votre régulateur exige que vous démontriez un contrôle sur les clés de chiffrement, les CMK sont nécessaires.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exigence de révocabilité&lt;/strong&gt; : si vous devez pouvoir rendre des données illisibles rapidement (en cas de fin de contrat, de litige, ou de compromission), les CMK vous donnent ce pouvoir.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit et traçabilité&lt;/strong&gt; : les CMK dans KMS génèrent des événements CloudTrail pour chaque utilisation, ce qui permet un audit complet de qui accède aux données et quand.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Séparation des responsabilités&lt;/strong&gt; : dans une organisation où l'équipe sécurité doit contrôler les clés indépendamment de l'équipe applicative, les CMK permettent cette séparation via les key policies.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Quand les CMK ne sont pas nécessaires ?
&lt;/h4&gt;

&lt;p&gt;Pour des données non sensibles ou des cas d'usage où la souveraineté n'est pas un enjeu (données publiques, caches, données temporaires), le chiffrement par défaut SSE-S3 ou SSE-KMS avec clé AWS est suffisant. Multiplier les CMK sans raison augmente la complexité opérationnelle (gestion de la rotation, risque de suppression accidentelle, coûts KMS) sans apporter de bénéfice réel.&lt;/p&gt;

&lt;h4&gt;
  
  
  La stratégie recommandée
&lt;/h4&gt;

&lt;p&gt;Une approche pragmatique consiste à :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Classifier les données&lt;/strong&gt; par niveau de sensibilité&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Appliquer des CMK&lt;/strong&gt; uniquement aux données sensibles et régulées&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Utiliser le chiffrement par défaut&lt;/strong&gt; pour les données non sensibles&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Envisager le chiffrement côté client&lt;/strong&gt; pour les données les plus critiques (secrets industriels, données de santé nominatives) — dans ce cas, même AWS avec un accès au HSM ne pourrait pas déchiffrer les données&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Les enjeux de la souveraineté pour les entreprises
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Enjeux stratégiques
&lt;/h3&gt;

&lt;p&gt;Pour les entreprises européennes, la souveraineté numérique n'est pas qu'une question de conformité réglementaire. C'est un enjeu stratégique à plusieurs niveaux :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Continuité d'activité&lt;/strong&gt; : en cas de sanctions internationales ou de tensions géopolitiques, une entreprise dépendante d'un cloud américain pourrait se voir couper l'accès à ses propres données.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Confiance des clients&lt;/strong&gt; : dans des secteurs comme la santé, la finance ou le secteur public, la localisation et le contrôle des données sont des critères de choix déterminants.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Propriété intellectuelle&lt;/strong&gt; : les données de R&amp;amp;D, les algorithmes propriétaires et les secrets industriels nécessitent un niveau de protection qui va au-delà de la simple cybersécurité.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Indépendance décisionnelle&lt;/strong&gt; : ne pas être soumis aux conditions générales d'utilisation d'un fournisseur qui peut modifier unilatéralement ses termes de service.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Enjeux sectoriels
&lt;/h3&gt;

&lt;p&gt;Certains secteurs sont particulièrement concernés par la souveraineté :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Secteur public et défense&lt;/strong&gt; : obligation légale de traiter certaines données sur le territoire national, sous contrôle d'entités habilitées.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Santé&lt;/strong&gt; : les données de santé sont soumises à des réglementations spécifiques (hébergement de données de santé en France, par exemple).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Finance&lt;/strong&gt; : DORA impose des exigences strictes sur la résilience et le contrôle des prestataires cloud.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Énergie et infrastructures critiques&lt;/strong&gt; : NIS2 renforce les obligations pour les opérateurs d'importance vitale.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Le défi législatif : SecNumCloud, nécessité ou superflu ?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Qu'est-ce que SecNumCloud ?
&lt;/h3&gt;

&lt;p&gt;SecNumCloud est une qualification délivrée par l'ANSSI (Agence Nationale de la Sécurité des Systèmes d'Information) en France. Elle atteste qu'un prestataire de services cloud respecte un ensemble d'exigences de sécurité et de souveraineté définies par le référentiel de l'ANSSI.&lt;/p&gt;

&lt;p&gt;La version 3.2 du référentiel, publiée en 2022, a introduit des critères de souveraineté stricts : le prestataire doit être une entité européenne, détenue majoritairement par des capitaux européens, et ne doit pas être soumis à des législations extraterritoriales (comme le CLOUD Act).&lt;/p&gt;

&lt;h3&gt;
  
  
  SecNumCloud est-il nécessaire ?
&lt;/h3&gt;

&lt;p&gt;La réponse dépend fortement du contexte :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pour les administrations françaises&lt;/strong&gt; : la doctrine « Cloud au centre » de l'État français impose l'utilisation de clouds qualifiés SecNumCloud pour les données sensibles. C'est donc une obligation réglementaire dans ce contexte.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pour les entreprises privées françaises&lt;/strong&gt; : SecNumCloud n'est pas une obligation légale générale. Cependant, certains secteurs régulés (santé, finance) peuvent avoir des exigences qui convergent vers ce type de qualification.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pour les entreprises européennes hors France&lt;/strong&gt; : SecNumCloud est une qualification purement française. Elle n'a pas de valeur juridique en Allemagne, aux Pays-Bas ou en Italie. Chaque pays peut avoir ses propres exigences ou se référer au futur schéma EUCS.&lt;/p&gt;

&lt;h3&gt;
  
  
  SecNumCloud vs EUCS : le débat européen
&lt;/h3&gt;

&lt;p&gt;Le schéma européen de certification cloud (EUCS) est en cours d'élaboration au niveau de l'ENISA. Il devrait définir trois niveaux d'assurance : basique, substantiel et élevé.&lt;/p&gt;

&lt;p&gt;Le débat fait rage sur le niveau « élevé » : doit-il inclure des critères de souveraineté (immunité aux lois extraterritoriales) comme le fait SecNumCloud 3.2, ou doit-il se limiter à des critères techniques de sécurité ?&lt;/p&gt;

&lt;p&gt;La France pousse pour inclure des critères de souveraineté au niveau élevé, tandis que d'autres pays européens (notamment les Pays-Bas et les pays nordiques) considèrent que cela exclurait de facto les hyperscalers américains et limiterait le choix des entreprises.&lt;/p&gt;

&lt;h3&gt;
  
  
  Position d'AWS ESC par rapport à SecNumCloud
&lt;/h3&gt;

&lt;p&gt;AWS ESC ne vise pas la qualification SecNumCloud dans sa forme actuelle. En effet, SecNumCloud 3.2 exige que le prestataire soit détenu majoritairement par des capitaux européens, ce qui exclut structurellement AWS, même avec l'ESC.&lt;/p&gt;

&lt;p&gt;Cependant, l'ESC répond à de nombreuses exigences de souveraineté :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Données stockées exclusivement dans l'UE&lt;/li&gt;
&lt;li&gt;Personnel européen&lt;/li&gt;
&lt;li&gt;Séparation du plan de contrôle&lt;/li&gt;
&lt;li&gt;Pas d'accès depuis l'extérieur de l'UE&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La question est donc : SecNumCloud est-il un prérequis absolu, ou l'ESC offre-t-il un niveau de souveraineté suffisant pour la majorité des cas d'usage ? Pour les entreprises qui ne sont pas soumises à la doctrine « Cloud au centre », l'ESC peut constituer une réponse pragmatique aux enjeux de souveraineté, sans les contraintes d'un écosystème SecNumCloud encore limité en termes de services disponibles.&lt;/p&gt;




&lt;p&gt;Comprendre les enjeux de souveraineté, l'architecture de l'ESC et le cadre législatif est un prérequis. Mais la vraie complexité se révèle quand on passe à l'implémentation : comment gérer deux partitions au quotidien ? Quels sont les pièges techniques ? Comment adapter son Infrastructure as Code ?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;C'est ce que nous abordons dans la &lt;a href="https://dev.to/blog/2026/05/esc-part2"&gt;seconde partie&lt;/a&gt; : parité de services, IAM régional, connectivité réseau entre partitions, Terraform multi-partition, Landing Zone Accelerator, facturation séparée, et recommandations pratiques pour réussir votre adoption de l'ESC.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>souverainete</category>
      <category>cloud</category>
      <category>architecture</category>
    </item>
    <item>
      <title>LiteLLM et les AI Gateways : reprendre le contrôle des coûts et de la sécurité de vos agents IA</title>
      <dc:creator>sylvainbruas</dc:creator>
      <pubDate>Mon, 11 May 2026 11:01:41 +0000</pubDate>
      <link>https://dev.to/sylvainbruas/litellm-et-les-ai-gateways-reprendre-le-controle-des-couts-et-de-la-securite-de-vos-agents-ia-3l1l</link>
      <guid>https://dev.to/sylvainbruas/litellm-et-les-ai-gateways-reprendre-le-controle-des-couts-et-de-la-securite-de-vos-agents-ia-3l1l</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F86446p075q0y4csa30ry.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F86446p075q0y4csa30ry.webp" alt="LiteLLM et les AI Gateways : reprendre le contrôle des coûts et de la sécurité de vos agents IA" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;L'intelligence artificielle générative a changé la donne. Les entreprises expérimentes et commencent la mise en production d'agents IA capables d'orchestrer des tâches complexes : analyse de documents, génération de code, interaction client, automatisation de processus métier. Mais cette adoption rapide a un revers : les coûts. Et pas n'importe quels coûts — des coûts imprévisibles, qui peuvent exploser sans raison apparente, et qui échappent souvent aux mécanismes de contrôle traditionnels.&lt;/p&gt;

&lt;p&gt;C'est dans ce contexte que les AI Gateways émergent comme une brique d'infrastructure essentielle. Et parmi les solutions disponibles, LiteLLM se distingue par sa capacité à se positionner en front d'&lt;a href="https://docs.aws.amazon.com/bedrock/" rel="noopener noreferrer"&gt;Amazon Bedrock&lt;/a&gt; pour offrir le meilleur des deux mondes : la puissance et la flexibilité d'un catalogue de modèles de classe mondiale, combinées à un contrôle granulaire des coûts, de la sécurité et de la gouvernance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Le problème : des coûts d'agents IA qui explosent sans prévenir
&lt;/h2&gt;

&lt;p&gt;Contrairement à une API REST classique dont le coût par appel est relativement stable et prévisible, les agents IA introduisent une imprévisibilité structurelle dans la facturation. Plusieurs facteurs expliquent ce phénomène :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Les boucles d'appels récursifs.&lt;/strong&gt; Un agent autonome peut décider, en fonction du contexte, d'appeler un modèle de langage (LLM) plusieurs dizaines de fois pour accomplir une seule tâche. Un agent de type ReAct (Reasoning + Acting) va typiquement alterner entre phases de réflexion et phases d'action, chaque itération générant un appel au LLM. Si la tâche est complexe ou si l'agent « tourne en rond » sur un problème, le nombre d'appels peut exploser sans qu'aucun mécanisme natif ne l'arrête.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;L'explosion des tokens en contexte.&lt;/strong&gt; Les agents modernes utilisent des fenêtres de contexte de plus en plus larges. Chaque appel successif inclut l'historique des échanges précédents, ce qui signifie que le nombre de tokens en entrée croît de manière quasi-exponentielle au fil de la conversation. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Les appels d'outils en cascade.&lt;/strong&gt; Les agents modernes ne se contentent pas d'appeler un LLM. Ils orchestrent des outils : recherche web, requêtes en base de données, appels à d'autres API, génération d'images. Chaque outil peut lui-même déclencher des appels supplémentaires au LLM pour interpréter les résultats. Un seul prompt utilisateur peut ainsi générer des dizaines d'appels facturés.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;L'absence de plafond natif.&lt;/strong&gt; La plupart des fournisseurs de modèles facturent à l'usage sans mécanisme de plafonnement intégré. Si un agent s'emballe, rien ne l'arrête côté fournisseur — la facture continue de grimper jusqu'à ce qu'un humain intervienne ou que les quotas de rate limiting soient atteints.&lt;/p&gt;

&lt;h3&gt;
  
  
  Exemples d'explosion de coûts
&lt;/h3&gt;

&lt;p&gt;Les témoignages se multiplient dans la communauté :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Un développeur qui lance un agent de refactoring de code sur un repository entier et se retrouve avec une facture de plusieurs centaines de dollars en quelques heures, là où il attendait quelques dizaines.&lt;/li&gt;
&lt;li&gt;Une équipe data qui déploie un agent d'analyse de documents en production sans garde-fou : l'agent, confronté à des documents mal formatés, entre dans des boucles de retry qui multiplient les appels par 10.&lt;/li&gt;
&lt;li&gt;Un chatbot client qui, face à des requêtes ambiguës, génère des réponses de plus en plus longues en incluant tout l'historique de conversation, faisant exploser le coût par interaction.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ces situations ne sont pas des cas extrêmes. Elles sont le résultat normal du fonctionnement des agents IA quand aucun mécanisme de contrôle n'est en place. Le problème n'est pas que les agents « dysfonctionnent » — c'est qu'ils fonctionnent exactement comme prévu, mais sans contrainte budgétaire.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pourquoi les outils de FinOps traditionnels ne suffisent pas
&lt;/h3&gt;

&lt;p&gt;Les outils de FinOps cloud classiques (&lt;a href="https://docs.aws.amazon.com/cost-management/latest/userguide/ce-what-is.html" rel="noopener noreferrer"&gt;AWS Cost Explorer&lt;/a&gt;, budgets &lt;a href="https://docs.aws.amazon.com/cloudwatch/" rel="noopener noreferrer"&gt;Amazon CloudWatch&lt;/a&gt;, alertes de facturation) sont conçus pour des patterns de consommation relativement stables et prévisibles. Ils fonctionnent bien pour surveiller la consommation &lt;a href="https://docs.aws.amazon.com/ec2/" rel="noopener noreferrer"&gt;Amazon EC2&lt;/a&gt; ou &lt;a href="https://docs.aws.amazon.com/s3/" rel="noopener noreferrer"&gt;Amazon S3&lt;/a&gt;, mais ils sont inadaptés aux coûts d'IA générative pour plusieurs raisons :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Granularité insuffisante&lt;/strong&gt; : ils opèrent historiquement au niveau du compte ou du service. Bedrock propose désormais une &lt;a href="https://aws.amazon.com/blogs/machine-learning/introducing-granular-cost-attribution-for-amazon-bedrock/" rel="noopener noreferrer"&gt;attribution par principal IAM&lt;/a&gt;, mais sans mécanisme de coupure automatique au niveau applicatif.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latence des alertes&lt;/strong&gt; : les alertes budgétaires AWS ont un délai de plusieurs heures. Un agent qui s'emballe peut consommer des centaines de dollars avant que l'alerte ne se déclenche.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pas de coupure automatique&lt;/strong&gt; : une alerte budgétaire AWS notifie, mais ne coupe pas l'accès. L'agent continue de consommer pendant que l'équipe réagit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pas de vision cross-provider&lt;/strong&gt; : si vous utilisez plusieurs fournisseurs de modèles (Bedrock, OpenAI, Anthropic direct), chaque fournisseur a sa propre facturation, rendant la vision consolidée impossible.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  La réponse : les AI Gateways
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Qu'est-ce qu'un AI Gateway ?
&lt;/h3&gt;

&lt;p&gt;Un AI Gateway est un proxy intelligent qui se positionne entre vos applications (agents, chatbots, pipelines) et les fournisseurs de modèles IA. Il agit comme un point de passage obligé pour tous les appels aux LLM, ce qui lui permet d'offrir des fonctionnalités transversales :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Contrôle des coûts&lt;/strong&gt; : budgets par équipe, par application, par utilisateur, avec coupure automatique quand le budget est atteint.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sécurité et gouvernance&lt;/strong&gt; : authentification, autorisation, filtrage de contenu, audit des requêtes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Observabilité&lt;/strong&gt; : logging centralisé de tous les appels, métriques de latence, de tokens consommés, de coûts en temps réel.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Routage intelligent&lt;/strong&gt; : redirection des requêtes vers différents modèles en fonction de critères (coût, latence, disponibilité, type de tâche).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Abstraction du fournisseur&lt;/strong&gt; : interface unifiée quel que soit le modèle sous-jacent (Claude, Llama, Mistral, Titan, etc.).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pourquoi un point d'entrée unifié est essentiel
&lt;/h3&gt;

&lt;p&gt;Sans AI Gateway, chaque équipe, chaque application accède directement aux modèles avec ses propres credentials, ses propres patterns d'appel, et sans visibilité centralisée. C'est l'équivalent de donner à chaque développeur un accès root à la base de données de production sans passer par un connection pooler ou un proxy SQL.&lt;/p&gt;

&lt;p&gt;Un point d'entrée unifié permet de :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Appliquer des politiques de sécurité cohérentes&lt;/strong&gt; : filtrage de données sensibles (PII), blocage de certains types de requêtes, validation des inputs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Avoir une vision consolidée des coûts&lt;/strong&gt; : qui consomme quoi, combien, et pour quel usage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Réagir en temps réel&lt;/strong&gt; : couper un agent qui s'emballe, throttler une application qui consomme trop, rediriger vers un modèle moins coûteux en cas de pic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simplifier la rotation des credentials&lt;/strong&gt; : un seul point à mettre à jour quand les clés API changent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Faciliter la conformité&lt;/strong&gt; : un seul point d'audit pour toutes les interactions avec les modèles IA.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6u844h2h5qp0i2wib0k9.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6u844h2h5qp0i2wib0k9.webp" alt="Sans AI Gateway vs Avec AI Gateway" width="800" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Une AI Gateway open source : LiteLLM
&lt;/h2&gt;

&lt;p&gt;LiteLLM est un proxy open source qui fournit une interface compatible OpenAI pour plus de 100 fournisseurs de modèles IA. Concrètement, vos applications parlent à LiteLLM via l'API standard OpenAI (&lt;code&gt;/chat/completions&lt;/code&gt;, &lt;code&gt;/embeddings&lt;/code&gt;, etc.), et LiteLLM traduit ces appels vers le fournisseur de votre choix : Amazon Bedrock, Azure OpenAI, Anthropic, Mistral, Cohere, et bien d'autres.&lt;/p&gt;

&lt;p&gt;C'est une plateforme complète de gestion des accès aux LLM qui inclut :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gestion des clés virtuelles&lt;/strong&gt; : création de clés API avec des budgets, des limites de rate, et des permissions par modèle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Budgets par équipe et par utilisateur&lt;/strong&gt; : définition de plafonds de dépenses avec coupure automatique.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Routage et fallback&lt;/strong&gt; : si un modèle est indisponible ou saturé, LiteLLM redirige automatiquement vers un modèle de secours.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guardrails&lt;/strong&gt; : intégration de filtres de contenu, de détection de PII, et de politiques de sécurité.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dashboard d'observabilité&lt;/strong&gt; : visualisation en temps réel des coûts, des tokens, de la latence, par clé, par équipe, par modèle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cache sémantique&lt;/strong&gt; : mise en cache des réponses pour des requêtes similaires, réduisant les coûts et la latence.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;LiteLLM se déploie comme un service stateless (conteneur Docker) devant vos fournisseurs de modèles. Les applications communiquent avec LiteLLM via l'API compatible OpenAI, et LiteLLM route les requêtes vers le bon fournisseur en appliquant les politiques de sécurité, de budget et de routage.&lt;/p&gt;

&lt;h2&gt;
  
  
  LiteLLM en front d'Amazon Bedrock : le meilleur des deux mondes
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F64fqzurtu54eb8qryzq5.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F64fqzurtu54eb8qryzq5.webp" alt="Architecture LiteLLM en front d'Amazon Bedrock" width="800" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Pourquoi Bedrock comme backend ?
&lt;/h3&gt;

&lt;p&gt;Amazon Bedrock est le service managé d'AWS qui donne accès à un catalogue de modèles fondamentaux (Foundation Models) de différents fournisseurs : Anthropic (Claude), Meta (Llama), Mistral, Amazon (Titan, Nova), Cohere, AI21 Labs, et d'autres. Bedrock offre plusieurs avantages structurels :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pas de gestion d'infrastructure&lt;/strong&gt; : les modèles sont servis par AWS, vous n'avez pas à gérer de GPU, de scaling, ou de disponibilité.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intégration native AWS&lt;/strong&gt; : &lt;a href="https://docs.aws.amazon.com/iam/" rel="noopener noreferrer"&gt;IAM&lt;/a&gt; pour l'authentification, &lt;a href="https://docs.aws.amazon.com/cloudtrail/" rel="noopener noreferrer"&gt;CloudTrail&lt;/a&gt; pour l'audit, &lt;a href="https://docs.aws.amazon.com/vpc/" rel="noopener noreferrer"&gt;VPC&lt;/a&gt; endpoints pour la connectivité privée, &lt;a href="https://docs.aws.amazon.com/kms/" rel="noopener noreferrer"&gt;KMS&lt;/a&gt; pour le chiffrement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Données privées&lt;/strong&gt; : vos données ne sont pas utilisées pour entraîner les modèles. Bedrock offre des garanties contractuelles sur ce point.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disponibilité régionale&lt;/strong&gt; : Bedrock est disponible dans plusieurs régions européennes, et est disponible dans l'ESC avec une liste limitée de modèles.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Ce que LiteLLM ajoute à Bedrock
&lt;/h3&gt;

&lt;p&gt;Bedrock est excellent pour servir des modèles, LiteLLM ajoute une interface unifiée et plus orientée vers les applications et utilisateurs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Budgets granulaires avec enforcement.&lt;/strong&gt; Bedrock offre désormais une attribution des coûts par principal IAM, mais il ne propose pas de mécanisme de &lt;em&gt;coupure automatique&lt;/em&gt; quand un seuil est atteint. LiteLLM comble ce manque : il permet de définir des budgets par Business Unit, par application, par équipe, voire par utilisateur individuel, avec un enforcement en quasi temps réel. Quand le budget est atteint, l'accès est coupé automatiquement — pas besoin d'attendre une alerte CloudWatch avec 6 heures de retard.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Exemple de configuration LiteLLM avec budgets par équipe&lt;/span&gt;
&lt;span class="na"&gt;general_settings&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;master_key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;sk-litellm-master-key&lt;/span&gt;

&lt;span class="na"&gt;model_list&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;model_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;claude-sonnet&lt;/span&gt;
    &lt;span class="na"&gt;litellm_params&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;bedrock/us.anthropic.claude-sonnet-4-6&lt;/span&gt;
      &lt;span class="na"&gt;aws_region_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;us-east-1&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;model_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;claude-haiku&lt;/span&gt;
    &lt;span class="na"&gt;litellm_params&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
       &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;bedrock/us.anthropic.claude-3-5-haiku-20241022-v1:0&lt;/span&gt;
      &lt;span class="na"&gt;aws_region_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;us-east-1&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;model_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mistral-7b&lt;/span&gt;
    &lt;span class="na"&gt;litellm_params&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;bedrock/converse/mistral.mistral-7b-instruct-v0:2&lt;/span&gt;
      &lt;span class="na"&gt;aws_region_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;us-east-1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Côté gestion des équipes et budgets, LiteLLM expose une API d'administration :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Créer une équipe avec un budget mensuel&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s1"&gt;'http://litellm:4000/team/new'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Authorization: Bearer sk-litellm-master-key'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Content-Type: application/json'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "team_alias": "equipe-data",
    "max_budget": 500,
    "budget_duration": "1mo",
    "models": ["claude-sonnet", "claude-haiku"],
    "metadata": {"bu": "data-engineering"}
  }'&lt;/span&gt;

&lt;span class="c"&gt;# Créer une clé pour un développeur avec son propre budget&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s1"&gt;'http://litellm:4000/key/generate'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Authorization: Bearer sk-litellm-master-key'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Content-Type: application/json'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "team_id": "team-xxx",
    "max_budget": 50,
    "budget_duration": "1mo",
    "models": ["claude-haiku"],
    "metadata": {"user": "jean.dupont@entreprise.fr"}
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Routage par coût.&lt;/strong&gt; LiteLLM peut automatiquement router les requêtes vers le modèle le moins coûteux capable de traiter la tâche. Par exemple, les requêtes simples (classification, extraction) sont envoyées vers Claude Haiku (peu coûteux), tandis que les tâches complexes (raisonnement, génération longue) sont dirigées vers Claude Sonnet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fallback automatique.&lt;/strong&gt; Si Bedrock dans une région est saturé ou indisponible, LiteLLM peut automatiquement basculer vers une autre région ou un autre fournisseur, sans interruption pour l'application.&lt;/p&gt;

&lt;h3&gt;
  
  
  L'ancienne pièce manquante côté AWS : l'attribution granulaire native de Bedrock
&lt;/h3&gt;

&lt;p&gt;Depuis avril 2026, AWS a comblé une lacune avec l'&lt;a href="https://aws.amazon.com/blogs/machine-learning/introducing-granular-cost-attribution-for-amazon-bedrock/" rel="noopener noreferrer"&gt;attribution granulaire des coûts pour Amazon Bedrock&lt;/a&gt;. Bedrock attribue désormais automatiquement les coûts d'inférence au principal IAM qui effectue l'appel. Dans le Cost and Usage Report (CUR 2.0), une nouvelle colonne &lt;code&gt;line_item_iam_principal&lt;/code&gt; identifie précisément qui consomme : un utilisateur IAM, un rôle applicatif, ou une identité fédérée.&lt;/p&gt;

&lt;p&gt;Combiné à des tags IAM (principal tags sur les rôles/utilisateurs, ou session tags passés dynamiquement), on peut agréger les coûts par équipe, projet ou centre de coûts directement dans AWS Cost Explorer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Le cas spécifique des AI Gateways.&lt;/strong&gt; L'article AWS identifie explicitement le scénario d'un LLM gateway en front de Bedrock. Sans configuration supplémentaire, tout le trafic est attribué au rôle unique du gateway — aucune visibilité par utilisateur. La solution recommandée : le gateway effectue un &lt;code&gt;AssumeRole&lt;/code&gt; par utilisateur avec un &lt;code&gt;--role-session-name&lt;/code&gt; identifiant l'appelant et des &lt;code&gt;--tags&lt;/code&gt; de session (équipe, tenant, centre de coûts). Les credentials sont cachées avec un TTL d'une heure, ce qui limite les appels &lt;a href="https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html" rel="noopener noreferrer"&gt;STS&lt;/a&gt; à un par utilisateur par heure.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Exemple : le gateway assume un rôle Bedrock pour chaque utilisateur&lt;/span&gt;
aws sts assume-role &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--role-arn&lt;/span&gt; arn:aws:iam::123456789012:role/BedrockInvocationRole &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--role-session-name&lt;/span&gt; &lt;span class="s2"&gt;"gw-jean.dupont"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--tags&lt;/span&gt; &lt;span class="nv"&gt;Key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;team,Value&lt;span class="o"&gt;=&lt;/span&gt;data-engineering &lt;span class="nv"&gt;Key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;cost-center,Value&lt;span class="o"&gt;=&lt;/span&gt;BU-DATA
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ce qui apparaît alors dans CUR 2.0 :&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;code&gt;line_item_iam_principal&lt;/code&gt;&lt;/th&gt;
&lt;th&gt;&lt;code&gt;line_item_usage_type&lt;/code&gt;&lt;/th&gt;
&lt;th&gt;&lt;code&gt;tags&lt;/code&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;…assumed-role/BedrockRole/gw-jean.dupont&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;EUW3-Claude4Sonnet-input-tokens&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{"iamPrincipal/team":"data-engineering"}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;…assumed-role/BedrockRole/gw-tenant-acme&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;EUW3-Claude4Sonnet-output-tokens&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{"iamPrincipal/tenant":"acme-corp"}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Complémentarité avec LiteLLM.&lt;/strong&gt; Cette attribution native ne remplace pas LiteLLM — elle le complète. Bedrock fournit désormais la &lt;strong&gt;visibilité passive&lt;/strong&gt; (qui consomme quoi dans la facturation AWS), tandis que LiteLLM assure le &lt;strong&gt;contrôle actif&lt;/strong&gt; (coupure automatique quand un budget est atteint, rate limiting par clé, routage par coût, guardrails). Les deux ensemble offrent une gouvernance FinOps complète :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bedrock + CUR 2.0&lt;/strong&gt; : attribution, reporting, chargeback, analyse a posteriori via Cost Explorer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LiteLLM&lt;/strong&gt; : enforcement en temps réel, coupure automatique, routage intelligent, abstraction multi-modèle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;En pratique, si vous déployez LiteLLM en front de Bedrock, configurez-le pour utiliser des sessions STS par utilisateur. Vous obtiendrez à la fois le contrôle temps réel de LiteLLM &lt;em&gt;et&lt;/em&gt; l'attribution native dans votre facturation AWS — le meilleur des deux mondes, littéralement.&lt;/p&gt;

&lt;h3&gt;
  
  
  Budgets par BU, par application : la gouvernance FinOps de l'IA
&lt;/h3&gt;

&lt;p&gt;L'un des cas d'usage les plus puissants de LiteLLM en front de Bedrock est la capacité à implémenter une gouvernance FinOps granulaire pour l'IA générative. Voici comment structurer les budgets dans une organisation :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa6bsb8ako0l2m8gc8ers.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa6bsb8ako0l2m8gc8ers.webp" alt="Gouvernance FinOps IA : budgets hiérarchiques avec LiteLLM" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Chaque niveau de la hiérarchie a son propre budget. Si l'équipe Dev du chatbot atteint ses 500 € mensuels, ses clés sont désactivées automatiquement — mais le reste de la BU Produit continue de fonctionner. Si c'est toute la BU Produit qui atteint ses 5 000 €, toutes les applications de cette BU sont coupées, mais les autres BU ne sont pas impactées.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sécurité : une couche unifiée indispensable
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Les risques de sécurité spécifiques aux LLM
&lt;/h3&gt;

&lt;p&gt;Les agents IA introduisent des vecteurs d'attaque spécifiques qui nécessitent des contrôles dédiés :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Injection de prompt&lt;/strong&gt; : un utilisateur malveillant peut tenter de manipuler l'agent pour qu'il exécute des actions non autorisées ou divulgue des informations sensibles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exfiltration de données&lt;/strong&gt; : un agent qui a accès à des données internes peut être manipulé pour les inclure dans ses réponses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fuite de PII&lt;/strong&gt; : les modèles peuvent involontairement inclure des données personnelles dans leurs réponses si elles sont présentes dans le contexte.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Abus de ressources&lt;/strong&gt; : un utilisateur peut intentionnellement déclencher des boucles coûteuses pour nuire à l'organisation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shadow AI&lt;/strong&gt; : sans point d'entrée centralisé, les équipes utilisent des clés API personnelles, contournant toute politique de sécurité.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Ce que LiteLLM apporte en termes de sécurité
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Authentification et autorisation centralisées.&lt;/strong&gt; Chaque appel passe par LiteLLM avec une clé API qui identifie l'appelant. Plus besoin de distribuer des credentials Bedrock (access keys IAM) à chaque application — LiteLLM gère l'authentification côté application et utilise un seul rôle IAM pour accéder à Bedrock.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Guardrails et filtrage de contenu.&lt;/strong&gt; LiteLLM s'intègre avec des solutions de guardrails (Bedrock Guardrails, Lakera Guard, Presidio) pour :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Détecter et masquer les PII dans les requêtes et les réponses&lt;/li&gt;
&lt;li&gt;Bloquer les tentatives d'injection de prompt&lt;/li&gt;
&lt;li&gt;Filtrer le contenu inapproprié ou dangereux&lt;/li&gt;
&lt;li&gt;Appliquer des politiques de contenu spécifiques à l'organisation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Audit complet.&lt;/strong&gt; Chaque requête est loggée avec : l'identité de l'appelant, le modèle utilisé, le nombre de tokens, le coût, la latence, et optionnellement le contenu de la requête et de la réponse. Ces logs peuvent être envoyés vers des solutions SIEM pour analyse et détection d'anomalies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Isolation des credentials.&lt;/strong&gt; Les applications n'ont jamais accès aux credentials AWS sous-jacentes. Si une clé LiteLLM est compromise, elle peut être révoquée instantanément sans impacter les autres applications. Et la clé compromise n'a accès qu'aux modèles et budgets qui lui ont été attribués — pas à l'ensemble de l'infrastructure AWS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Contrôle des modèles accessibles.&lt;/strong&gt; Vous pouvez restreindre quels modèles sont accessibles par quelle équipe. Par exemple, seule l'équipe R&amp;amp;D a accès à Claude Opus (le plus coûteux), tandis que les équipes produit sont limitées à Haiku et Sonnet.&lt;/p&gt;

&lt;h3&gt;
  
  
  Architecture de sécurité recommandée
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo8m3t5c4fzp90xcir03t.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo8m3t5c4fzp90xcir03t.webp" alt="Architecture de sécurité : LiteLLM + Bedrock" width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dans cette architecture :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Le trafic ne sort jamais du réseau AWS (VPC endpoint vers Bedrock)&lt;/li&gt;
&lt;li&gt;LiteLLM est le seul composant qui possède les credentials Bedrock&lt;/li&gt;
&lt;li&gt;Les applications s'authentifient auprès de LiteLLM avec des clés virtuelles à permissions limitées&lt;/li&gt;
&lt;li&gt;Tous les appels sont audités et filtrés&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Mise en œuvre pratique
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Déploiement de LiteLLM sur AWS
&lt;/h3&gt;

&lt;p&gt;LiteLLM se déploie facilement sur AWS via plusieurs options :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://docs.aws.amazon.com/ecs/" rel="noopener noreferrer"&gt;Amazon ECS&lt;/a&gt;/&lt;a href="https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html" rel="noopener noreferrer"&gt;AWS Fargate&lt;/a&gt;&lt;/strong&gt; : déploiement conteneurisé serverless, idéal pour la production.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://docs.aws.amazon.com/eks/" rel="noopener noreferrer"&gt;Amazon EKS&lt;/a&gt;&lt;/strong&gt; : si vous avez déjà un cluster Kubernetes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;EC2&lt;/strong&gt; : pour un déploiement simple ou un POC.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Le conteneur LiteLLM nécessite une base de données PostgreSQL pour stocker les clés, les budgets et les métriques. &lt;a href="https://docs.aws.amazon.com/rds/" rel="noopener noreferrer"&gt;Amazon RDS&lt;/a&gt; PostgreSQL ou &lt;a href="https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html" rel="noopener noreferrer"&gt;Aurora Serverless&lt;/a&gt; conviennent parfaitement.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuration du routage vers Bedrock
&lt;/h3&gt;

&lt;p&gt;La configuration de LiteLLM pour router vers Bedrock est directe. L'authentification utilise le chaînage standard des credentials AWS (rôle IAM de l'instance, variables d'environnement, ou profil) :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;model_list&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;model_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;claude-sonnet&lt;/span&gt;
    &lt;span class="na"&gt;litellm_params&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;bedrock/us.anthropic.claude-sonnet-4-6&lt;/span&gt;
      &lt;span class="na"&gt;aws_region_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;us-east-1&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;model_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;claude-haiku&lt;/span&gt;
    &lt;span class="na"&gt;litellm_params&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
       &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;bedrock/us.anthropic.claude-3-5-haiku-20241022-v1:0&lt;/span&gt;
      &lt;span class="na"&gt;aws_region_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;us-east-1&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;model_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mistral-7b&lt;/span&gt;
    &lt;span class="na"&gt;litellm_params&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;bedrock/converse/mistral.mistral-7b-instruct-v0:2&lt;/span&gt;
      &lt;span class="na"&gt;aws_region_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;us-east-1&lt;/span&gt;

&lt;span class="na"&gt;router_settings&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;routing_strategy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;least-busy"&lt;/span&gt;  &lt;span class="c1"&gt;# ou "cost-based", "latency-based"&lt;/span&gt;
  &lt;span class="na"&gt;num_retries&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;
  &lt;span class="na"&gt;timeout&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;30&lt;/span&gt;
  &lt;span class="na"&gt;allowed_fails&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Intégration côté application
&lt;/h3&gt;

&lt;p&gt;Côté application, le changement est minimal. Puisque LiteLLM expose une API compatible OpenAI, il suffit de changer l'URL de base :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="c1"&gt;# Avant : appel direct à Bedrock via boto3
# Après : appel via LiteLLM avec contrôle des coûts
&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sk-team-data-key-xxx&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# Clé avec budget
&lt;/span&gt;    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;http://litellm.internal:4000&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-sonnet&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Analyse ce document...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4096&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Toute bibliothèque compatible OpenAI (LangChain, LlamaIndex, CrewAI, AutoGen) fonctionne nativement avec LiteLLM sans modification de code — il suffit de pointer vers l'URL du proxy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Retour d'expérience et bonnes pratiques
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Commencer petit, itérer vite
&lt;/h3&gt;

&lt;p&gt;Ne déployez pas LiteLLM en production pour toute l'organisation d'un coup. Commencez par une équipe pilote, validez les patterns de budgets et de routage, puis étendez progressivement.&lt;/p&gt;

&lt;h3&gt;
  
  
  Définir des budgets réalistes
&lt;/h3&gt;

&lt;p&gt;Analysez la consommation actuelle avant de fixer des budgets. Un budget trop serré bloque les équipes et génère de la frustration. Un budget trop large ne protège de rien. Commencez avec des budgets généreux et resserrez progressivement en fonction des données réelles.&lt;/p&gt;

&lt;h3&gt;
  
  
  Monitorer les anomalies, pas seulement les totaux
&lt;/h3&gt;

&lt;p&gt;Le coût total mensuel est un indicateur retardé. Surveillez plutôt :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Le coût par requête (détecte les agents qui s'emballent)&lt;/li&gt;
&lt;li&gt;Le nombre de tokens par session (détecte les contextes qui explosent)&lt;/li&gt;
&lt;li&gt;Le ratio input/output tokens (détecte les prompts mal optimisés)&lt;/li&gt;
&lt;li&gt;Les pics soudains de consommation (détecte les boucles infinies)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Implémenter des circuit breakers
&lt;/h3&gt;

&lt;p&gt;Au-delà des budgets, implémentez des mécanismes de circuit breaker au niveau applicatif : si un agent dépasse un certain nombre d'itérations ou un certain coût par session, il doit s'arrêter et remonter une alerte plutôt que de continuer à consommer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;L'adoption des agents IA en entreprise est en marche. Mais sans gouvernance adaptée, les coûts peuvent devenir un frein majeur — voire un risque financier. Les outils de FinOps traditionnels ne sont pas conçus pour la granularité et la réactivité qu'exige l'IA générative.&lt;/p&gt;

&lt;p&gt;LiteLLM en front d'Amazon Bedrock offre une réponse pragmatique à ce défi. Vous conservez la puissance de Bedrock — son catalogue de modèles, son intégration AWS native, ses garanties de confidentialité — tout en ajoutant la couche de contrôle qui manque : budgets par BU et par application, sécurité unifiée, observabilité en temps réel, et routage intelligent.&lt;/p&gt;

&lt;p&gt;C'est l'approche que je recommande pour la production avec l'IA générative : ne laissez pas vos agents en roue libre. Mettez un gateway devant, définissez des budgets, et gardez le contrôle. La flexibilité de Bedrock combinée au contrôle de LiteLLM, c'est exactement le compromis dont les entreprises ont besoin pour scaler l'IA de manière responsable.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>ia</category>
      <category>architecture</category>
      <category>bedrock</category>
    </item>
    <item>
      <title>Comment AWS Transform Custom efface votre dette technique comme neige au soleil</title>
      <dc:creator>sylvainbruas</dc:creator>
      <pubDate>Mon, 11 May 2026 10:56:38 +0000</pubDate>
      <link>https://dev.to/sylvainbruas/comment-aws-transform-custom-efface-votre-dette-technique-comme-neige-au-soleil-1o1</link>
      <guid>https://dev.to/sylvainbruas/comment-aws-transform-custom-efface-votre-dette-technique-comme-neige-au-soleil-1o1</guid>
      <description>&lt;h2&gt;
  
  
  La Dette Technique : Un Fardeau Quotidien
&lt;/h2&gt;

&lt;p&gt;On se fait vite submerger par la dette technique. Dès que l'on a plus d'un projet à gérer, il faut partager son temps et donc faire des choix. C'est ici que commence la dette technique. Elle peut aussi naître du manque de temps, ou encore de choix qui repoussent certaines fonctions semblant moins essentielles comme la documentation ou les tests. Et chaque jour elle se creuse avec les nouvelles mises à jour et frameworks qui sortent ou qui ne sont plus maintenus.&lt;/p&gt;

&lt;p&gt;Dans mon cas, j'avais plusieurs projets TypeScript en production sur Gatsby + Contentlayer 2, déployés en statique sur Amazon S3 avec CloudFront. Le problème ? &lt;strong&gt;Contentlayer 2 n'est plus maintenu&lt;/strong&gt;, créant des failles de sécurité et bloquant les mises à jour. Chaque jour qui passe, la dette technique s'accumule.&lt;/p&gt;

&lt;p&gt;Nous allons voir ici comment l'IA et plus particulièrement &lt;strong&gt;AWS Transform Custom&lt;/strong&gt; peut nous aider à faire fondre cette dette comme neige au soleil, en migrant vers Next.js 15 avec toutes les bonnes pratiques modernes.&lt;/p&gt;

&lt;h2&gt;
  
  
  AWS Transform Custom : La Gomme Magique de la Dette Technique
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Qu'est-ce qu'AWS Transform Custom en quelques mots ?
&lt;/h3&gt;

&lt;p&gt;AWS Transform Custom est un service lancé en décembre 2025 qui utilise &lt;strong&gt;l'IA agentique&lt;/strong&gt; pour effectuer des modernisations à grande échelle de logiciels, code, bibliothèques et frameworks. Contrairement aux outils de refactoring traditionnels, il gère des scénarios divers :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mises à niveau de versions de langages&lt;/li&gt;
&lt;li&gt;Migrations d'API et de services
&lt;/li&gt;
&lt;li&gt;Mises à niveau et migrations de frameworks&lt;/li&gt;
&lt;li&gt;Refactoring de code&lt;/li&gt;
&lt;li&gt;Transformations spécifiques à l'organisation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;La vraie magie&lt;/strong&gt; : l'agent apprend en continu de chaque exécution et des retours des développeurs, offrant des transformations de meilleure qualité et reproductibles sans nécessiter d'expertise en automatisation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Les Avantages Concrets d'AWS Transform Custom
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Gain de Temps
&lt;/h4&gt;

&lt;p&gt;La modernisation ou transformation de code demande du temps, que ce soit pour l'implémentation ou pour les tests. Bien que des guides existent pour accélérer certaines migrations, il faut les implémenter avec nos normes de codage, et les valider pour que tous les cas soient correctement gérés.&lt;/p&gt;

&lt;p&gt;L'IA agentique peut ici apporter une grande valeur. En s'inspirant des autres fichiers de votre projet et des normes que vous partagez avec vos agents (steering documents), les agents vont produire du code beaucoup plus vite qu'un développeur. &lt;/p&gt;

&lt;h4&gt;
  
  
  2. Patterns de Transformation intégrés
&lt;/h4&gt;

&lt;p&gt;AWS Transform Custom supporte 10 patterns de transformation avec différents niveaux de complexité :&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pattern&lt;/th&gt;
&lt;th&gt;Complexité&lt;/th&gt;
&lt;th&gt;Exemples&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Framework Migrations&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Haute&lt;/td&gt;
&lt;td&gt;Angular→React, Redux→Zustand, &lt;strong&gt;Gatsby→Next.js&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Framework Upgrades&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Moyenne&lt;/td&gt;
&lt;td&gt;Spring Boot 2→3, React 17→18, &lt;strong&gt;Next.js 13→15&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;API Migrations&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Moyenne&lt;/td&gt;
&lt;td&gt;AWS SDK v1→v2, JUnit 4→5, javax→jakarta&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Language Version Upgrades&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Faible-Moyenne&lt;/td&gt;
&lt;td&gt;Java 8→17, Python 3.9→3.13, &lt;strong&gt;Node.js 12→22&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Code Refactoring&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Faible-Moyenne&lt;/td&gt;
&lt;td&gt;Print→Logging, string concat→f-strings&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Mon cas d'usage : &lt;strong&gt;Framework Migration (Gatsby→Next.js 15)&lt;/strong&gt; - Complexité Haute&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Apprentissage Continu
&lt;/h4&gt;

&lt;p&gt;Une des fonctionnalités phares d'AWS Transform Custom : &lt;strong&gt;l'agent apprend de chaque exécution&lt;/strong&gt;. Le système capture automatiquement :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Les trajectoires d'exécution&lt;/li&gt;
&lt;li&gt;Les retours des développeurs&lt;/li&gt;
&lt;li&gt;Les corrections de code&lt;/li&gt;
&lt;li&gt;Les résultats des builds de validation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ces informations sont transformées en &lt;strong&gt;Knowledge Items&lt;/strong&gt; (KI) qui améliorent les transformations futures. Plus vous l'utilisez, meilleur il devient.&lt;br&gt;
Vous allez gagner du temps en n'ayant pas besoin de reformuler vos prompts pour gérer tous les cas.&lt;/p&gt;
&lt;h2&gt;
  
  
  Notre cas d'usage : cinq Projets à Transformer en Next.js 15
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Contexte : Un Portefeuille Hétérogène en Souffrance
&lt;/h3&gt;

&lt;p&gt;J'avais cinq projets non maintenus : &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Une démo avec Gatsby pour un ancien article&lt;/li&gt;
&lt;li&gt;Un site vitrine « bruas.fr »&lt;/li&gt;
&lt;li&gt;Mon CV en ligne cv.bruas.fr multilingue (seul site avec cette fonction)&lt;/li&gt;
&lt;li&gt;L'ancienne version de ce site sylvain.bruas.fr, que j'ai déjà transformé avant la sortie d'AWS Transform Custom, et qui m'a permis de définir la cible&lt;/li&gt;
&lt;li&gt;Une page statique qui me sert de carte de visite virtuelle (HTML pur). Ce projet est là pour voir les limites de l'outil dans un environnement très hétérogène&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Stack actuelle&lt;/strong&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Framework : Gatsby (obsolète pour mes besoins)&lt;/li&gt;
&lt;li&gt;Content : Contentlayer 2 (⚠️ &lt;strong&gt;non maintenu&lt;/strong&gt; - failles de sécurité)&lt;/li&gt;
&lt;li&gt;Articles : Markdown avec frontmatter&lt;/li&gt;
&lt;li&gt;Déploiement : Amazon S3 + CloudFront (statique)&lt;/li&gt;
&lt;li&gt;IaC : Terraform&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Stack cible&lt;/strong&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Framework : &lt;strong&gt;Next.js 15&lt;/strong&gt; (dernière version)&lt;/li&gt;
&lt;li&gt;Content : &lt;strong&gt;&lt;a class="mentioned-user" href="https://dev.to/next"&gt;@next&lt;/a&gt;/mdx&lt;/strong&gt; ou &lt;strong&gt;content-collections&lt;/strong&gt; (alternatives natives)&lt;/li&gt;
&lt;li&gt;Architecture : &lt;strong&gt;App Router&lt;/strong&gt; avec &lt;strong&gt;Server Components&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Build : &lt;strong&gt;Turbopack&lt;/strong&gt; (nouveau bundler ultra-rapide)&lt;/li&gt;
&lt;li&gt;À jour par rapport aux packages et CVE&lt;/li&gt;
&lt;li&gt;Disparition totale de Gatsby&lt;/li&gt;
&lt;li&gt;Si on a un site multilingue, on fait un projet par langue pour faciliter le SEO&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Le problème Contentlayer 2&lt;/strong&gt; : Ce projet n'est plus maintenu depuis 2023, créant des vulnérabilités de sécurité et empêchant les mises à jour de dépendances. Les alternatives natives de Next.js 15 (&lt;a class="mentioned-user" href="https://dev.to/next"&gt;@next&lt;/a&gt;/mdx, content-collections) sont plus performantes et maintenues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Des projets clones&lt;/strong&gt; : Des projets qui sont partis des mêmes sources, mais qui ont évolué avec des modules différents (I18N), et pas forcément avec les bonnes pratiques. Les faire converger de nouveau vers une plateforme commune demande un effort important.&lt;/p&gt;
&lt;h3&gt;
  
  
  Phase 1 : Commencer par un Audit Complet
&lt;/h3&gt;

&lt;p&gt;Avant toute transformation, j'ai utilisé &lt;strong&gt;Kiro&lt;/strong&gt; (un assistant IA pour développeurs) pour réaliser un audit approfondi de mes projets.&lt;/p&gt;

&lt;p&gt;Je lui ai demandé d'effectuer un audit complet de mes projets en utilisant des sous-agents pour aller plus vite :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt utilisé&lt;/strong&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pour chacun des projets, fais-moi un audit sécurité, bonnes pratiques, couverture des tests, etc. Mets le résultat dans un fichier &amp;lt;nom projet&amp;gt;.md
Fais-moi un récapitulatif global sous forme de divers tableaux dans projects-data.md
Utilise des sous-agents pour aller plus vite
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kiro a analysé automatiquement :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Les dépendances obsolètes avec &lt;code&gt;npm audit&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Les vulnérabilités de sécurité&lt;/li&gt;
&lt;li&gt;La couverture de tests existante&lt;/li&gt;
&lt;li&gt;La qualité du code avec ESLint&lt;/li&gt;
&lt;li&gt;Les bonnes pratiques TypeScript&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📊 Tableau de Synthèse Globale&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Projet&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Score Global&lt;/th&gt;
&lt;th&gt;Tests&lt;/th&gt;
&lt;th&gt;Sécurité&lt;/th&gt;
&lt;th&gt;Infrastructure&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;bruas.fr&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Blog Gatsby&lt;/td&gt;
&lt;td&gt;6/10&lt;/td&gt;
&lt;td&gt;0%&lt;/td&gt;
&lt;td&gt;⚠️ Moyen&lt;/td&gt;
&lt;td&gt;✅ Bon&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;cv&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;CV Gatsby i18n&lt;/td&gt;
&lt;td&gt;5/10&lt;/td&gt;
&lt;td&gt;0%&lt;/td&gt;
&lt;td&gt;🔴 Critique&lt;/td&gt;
&lt;td&gt;✅ Bon&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;demo&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Blog Gatsby&lt;/td&gt;
&lt;td&gt;6/10&lt;/td&gt;
&lt;td&gt;~5%&lt;/td&gt;
&lt;td&gt;⚠️ Moyen&lt;/td&gt;
&lt;td&gt;✅ Bon&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;sylvain.bruas.fr&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Blog Gatsby&lt;/td&gt;
&lt;td&gt;6.5/10&lt;/td&gt;
&lt;td&gt;~10%&lt;/td&gt;
&lt;td&gt;⚠️ Moyen&lt;/td&gt;
&lt;td&gt;✅ Bon&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;vcard-pro&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;vCard statique&lt;/td&gt;
&lt;td&gt;6/10&lt;/td&gt;
&lt;td&gt;0%&lt;/td&gt;
&lt;td&gt;⚠️ Moyen&lt;/td&gt;
&lt;td&gt;⚠️ Moyen&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;⚙️ Tableau des Problèmes d'Infrastructure&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Composant&lt;/th&gt;
&lt;th&gt;bruas.fr&lt;/th&gt;
&lt;th&gt;cv&lt;/th&gt;
&lt;th&gt;demo&lt;/th&gt;
&lt;th&gt;sylvain.bruas.fr&lt;/th&gt;
&lt;th&gt;vcard-pro&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Backend Terraform&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌ Local&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;❌ Local&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;❌ Local&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Variables Terraform&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌ Hardcodées&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;❌ Hardcodées&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;❌ Hardcodées&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CI/CD configuré&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;⚠️ Non fonctionnel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Monitoring&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Alertes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Backup/Versioning&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Points critiques identifiés&lt;/strong&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⚠️ Contentlayer 2 : Vulnérabilités CVE non patchées&lt;/li&gt;
&lt;li&gt;⚠️ Gatsby : Version 4.x, alors que v5 est sortie (mais migration complexe)&lt;/li&gt;
&lt;li&gt;⚠️ Node.js : Version 16 (EOL), besoin de migrer vers 22 LTS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cette phase d'audit est &lt;strong&gt;cruciale&lt;/strong&gt;. AWS Transform Custom fonctionne mieux quand il comprend l'état initial de votre codebase. Kiro m'a aidé à préparer ce travail en documentant précisément :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Architecture technique&lt;/li&gt;
&lt;li&gt;Flux de données&lt;/li&gt;
&lt;li&gt;Composants&lt;/li&gt;
&lt;li&gt;Gestion du thème&lt;/li&gt;
&lt;li&gt;Système de routing&lt;/li&gt;
&lt;li&gt;SEO et métadonnées&lt;/li&gt;
&lt;li&gt;Infrastructure&lt;/li&gt;
&lt;li&gt;Performance&lt;/li&gt;
&lt;li&gt;Sécurité&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;C'est un premier point de dette technique de réglé : l'IA générative permet de créer une base de documentation solide qu'il ne reste plus qu'à parcourir et ajuster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conseil&lt;/strong&gt; : Documentez tout ce que vous trouvez. AWS Transform Custom utilisera cette documentation comme &lt;strong&gt;References&lt;/strong&gt; pour mieux comprendre votre contexte.&lt;/p&gt;

&lt;h3&gt;
  
  
  Phase 2 : Ajouter des Tests avec l'IA
&lt;/h3&gt;

&lt;h4&gt;
  
  
  L'IA au Service de la Qualité
&lt;/h4&gt;

&lt;p&gt;Avant de lancer la transformation, j'ai utilisé Kiro pour générer les tests manquants. &lt;strong&gt;Pourquoi ?&lt;/strong&gt; Parce qu'AWS Transform Custom utilise les tests pour valider ses transformations via le &lt;strong&gt;Build and Validation Command&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;L'objectif est d'avoir une couverture intéressante d'environ 80 %, avec des tests unitaires, d'intégration et end-to-end qui apportent de la valeur. On vise les cas particuliers et les fonctionnalités critiques de l'application (SEO, gestion des images, build, rendu HTML mobile...).&lt;/p&gt;

&lt;h5&gt;
  
  
  Couverture de Tests : Objectif 80 %
&lt;/h5&gt;

&lt;p&gt;Après cette phase intensive de génération de tests :&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Projet&lt;/th&gt;
&lt;th&gt;Tests Unitaires&lt;/th&gt;
&lt;th&gt;Tests Intégration&lt;/th&gt;
&lt;th&gt;Tests E2E&lt;/th&gt;
&lt;th&gt;Couverture Estimée&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;bruas.fr&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;15 fichiers ✅&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;6 fichiers Cypress ✅&lt;/td&gt;
&lt;td&gt;~65 % ⬆️&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;cv&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;7 fichiers ✅&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;4 fichiers Cypress&lt;/td&gt;
&lt;td&gt;~45 % ⬆️&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;demo&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;5 fichiers ✅&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;3 fichiers Cypress&lt;/td&gt;
&lt;td&gt;~50 % ⬆️&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;sylvain.bruas.fr&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;3 fichiers ✅&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;1 fichier Cypress&lt;/td&gt;
&lt;td&gt;~35 % ⬆️&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;vcard-pro&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2 fichiers ✅&lt;/td&gt;
&lt;td&gt;1 fichier&lt;/td&gt;
&lt;td&gt;1 fichier Cypress&lt;/td&gt;
&lt;td&gt;~70 % ⬆️&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Phase 3 : Projet Pilote - Demo avec AWS Transform Custom
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Pourquoi Demo comme Pilote ?
&lt;/h4&gt;

&lt;p&gt;J'ai choisi Demo car il était :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Simple&lt;/strong&gt; : Architecture claire avec ~50 composants&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Représentatif&lt;/strong&gt; : Utilise les mêmes patterns que les autres projets (Gatsby, Contentlayer 2, TypeScript)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intéressant mais pas vital&lt;/strong&gt; : Permet d'expérimenter sans risque majeur sur le business&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Installation et Configuration d'AWS Transform Custom
&lt;/h4&gt;

&lt;h5&gt;
  
  
  Étape 1 : Installation du CLI
&lt;/h5&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Installation du CLI AWS Transform (méthode recommandée)&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://desktop-release.transform.us-east-1.api.aws/install.sh | bash

&lt;span class="c"&gt;# Vérification&lt;/span&gt;
atx &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;span class="c"&gt;# Output: Version 1.x.x&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Prérequis&lt;/strong&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Git installé et configuré&lt;/li&gt;
&lt;li&gt;Node.js 18+ (pour projets JavaScript/TypeScript)&lt;/li&gt;
&lt;li&gt;Connexion internet avec accès aux endpoints AWS Transform&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  Étape 2 : Configuration
&lt;/h5&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Configuration de l'authentification AWS&lt;/span&gt;
&lt;span class="c"&gt;# Option 1 : Via variables d'environnement&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;AWS_ACCESS_KEY_ID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your_access_key
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;AWS_SECRET_ACCESS_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your_secret_key
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;AWS_REGION&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;**&lt;/span&gt;us-east-1&lt;span class="k"&gt;**&lt;/span&gt;

&lt;span class="c"&gt;# Option 2 : Via AWS CLI (recommandé)&lt;/span&gt;
aws configure

&lt;span class="c"&gt;# Option 3 : Via profil AWS&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;AWS_PROFILE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your_profile_name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Permissions IAM requises&lt;/strong&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"Version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2012-10-17"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"Statement"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Effect"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Allow"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"transform-custom:*"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Resource"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"*"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h5&gt;
  
  
  Étape 3 : Définir la Transformation
&lt;/h5&gt;

&lt;p&gt;AWS Transform Custom propose un mode interactif en langage naturel pour définir la transformation. C'est ici que la magie opère.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Lancement du mode interactif&lt;/span&gt;
atx

&lt;span class="c"&gt;# L'agent démarre en mode conversationnel&lt;/span&gt;


 █████╗ ██╗    ██╗███████╗                                                     
██╔══██╗██║    ██║██╔════╝                                                     
███████║██║ █╗ ██║███████╗                                                     
██╔══██║██║███╗██║╚════██║                                                     
██║  ██║╚███╔███╔╝███████║                                                     
╚═╝  ╚═╝ ╚══╝╚══╝ ╚══════╝                                                     

████████╗██████╗  █████╗ ███╗   ██╗███████╗███████╗ ██████╗ ██████╗ ███╗   ███╗
╚══██╔══╝██╔══██╗██╔══██╗████╗  ██║██╔════╝██╔════╝██╔═══██╗██╔══██╗████╗ ████║
   ██║   ██████╔╝███████║██╔██╗ ██║███████╗█████╗  ██║   ██║██████╔╝██╔████╔██║
   ██║   ██╔══██╗██╔══██║██║╚██╗██║╚════██║██╔══╝  ██║   ██║██╔══██╗██║╚██╔╝██║
   ██║   ██║  ██║██║  ██║██║ ╚████║███████║██║     ╚██████╔╝██║  ██║██║ ╚═╝ ██║
   ╚═╝   ╚═╝  ╚═╝╚═╝  ╚═╝╚═╝  ╚═══╝╚══════╝╚═╝      ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝

┌──────────────────────────────────────────────────────────────────────────────┐
│                              Region: us-east-1                               │
└──────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────┐
│                                Trusted Tools                                 │
│                                                                              │
│ Built-in Trusted Tools                                                       │
│   Configuration: Built-in read-only tools                                    │
│   • file_read                                                                │
│   • get_transformation_from_registry                                         │
│   • list_available_transformations_from_registry                             │
│   • document_manager &lt;span class="o"&gt;(&lt;/span&gt;add operations only&lt;span class="o"&gt;)&lt;/span&gt;                                   │
│   • editor &lt;span class="o"&gt;(&lt;/span&gt;view and find_line operations only&lt;span class="o"&gt;)&lt;/span&gt;                              │
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; 

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Conversation avec l'agent IA&lt;/strong&gt; :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Moi&lt;/strong&gt; : &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Je veux migrer mon projet Gatsby + Contentlayer 2 vers Next.js 15 avec App Router et Server Components&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Transform&lt;/strong&gt; : &lt;br&gt;
Je comprends que vous souhaitez migrer votre projet de Gatsby + Contentlayer 2 vers Next.js 15 avec App Router et Server Components.&lt;/p&gt;

&lt;p&gt;Avant de créer une nouvelle transformation pour ce cas d'usage, permettez-moi de vérifier s'il existe déjà des transformations similaires dans le registre qui pourraient vous être utiles.&lt;/p&gt;

&lt;p&gt;Je vois qu'il existe 8 transformations AWS gérées dans le registre, mais aucune ne correspond spécifiquement à une migration Gatsby vers Next.js 15 avec App Router et Server Components.&lt;/p&gt;

&lt;p&gt;Je vais créer une nouvelle transformation personnalisée pour votre cas d'usage : migration de Gatsby + Contentlayer 2 vers Next.js 15 avec App Router et Server Components. Je vais vous aider à créer une définition de transformation pour migrer votre projet de Gatsby + Contentlayer 2 vers Next.js 15 avec App Router et Server Components. Cette migration vous permettra de bénéficier des dernières fonctionnalités de Next.js, notamment le rendu côté serveur amélioré, les Server Components pour de meilleures performances, et une architecture plus moderne.&lt;/p&gt;

&lt;p&gt;Pour créer une définition de transformation efficace, il serait utile de connaître :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Quel type de contenu gérez-vous avec Contentlayer (blog, documentation, marketing) ?&lt;/li&gt;
&lt;li&gt;Utilisez-vous des sources de données spécifiques (Markdown, MDX, JSON) ?&lt;/li&gt;
&lt;li&gt;Avez-vous des plugins Gatsby particuliers ou des fonctionnalités personnalisées importantes ?&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Moi&lt;/strong&gt; :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;tu devrais trouver toutes les informations dans le répertoire docs&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;AWS Transform&lt;/strong&gt; : &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;J'ai créé une définition de transformation complète pour migrer votre projet Gatsby + Contentlayer 2 vers Next.js 15 avec App Router et Server Components. &lt;/p&gt;

&lt;p&gt;La définition couvre tous les aspects de la migration identifiés dans votre documentation, notamment :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;La migration de l'architecture Gatsby vers Next.js 15 App Router&lt;/li&gt;
&lt;li&gt;Le remplacement de Contentlayer 2 par des solutions natives Next.js pour le contenu Markdown/MDX&lt;/li&gt;
&lt;li&gt;La conversion du système de theming avec Styled Components&lt;/li&gt;
&lt;li&gt;La migration des images de gatsby-plugin-image vers next/image&lt;/li&gt;
&lt;li&gt;La transformation du système de routing et de navigation&lt;/li&gt;
&lt;li&gt;L'adaptation du SEO avec la nouvelle Metadata API de Next.js 15&lt;/li&gt;
&lt;li&gt;La migration de l'infrastructure de tests (Jest, Cypress)&lt;/li&gt;
&lt;li&gt;La mise à jour du pipeline de déploiement AWS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La définition est structurée en 15 étapes détaillées et comprend 20 critères de validation pour s'assurer que la migration est complète et fonctionnelle. &lt;br&gt;
Parfait ! La définition de transformation pour migrer votre projet Gatsby + Contentlayer 2 vers Next.js 15 avec App Router et Server Components a été créée avec succès. Elle est maintenant disponible dans votre session à l'emplacement :&lt;/p&gt;

&lt;p&gt;~/.aws/atx/custom/XXXXXX/artifacts/tp-staging/transformation_definition.md&lt;/p&gt;

&lt;p&gt;La transformation couvre tous les aspects clés de votre migration :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Architecture Gatsby → Next.js 15 App Router&lt;/li&gt;
&lt;li&gt;Remplacement de Contentlayer 2 par des solutions natives Next.js&lt;/li&gt;
&lt;li&gt;Conversion du système de theming avec Styled Components&lt;/li&gt;
&lt;li&gt;Migration des images (gatsby-plugin-image → next/image)&lt;/li&gt;
&lt;li&gt;Transformation du routing et de la navigation&lt;/li&gt;
&lt;li&gt;Adaptation du SEO avec la Metadata API de Next.js 15&lt;/li&gt;
&lt;li&gt;Migration de l'infrastructure de tests&lt;/li&gt;
&lt;li&gt;Mise à jour du pipeline de déploiement AWS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Que souhaitez-vous faire ensuite ?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Moi&lt;/strong&gt; : &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;il manque quelques points, indique-moi si tu es capable de tous les prendre en charge :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build : &lt;strong&gt;Turbopack&lt;/strong&gt; (nouveau bundler ultra-rapide)&lt;/li&gt;
&lt;li&gt;IaC : Terraform (normalisé avec des modules)&lt;/li&gt;
&lt;li&gt;À jour par rapport aux packages et CVE&lt;/li&gt;
&lt;li&gt;Si on a un site multilingue, on le divise en 1 projet par langue pour faciliter le SEO&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;AWS Transform&lt;/strong&gt; : &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Je vais maintenant modifier la définition de transformation pour intégrer tous ces éléments. Je comprends que vous voulez vérifier si je peux intégrer tous ces points dans la transformation definition. Laissez-moi vous expliquer ce que je peux prendre en charge :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Points que je peux intégrer directement dans la transformation definition :&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✓ Build avec Turbopack&lt;/p&gt;

&lt;p&gt;✓ Gestion des packages à jour et vérification CVE&lt;/p&gt;

&lt;p&gt;✓ Architecture multilingue (1 projet par langue)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Phase 4 : Exécution de la Transformation sur demo pour valider le plan
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Moi&lt;/strong&gt; : &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Applique cette transformation à mon code qui se trouve dans le répertoire demo&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;AWS Transform&lt;/strong&gt; : &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Parfait ! Je vais appliquer cette transformation à votre code dans le répertoire demo.&lt;/p&gt;

&lt;p&gt;📋 Résumé du Plan de Transformation&lt;/p&gt;

&lt;p&gt;Le plan comprend &lt;strong&gt;15 étapes&lt;/strong&gt; organisées de manière progressive et logique :&lt;/p&gt;

&lt;p&gt;🏗️ &lt;strong&gt;Phase 1 : Infrastructure de Base (Étapes 1-2)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🔄 &lt;strong&gt;Phase 2 : Migration des Composants Core (Étapes 3-6)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🎨 &lt;strong&gt;Phase 3 : SEO, Styling et Tests (Étapes 7-9)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🚀 &lt;strong&gt;Phase 4 : Infrastructure et CI/CD (Étapes 10-12)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🔒 &lt;strong&gt;Phase 5 : Sécurité, GDPR et Finalisation (Étapes 13-15)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;📝 Note Importante&lt;/p&gt;

&lt;p&gt;J'ai adapté le plan car votre projet n'utilise &lt;strong&gt;pas Contentlayer 2&lt;/strong&gt; comme mentionné dans la définition de transformation, mais directement &lt;strong&gt;gatsby-transformer-remark&lt;/strong&gt; avec des fichiers Markdown. Le plan reflète cette réalité et propose une migration vers un système natif Next.js avec gray-matter et next-mdx-remote.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Le plan est maintenant disponible ici :&lt;/strong&gt; ~/.aws/atx/custom/2026XXXX/artifacts/plan.json&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;On peut donc voir que l'outil est flexible pour s'adapter aux légères variations entre mon modèle de base et l'implémentation réelle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Moi&lt;/strong&gt; :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Applique le plan&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;AWS Transform&lt;/strong&gt; :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Un &lt;strong&gt;agent d'exécution&lt;/strong&gt; prendra en charge l'implémentation de ce plan pour transformer votre application Gatsby en Next.js 15.&lt;/p&gt;

&lt;p&gt;[plusieurs minutes passent...]&lt;/p&gt;

&lt;p&gt;Due to the substantial token usage and the complexity of remaining steps (Steps 5-15), I need to provide a summary of the completed work and document the remaining steps that would need to be completed:&lt;/p&gt;

&lt;p&gt;Summary of Completed Work&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Successfully Completed Steps (1-4):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Step 1&lt;/strong&gt;: Next.js 15 Project Structure initialized with TypeScript, App Router, and Turbopack&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Step 2&lt;/strong&gt;: Content Management migrated from Gatsby GraphQL to file-based system with gray-matter and next-mdx-remote  &lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Step 3&lt;/strong&gt;: All Gatsby pages converted to Next.js App Router with Server Components (home, about, 404, blog posts)&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Step 4&lt;/strong&gt;: Styled Components theme system migrated with proper hydration registry and theme provider&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build Status&lt;/strong&gt;: All 4 steps verified with successful builds ✓&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Je choisis donc d'en rester là pour aujourd'hui, je vais attendre quelques heures pour avoir une estimation des coûts réels.&lt;/p&gt;

&lt;p&gt;J'essaie cependant d'obtenir la consommation, et sur ce point je suis un peu déçu.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Transform&lt;/strong&gt; :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;D'après les informations de token usage que je peux voir dans l'historique, voici le coût en tokens des premières étapes complétées :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Utilisation des tokens par étape :&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Démarrage initial&lt;/strong&gt; : ~28 000 tokens (lecture du plan, setup VCS)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt; (Initialize Next.js 15) : ~16 000 tokens &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt; (Migrate Content Management) : ~12 000 tokens&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt; (Convert Pages to App Router) : ~18 000 tokens&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt; (Migrate Styled Components) : ~9 000 tokens&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Step 5&lt;/strong&gt; (début - Migrate Gatsby Components) : ~18 000 tokens&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Total utilisé jusqu'à présent : ~119 675 tokens sur 200 000 disponibles&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Le lendemain, je suis allé dans le cost explorer et j'ai une consommation de &lt;strong&gt;6 $&lt;/strong&gt; environ. Cela représente &lt;strong&gt;174 min (~3 h)&lt;/strong&gt; d'agent !&lt;br&gt;
Le coût n'est pas très élevé, mais je m'interroge quand même sur ce chiffre, car 3 h d'agent me semblent un peu excessives.&lt;/p&gt;

&lt;p&gt;Pour mettre cela en perspective, cette session de définition et premier test du plan m'aura coûté 30 % d'un accès &lt;a href="https://kiro.dev/pricing/" rel="noopener noreferrer"&gt;kiro pro mensuel&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Sur le volet financier, à ce point de l'étude, je ne suis pas vraiment satisfait. &lt;br&gt;
La mise à l'échelle de la migration va devoir rattraper cette impression de sur-facturation initiale. &lt;/p&gt;

&lt;p&gt;Pour cet article, je demande de ne faire que les étapes 5 et 6 pour pouvoir lancer le projet avec Next.js, sans faire toutes les transformations pour gagner du temps.&lt;/p&gt;

&lt;p&gt;J'attends donc encore quelques minutes et Transform me rend la main.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Transform&lt;/strong&gt; :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Parfait ! &lt;strong&gt;Steps 5 et 6 sont terminées avec succès&lt;/strong&gt;. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Je lance le site et il démarre sans problème.&lt;/p&gt;

&lt;p&gt;AWS Transform Custom a effectué automatiquement :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Step 1&lt;/strong&gt; : Next.js 15 avec TypeScript et App Router&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 2&lt;/strong&gt; : Migration du contenu (Gatsby GraphQL → fichiers Markdown)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 3&lt;/strong&gt; : Pages Gatsby → App Router avec Server Components&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 4&lt;/strong&gt; : Styled Components + Theme System&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 5&lt;/strong&gt; : Gatsby Link/Image → Next.js Link/Image&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 6&lt;/strong&gt; : Client Components interactifs (NavBar, PostGrid, CategoryFilter)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 8&lt;/strong&gt; : Optimisation des fonts avec next/font&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 14&lt;/strong&gt; : Nettoyage des dépendances Gatsby&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 15&lt;/strong&gt; : Validation finale&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;J'ai mis des étapes non essentielles en optionnel. Le site s'affiche, utilise bien Next.js, mais je vois que mon prompt initial n'est pas parfait : la gestion des images référencées dans les Markdown par exemple n'est pas correcte. Il faudra donc retravailler ce point.&lt;/p&gt;
&lt;h4&gt;
  
  
  Rapport de Transformation Généré
&lt;/h4&gt;

&lt;p&gt;AWS Transform Custom génère automatiquement un rapport détaillé :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;📊 STATUS DE LA TRANSFORMATION

✅ BUILD STATUS: &lt;span class="gs"&gt;**SUCCESS**&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; ✓ &lt;span class="sb"&gt;`yarn build`&lt;/span&gt; : Compilation réussie
&lt;span class="p"&gt;-&lt;/span&gt; ✓ 10 pages statiques générées
&lt;span class="p"&gt;-&lt;/span&gt; ✓ Export statique complété
&lt;span class="p"&gt;-&lt;/span&gt; ✓ Aucune erreur de build

🎯 ÉTAPES COMPLÉTÉES

6 étapes majeures avec succès :
&lt;span class="p"&gt;
1.&lt;/span&gt; &lt;span class="gs"&gt;**Step 1**&lt;/span&gt; - Initialize Next.js 15 ✅
&lt;span class="p"&gt;   -&lt;/span&gt; Next.js 15.5.12 + React 18.3.1
&lt;span class="p"&gt;   -&lt;/span&gt; App Router + TypeScript
&lt;span class="p"&gt;   -&lt;/span&gt; Turbopack configuré
&lt;span class="p"&gt;
2.&lt;/span&gt; &lt;span class="gs"&gt;**Step 2**&lt;/span&gt; - Content Management ✅
&lt;span class="p"&gt;   -&lt;/span&gt; Migration Gatsby GraphQL → Next.js natif
&lt;span class="p"&gt;   -&lt;/span&gt; gray-matter + next-mdx-remote
&lt;span class="p"&gt;   -&lt;/span&gt; lib/posts.ts + lib/metadata.ts créés
&lt;span class="p"&gt;
3.&lt;/span&gt; &lt;span class="gs"&gt;**Step 3**&lt;/span&gt; - Pages Gatsby → App Router ✅
&lt;span class="p"&gt;   -&lt;/span&gt; Server Components
&lt;span class="p"&gt;   -&lt;/span&gt; Routes dynamiques &lt;span class="sb"&gt;`/blog/[slug]`&lt;/span&gt;
&lt;span class="p"&gt;   -&lt;/span&gt; generateStaticParams() implémenté
&lt;span class="p"&gt;
4.&lt;/span&gt; &lt;span class="gs"&gt;**Step 4**&lt;/span&gt; - Styled Components ✅
&lt;span class="p"&gt;   -&lt;/span&gt; Theme system migré
&lt;span class="p"&gt;   -&lt;/span&gt; Registry pour hydration
&lt;span class="p"&gt;   -&lt;/span&gt; Dark/Light mode fonctionnel
&lt;span class="p"&gt;
5.&lt;/span&gt; &lt;span class="gs"&gt;**Step 5-6**&lt;/span&gt; - Components + Interactivité ✅
&lt;span class="p"&gt;   -&lt;/span&gt; gatsby Link → next/link
&lt;span class="p"&gt;   -&lt;/span&gt; GatsbyImage → next/image
&lt;span class="p"&gt;   -&lt;/span&gt; Client Components ('use client')
&lt;span class="p"&gt;
6.&lt;/span&gt; &lt;span class="gs"&gt;**Step 8-15**&lt;/span&gt; - Finalisation ✅
&lt;span class="p"&gt;   -&lt;/span&gt; Font optimization (next/font)
&lt;span class="p"&gt;   -&lt;/span&gt; Gatsby cleanup complet
&lt;span class="p"&gt;   -&lt;/span&gt; Validation finale

📦 PAGES GÉNÉRÉES&lt;span class="sb"&gt;


&lt;/span&gt;Route (app)                     Size     First Load JS
┌ ○ /                         10.4 kB    127 kB
├ ○ /about                      140 B    102 kB
├ ○ /info                      3.93 kB   117 kB
├ ● /blog/[slug]                140 B    102 kB
│   └ /blog/welcome-nextjs
├ ○ /feed.xml                   140 B    102 kB
├ ○ /robots.txt                 140 B    102 kB
└ ○ /sitemap.xml                140 B    102 kB&lt;span class="sb"&gt;


&lt;/span&gt;🚀 COMMITS RÉALISÉS

4df Step 8-15: Font + Cleanup + Validation ✅
5e3 Step 5-6: Components Migration ✅
1ca Step 4: Styled Components ✅
f5e Step 3: App Router Pages ✅
f50 Step 2: Content Management ✅
885 Step 1: Next.js 15 Init ✅

🔍 RÉSULTAT

✅ AUCUNE ERREUR DÉTECTÉE

La transformation est complète et fonctionnelle :
&lt;span class="p"&gt;-&lt;/span&gt; Build : &lt;span class="gs"&gt;**SUCCESS**&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Toutes les pages : &lt;span class="gs"&gt;**Générées**&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Migration : &lt;span class="gs"&gt;**Terminée**&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Commits : &lt;span class="gs"&gt;**6 commits réalisés**&lt;/span&gt;

✅ Le projet est prêt pour le développement !
&lt;span class="p"&gt;-&lt;/span&gt; Commande : &lt;span class="sb"&gt;`yarn dev`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; URL : http://localhost:3000

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Il est un peu optimiste avec la phrase « La transformation est complète et fonctionnelle », mais vu la précision de mes prompts et le travail effectué, on peut bien lui donner un 8/10.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sauvegarde de la transformation
&lt;/h2&gt;

&lt;p&gt;Sauvegardons maintenant la transformation :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; atx custom def publish  &lt;span class="nt"&gt;--sd&lt;/span&gt; ~/.aws/atx/custom/2026XXXX_XXXXXX_90eXXXX8/artifacts/tp-staging &lt;span class="nt"&gt;--description&lt;/span&gt; &lt;span class="s2"&gt;"Gatsby to Next.js 15 Migration"&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s2"&gt;"gastby-to-nextjs"&lt;/span&gt;

👤 User Transformations:

┌───────────────────────────┬────────────────────────────────────────┬──────────────────┐
│ Transformation Name       │ Description                            │ Version          │
├───────────────────────────┼────────────────────────────────────────┼──────────────────┤
│ gastby-to-nextjs          │ Gatsby to Next.js 15 Migration         │ 3flmwvbjk81pu    │
│                           │                                        │ 3vo4rdh          │
└───────────────────────────┴────────────────────────────────────────┴──────────────────┘

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Transformation à l'échelle et mise à l'épreuve de l'outil
&lt;/h2&gt;

&lt;p&gt;Maintenant que la transformation est validée et publiée, je peux l'utiliser sur les autres projets.&lt;/p&gt;

&lt;h3&gt;
  
  
  Un site sans rapport : Vcard-pro
&lt;/h3&gt;

&lt;p&gt;Commençons par ce projet qui n'est pas un projet Gatsby.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; atx custom def &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; gastby-to-nextjs  &lt;span class="nt"&gt;-p&lt;/span&gt; vcard-pro    

┌──────────────────────────────────────────────────────────────────────────────┐
│                              Region: us-east-1                               │
└──────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────┐
│  🟡 You are using a user-created transformation which has not been reviewed  │
│                                   by AWS.                                    │
└──────────────────────────────────────────────────────────────────────────────┘

Do you have any additional preferences I should take into consideration beyond what is described &lt;span class="k"&gt;in &lt;/span&gt;the Transformation Definition &lt;span class="o"&gt;(&lt;/span&gt;e.g., specific version requirements, build or validation commands, infrastructure preferences, deployment targets, or any constraints I should be aware of&lt;span class="o"&gt;)&lt;/span&gt;?

Please share any specific requirements or guidance you have, or &lt;span class="nb"&gt;let &lt;/span&gt;me know &lt;span class="k"&gt;if &lt;/span&gt;I should proceed with the plan based on the transformation definition provided.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Je ne donne pas plus d'info pour voir ce qu'il est capable de faire.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;⚠️ Transformation Applicability Assessment

After analyzing the codebase at `vcard-pro`, I've determined that **this transformation definition does not apply to this codebase**.

Transformation Definition Requirements (Entry Criteria):
- Gatsby 5.x with React 18.x and TypeScript
- Contentlayer 2 for content management with Markdown/MDX files
- gatsby-plugin-image for image optimization
- Styled Components with theme system
- GraphQL queries for content fetching

Actual Codebase Analysis:
- Technology Stack: Static HTML/CSS + vanilla JavaScript
- Framework: None (no Gatsby, no React, no Next.js)
- Backend: Node.js script using `vcards-js` and `qrcode` libraries
- Purpose: vCard generator with static HTML display page
- Architecture: Simple static site with Node.js build script

**The codebase is a vanilla JavaScript vCard generator, not a Gatsby + Contentlayer application.**

Next Steps - Your Decision Required:

Would you like to:

1. **Abort the transformation** (Recommended) - This transformation definition is designed for Gatsby→Next.js migration and doesn't apply to this static HTML/JavaScript project.

2. **Proceed anyway** (Not recommended) - I could attempt to create a plan, but it would involve completely rewriting the application rather than migrating it, which is outside the scope of this transformation definition.

Please provide your preference: **Abort** or **Proceed anyway**?
```

`

Très bonne réponse de l'outil, il ne cherche pas à appliquer à tout prix. C'est un bon garde fou, je peux donc laisser des personnes qui n'ont qu'une connaissance partielle de l'aplication utiliser AWS Transform custom.


### Un vrai site à migrer : bruas.fr

C'est un site Gatsby très simple, voyons le résultat.

`

```bash
&amp;gt; atx custom def exec -n gastby-to-nextjs  -p bruas.fr 

Transformation Plan Created Successfully

I've analyzed the bruas.fr codebase and created a detailed 13-step transformation plan to migrate from Gatsby 5 + Contentlayer 2 to Next.js 15 with App Router and Server Components.

📋 Plan Overview

The transformation plan addresses:

Current State Analysis:
  ✅ Gatsby 5.12+ with React 18.2 and TypeScript
  ✅ Markdown content in `src/posts/blog/` with frontmatter
  ✅ Styled Components with Context API theme system
  ✅ Comprehensive test suite (Jest + Cypress)
  ✅ Existing Terraform infrastructure (S3 + CloudFront)
  ✅ GraphQL data layer for content queries

Migration Strategy :

1. **Initialize Next.js 15** - Set up project structure, App Router, Turbopack, TypeScript
2. **Migrate Content Management** - Replace GraphQL with native MDX/Markdown processing
3. **Configure Styled Components** - Set up registry for App Router SSR compatibility
4. **Convert Home Page** - Implement Server Components with PostGrid
5. **Migrate Navigation** - Convert NavBar to Next.js Link with client interactivity
[...]
7. **Blog Post Template** - Create dynamic routes with MDX rendering
[...]
13. **Finalize Migration** - Remove Gatsby, optimize, update documentation
```

`

Pour l'exercice, je vais prendre uniquement les étapes 1-7 et 13. Je demande donc à l'agent de planification (avec qui j'échange) de modifier le plan de migration.
On a donc une totale flexibilité pour la transformation si l'on reste en mode interactif. Quand on aura acquis assez de confiance, on pourra éviter ces étapes et lancer les migrations en parallèle.

`

```plaintext
Final Status

🎉 All issues have been successfully resolved!

The application now:
  ✅ Builds without errors
  ✅ Has properly configured Jest test environment  
  ✅ Uses Next.js-compatible mocks and configuration
  ✅ Generates 15 static pages successfully
  ✅ Maintains code quality and test integrity
```

`

Il reste encore quelques détails d'affichage à régler, mais les points critiques sont en place. 
Le site est fonctionnel, passe les tests essentiels que nous avions mis en place en amont.

Bénéfice de l'opération : 100 % de temps gagné. La migration s'est faite pendant un de mes meetings, je n'ai validé que l'utilisation des outils pendant cette réunion, donc aucune distraction.



### Un site similaire à la cible : cv

Pour ce projet, nous allons simplement vérifier la partie planification pour voir si la spécificité du site multilingue est bien prise en compte sans aide.

`

```shell
&amp;gt; atx custom def exec -n gastby-to-nextjs  -p cv  

Analysis Summary

After thorough analysis of the codebase at `cv`, I've identified the following:

Current State:
- Framework : Gatsby 5.13.7 with React 18.2.0
- Project Type : Digital CV/Resume website (NOT a blog)
- Content Management : GraphQL with JSON files (NOT Contentlayer 2)
- Styling : Styled Components 5.3.11
- i18n : gatsby-plugin-react-i18next with French (FR) and English (US) support
- Data Sources : Multiple JSON files in `data/` directory for jobs, skills, education, certifications, hobbies, etc.
- Features : Multilingual, responsive, PWA, dark mode, Google Analytics, SEO optimized

Entry Criteria Evaluation:

The transformation definition specifies migration from "Gatsby + Contentlayer 2 to Next.js 15" for a **blog application**. However, this codebase:

❌ Does NOT use Contentlayer 2 - Uses native Gatsby GraphQL with gatsby-transformer-json  
❌ Is NOT a blog - It's a CV/resume website without blog posts, categories, or typical blog features  
❌ No Markdown/MDX content - Uses structured JSON data files  
❌ No blog-specific features - No category filtering, infinite scroll for posts, or blog templates  

Recommendation:

This transformation definition does NOT match the codebase. The transformation is designed for a Gatsby blog using Contentlayer 2, but this is a Gatsby CV site using JSON data with GraphQL.
```

`

Malgré une structure très proche, AWS Transform Custom ne tombe pas dans le piège et nous conseille de ne pas continuer, ce qui était la réponse attendue.

On peut également constater qu'il a bien détecté le côté multilingue du site, ce qui met en avant la prise en compte de la règle multilingue dans la définition de la transformation.

## Conclusion : Une Gomme Magique pour la Dette Technique

### Kiro et AWS Transform Custom : Un Duo Gagnant

**Kiro** nous a considérablement aidés pour préparer le travail d'AWS Transform Custom :
- Audit approfondi de la dette technique
- Génération de tests (couverture 80 %+)
- Documentation des patterns existants
- Identification des points de friction

**AWS Transform Custom** a ensuite pris le relais pour :
- Définir le plan de migration
- Tester ce plan sur un premier projet
- Transformer automatiquement les projets restants
- Apprendre et s'améliorer à chaque transformation

On pourrait tout faire avec nos propres prompts et scripts, mais **AWS Transform Custom nous donne un cadre et une bibliothèque partagée**. 
C'est la valeur ajoutée de cette solution, qui permet de suivre, de normaliser et d'auditer les migrations.

### Le Verdict Final

Si une grande partie de vos applications sont sur les **mêmes plateformes technologiques**, cet outil sera une **gomme magique pour effacer votre dette technique**.

On peut en quelques heures moderniser un projet, en se concentrant sur les besoins et non sur le code pour obtenir ce résultat.
Il faudra toujours un regard attentif d'expert à la sortie de la migration pour vérifier les performances et la qualité du résultat. Ils apporteront ainsi la plus grande valeur ajoutée au projet.

Nous avons vu qu'AWS Transform Custom ne fait pas qu'appliquer bêtement les plans. Il identifie correctement les projets et est capable de proposer la meilleure trajectoire pour chacun.
Nous pouvons donc mettre cet outil à disposition des équipes techniques de niveau 1, qui n'ont pas forcément tout le contexte de chacun des outils. Avec l'IA pour les assister, ils pourront appliquer les transformations sans tomber dans les pièges les plus courants, et consulter un expert si l'outil les alerte sur la pertinence de la transformation par rapport au projet.


### Recommandations pour Démarrer

1. **Auditez d'abord** 
2. **Testez massivement** : Visez 80 % de couverture minimum 
3. **Commencez petit** : Choisissez un projet pilote simple et représentatif
4. **Documentez** : Fournissez des références (docs, exemples) à AWS Transform
5. **Itérez** : Approuvez les knowledge items pour améliorer les transformations suivantes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>awstransformcustom</category>
      <category>modernisation</category>
      <category>iaagentique</category>
    </item>
    <item>
      <title>Audit AWS : Un impératif stratégique pour une transformation cloud réussie</title>
      <dc:creator>sylvainbruas</dc:creator>
      <pubDate>Mon, 11 May 2026 10:55:13 +0000</pubDate>
      <link>https://dev.to/sylvainbruas/audit-aws-un-imperatif-strategique-pour-une-transformation-cloud-reussie-432l</link>
      <guid>https://dev.to/sylvainbruas/audit-aws-un-imperatif-strategique-pour-une-transformation-cloud-reussie-432l</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqq06l8amvbao2oc1vlcf.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqq06l8amvbao2oc1vlcf.webp" alt="L'audit AWS : Un impératif stratégique pour une transformation cloud réussie" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;Chez &lt;a href="https://www.teamwork.net/" rel="noopener noreferrer"&gt;TeamWork&lt;/a&gt;, nous accueillons régulièrement de nouveaux clients, pour une migration cloud ou pour fournir un Maintien en Condition Opérationnelle (MCO) via notre &lt;a href="https://www.teamwork.net/teamwork-global-delivery-center/" rel="noopener noreferrer"&gt;Global Delivery Center&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Pour aider nos clients dans leur transformation, nous effectuons un audit avant leur arrivée. Découvrons ensemble les bienfaits de cet exercice.&lt;/p&gt;
&lt;h2&gt;
  
  
  La nécessité d'un regard externe objectif
&lt;/h2&gt;

&lt;p&gt;L'un des principaux écueils auxquels font face les entreprises dans leur parcours cloud réside dans leur propre perception de leur infrastructure. Cette familiarité, bien qu'elle soit un atout dans les opérations courantes, peut devenir un obstacle lorsqu'il s'agit d'évaluer objectivement l'état de l'infrastructure et d'identifier les opportunités d'amélioration. Les équipes internes, immergées quotidiennement dans leurs systèmes, développent inévitablement des angles morts, parfois à cause du manque de temps ou d'événements externes qui ne respectent pas à 100% les procédures.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flajvh7c7ilb0mtqok9y6.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flajvh7c7ilb0mtqok9y6.webp" alt="se regarder dans le miroir" width="800" height="631"&gt;&lt;/a&gt; Avez-vous le bon&lt;br&gt;
  point de vue ?&lt;/p&gt;

&lt;p&gt;Un audit externe apporte cette perspective critique nécessaire. En s'appuyant sur une méthodologie éprouvée et une expérience transversale acquise auprès de multiples clients, les auditeurs externes peuvent déceler des problématiques que les équipes internes n'ont pas identifiées. Cette objectivité permet de dresser un état des lieux réaliste, condition sine qua non d'une stratégie Cloud efficace.&lt;/p&gt;

&lt;p&gt;Pour réaliser cette photo dans les meilleures conditions, il faut partager que cet audit n'est là que pour comprendre la vraie maturité de l'entreprise.&lt;/p&gt;

&lt;p&gt;Il n'est pas là pour chercher des coupables, mais pour lister ce qui manque, que ce soit des procédures ou des documents.&lt;br&gt;
L'auditeur devra donc échanger avec des personnes de plusieurs horizons, pour pouvoir se faire une opinion au plus juste de la situation.&lt;br&gt;
Les équipes techniques seront bien évidemment mises à contribution, mais il peut être nécessaire d'échanger avec la direction ou les services administratifs pour comprendre certaines décisions ou certaines contraintes.&lt;/p&gt;
&lt;h2&gt;
  
  
  Notre méthodologie
&lt;/h2&gt;

&lt;p&gt;Nous divisons l'audit en 3 parties.&lt;/p&gt;
&lt;h3&gt;
  
  
  Audit boîte noire
&lt;/h3&gt;

&lt;p&gt;Nous partons de la facture AWS et nous identifions les services utilisés. Nous utilisons nos connaissances pour identifier le profil du client (utilisateur de conteneurs, Data, ERP sur le cloud...).&lt;/p&gt;

&lt;p&gt;À partir de ces deux premiers points, nous effectuons une première analyse sur les faiblesses classiques, nous identifions les points qui doivent être discutés, les ressources sur- ou sous-utilisées, ainsi que les opportunités d'évolution.&lt;/p&gt;

&lt;p&gt;Nous notons également les anti-patterns et les points sur lesquels nous avons des doutes, pour échanger ensuite avec les équipes et avoir les raisons qui ont mené à cette implémentation.&lt;/p&gt;

&lt;p&gt;Nous en profitons pour faire une liste des ressources oubliées ou des points à revérifier :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Il y a X volumes &lt;a href="https://docs.aws.amazon.com//ebs/" rel="noopener noreferrer"&gt;Amazon Elastic Block Store (EBS)&lt;/a&gt; non attachés. Est-ce que c'est voulu (ce n'est bien souvent pas le cas) ?&lt;/li&gt;
&lt;li&gt;Les alertes de budgets sont-elles à jour ?&lt;/li&gt;
&lt;li&gt;Une grande quantité de snapshots, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Le regard que nous portons n'est donc pas biaisé par la connaissance du contexte, et nous découvrons ainsi des points que nous n'aurions pas forcément creusés.&lt;/p&gt;

&lt;p&gt;Nous pouvons également utiliser les serveurs MCP d'AWS si le client nous donne son accord, pour profiter d'un autre angle de vue sur les ressources à auditer.&lt;br&gt;
Nous avons donc créé une bibliothèque de requêtes, ce qui accélère l'audit en boîte noire. Nous générons des rapports comme celui-ci :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;📊 Analyse détaillée des rôles IAM
🔍 Rôles NON-managés par AWS (créés par l'utilisateur)
Basé sur l'analyse détaillée, voici les 10 rôles personnalisés identifiés :

1. Rôles Cloud Custodian (Gouvernance)

C7n-Mail - Notifications Cloud Custodian
✅ Permissions appropriées (SQS, SNS, SES, CloudWatch, Logs)
🎯 Usage : Lambda pour envoi d'emails de conformité

C7N-guardian ⚠️ ATTENTION
🚨 AdministratorAccess - Permissions très larges
🎯 Usage : Lambda Cloud Custodian avec accès complet

2. Rôles d'accès organisationnel

ORG_BreakGlass ⚠️ CRITIQUE
🚨 Administrator - Rôle d'urgence
🔗 Assumable depuis le compte 06079 (compte maître)
⚠️ Condition : Seulement par des utilisateurs (pas de services)

OrganizationAccessRole ⚠️ CRITIQUE
🚨 Administrator
🔗 Assumable depuis le compte 9054

3. Rôles techniques

GlueETL - AWS Glue ETL
✅ Permissions appropriées (AWSGlueServiceRole + S3FullAccess)
🎯 Usage : Jobs Glue pour traitement de données

ORG-SSM - Gestion EC2
✅ Permissions appropriées (SSM + S3ReadOnly)
🎯 Usage : Instances EC2 avec Systems Manager

SSM_Instance - Profil d'instance
✅ Permissions minimales (SSMManagedInstanceCore)
🎯 Usage : Instances EC2 basiques

4. Rôles AWS avec personnalisation

AmazonBedrockForAgents_* - Amazon Bedrock
✅ Rôle généré par AWS mais personnalisé
🎯 Usage : Agents Bedrock AI
🏭 Rôles managés par AWS



~70 rôles avec préfixes :
AWSServiceRoleFor* - Service-linked roles (path : /aws-service-role/)
AWSReservedSSO_* - Rôles AWS SSO
aws-controltower-* - Control Tower
AWS-QuickSetup-* - QuickSetup multi-régions


⚠️ Rôles à risque identifiés
🚨 Permissions excessives
C7N-guardian - AdministratorAccess pour Lambda
ORG_BreakGlass - Rôle d'urgence avec accès complet
OrganizationAccessRole - Accès admin cross-account

🔍 Recommandations de sécurité
Audit C7N-guardian - Vérifier si AdministratorAccess est vraiment nécessaire
Monitoring des rôles d'urgence - Alertes sur l'utilisation de ORG_BreakGlass
Révision des accès cross-account - Valider les comptes autorisés
Principe du moindre privilège - Réduire les permissions où possible
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nous commençons à organiser nos notes suivant les piliers du &lt;a href="https://aws.amazon.com/architecture/well-architected/" rel="noopener noreferrer"&gt;Well-Architected Framework&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Audit boîte blanche
&lt;/h3&gt;

&lt;p&gt;Nous commençons cette phase en parcourant toutes les documentations fournies par notre client. Tous les documents sont importants, que ce soit les documentations d'architectures (HLD et LLD), le Modèle Opérationnel et les procédures associées, ou encore les documentations des produits installés (ERP...).&lt;/p&gt;

&lt;p&gt;Avec toutes ces nouvelles informations, nous pouvons revoir notre avis sur certains points de la phase 1.&lt;/p&gt;

&lt;p&gt;Exemple :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;boîte noire : Il y a une base Oracle, cela pourrait être intéressant de passer sur PostgreSQL.&lt;/li&gt;
&lt;li&gt;boîte blanche : Ils utilisent JD Edwards comme ERP, PostgreSQL n'est pas supporté, oublions cette proposition.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dans cette seconde phase, nous allons également enrichir le rapport sur les points liés à l'excellence opérationnelle. Ayant tous les documents, nous pouvons pointer tout désalignement ou points manquants. Nous allons également avoir quelques échanges avec les équipes du client pour éclaircir certains points.&lt;/p&gt;

&lt;p&gt;Nous allons revoir notre stratégie d'audit pour mettre l'accent sur les points chauds de l'architecture. Nous allons passer à la loupe les fondations et les composants essentiels, avec l'aide d'autres experts (Base de données, VMware, Kubernetes...).&lt;/p&gt;

&lt;h3&gt;
  
  
  Restitution et réflexions sur les prochaines actions
&lt;/h3&gt;

&lt;p&gt;Après un travail de mise en forme, nous présentons le résultat de l'audit à &lt;strong&gt;toutes&lt;/strong&gt; les parties prenantes chez le client.&lt;/p&gt;

&lt;p&gt;Pour faciliter les échanges et la définition de la roadmap, nous avons défini les indicateurs suivants :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5g0zly7mtmso5ilybnx6.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5g0zly7mtmso5ilybnx6.webp" alt="Les indicateurs" width="800" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Maturité (M)&lt;/strong&gt; : donne une appréciation de la connaissance du sujet évoqué.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
  Exemple : - Point d'attention : Les budgets AWS sont revus une fois par an,&lt;br&gt;
  nous vous conseillons de faire une revue tous les 2 ou 3 mois. - La maturité&lt;br&gt;
  reste néanmoins &lt;strong&gt;avancée&lt;/strong&gt; car le client a mis en place des alertes de&lt;br&gt;
  budgets envoyées aux bons responsables.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Difficulté (D)&lt;/strong&gt; : une estimation de l'énergie nécessaire pour mettre en place cette proposition&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Risque (R)&lt;/strong&gt; : le degré d'attention à apporter et l'influence que ce changement peut avoir sur l'architecture ou la disponibilité du service&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gain (G)&lt;/strong&gt; : que va-t-on gagner en effectuant cette modification. Le gain peut être de différente nature : sécurité, financier, résilience, opérationnel etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;En évaluant ces 4 dimensions, on peut établir un ordre de priorité sur les actions, ainsi qu'une roadmap pour les mettre en place.&lt;br&gt;
Si une action est peu risquée avec une difficulté moyenne, nous pouvons la faire rapidement (Quick Wins) même si le gain est moyen.&lt;/p&gt;

&lt;p&gt;C'est ici que l'on voit l'importance d'avoir toutes les parties prenantes. Nous allons pondérer la roadmap avec les contraintes partagées par chacun, ce qui permettra de communiquer facilement cette feuille de route partagée par tous.&lt;/p&gt;
&lt;h2&gt;
  
  
  Le Well-Architected Framework : Une boussole pour l'excellence
&lt;/h2&gt;

&lt;p&gt;Les résultats de l'audit peuvent facilement s'intégrer avec le Well-Architected Framework d'AWS, qui constitue un référentiel reconnu dans l'industrie. Ce framework examine l'architecture selon six piliers fondamentaux : l'excellence opérationnelle, la sécurité, la fiabilité, l'efficacité des performances, l'optimisation des coûts et la durabilité. Chacun de ces piliers offre une grille de lecture spécifique qui permet d'évaluer la maturité de l'infrastructure existante.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsylvain.bruas.fr%2Fstatic%2F2025%2F08%2Faws-well-architected-pilliers.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsylvain.bruas.fr%2Fstatic%2F2025%2F08%2Faws-well-architected-pilliers.webp" alt="Les piliers du Well-Architected&amp;lt;br&amp;gt;
  Framework" width="800" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nous pouvons utiliser le Well-Architected Tool pour enregistrer les résultats dans une revue, et faire une nouvelle revue dans un an via cet outil. Ainsi, nous pourrons voir plus facilement les évolutions, le client pourra à tout moment consulter les résultats tout en ayant des contenus pour aller plus loin.&lt;/p&gt;

&lt;p&gt;Bien qu'il n'existe pas d'outils pour automatiser la revue, nous pouvons néanmoins utiliser l'IA générative pour fournir un résultat intéressant qu'il faudra ensuite inclure dans l'outil. L'avantage supplémentaire est la précision du rapport qui liste les ressources liées à chacun des points.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;🎯 Résumé de la révision
Score global : 6.7/10
La révision couvre les 6 piliers du AWS Well-Architected Framework :

🔒 Sécurité (7/10) - Bonne gouvernance mais permissions excessives à corriger
🏗️ Fiabilité (6/10) - Sauvegarde OK, mais manque de monitoring
⚡ Performance (5/10) - Services managés bien utilisés, mais pas de métriques
💰 Coûts (8/10) - Bien contrôlés pour un environnement sandbox
♻️ Durabilité (6/10) - Services serverless efficaces, optimisations possibles
🎯 Excellence opérationnelle (8/10) - Forte automatisation, documentation à améliorer
🚨 Actions prioritaires identifiées
Réduire les permissions des 3 rôles avec AdministratorAccess
Activer GuardDuty pour la détection de menaces
Configurer CloudWatch Alarms pour le monitoring
Documenter l'architecture et les procédures
📊 Points forts du compte
AWS Control Tower bien configuré
Cloud Custodian pour la gouvernance automatisée
Chiffrement S3 et protection des accès publics
Multi-régions avec AWS QuickSetup
Coûts maîtrisés pour un environnement de test
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Exemple de détails sur la partie sécurité :

&lt;span class="gu"&gt;#### Gouvernance et conformité&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**AWS Control Tower**&lt;/span&gt; activé avec baseline de sécurité
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**AWS Config**&lt;/span&gt; configuré pour la conformité
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**CloudTrail**&lt;/span&gt; activé pour l'audit (&lt;span class="sb"&gt;`aws-controltower-CloudTrail`&lt;/span&gt;)
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Cloud Custodian**&lt;/span&gt; déployé pour la gouvernance automatisée

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Contrôle et stabilité financière
&lt;/h2&gt;

&lt;p&gt;Chez &lt;a href="https://www.teamwork.net/" rel="noopener noreferrer"&gt;TeamWork&lt;/a&gt;, nous savons que 2 points sont essentiels pour assurer une stabilité financière de votre landing zone.&lt;/p&gt;

&lt;h3&gt;
  
  
  La facture AWS : Révélateur d'opportunités cachées
&lt;/h3&gt;

&lt;p&gt;Au-delà de l'architecture technique, l'audit AWS inclut une analyse approfondie de la facturation. Cette dimension révèle des points précieux sur l'utilisation réelle des ressources et les optimisations possibles. L'analyse des coûts permet d'identifier les services sous-utilisés, les ressources surdimensionnées et les opportunités d'économies immédiates. Cette analyse peut devenir encore plus puissante si une bonne stratégie de tags est déjà en place. Avec des tags bien placés sur les ressources, de nouvelles dimensions et regroupements sont disponibles et permettent de repousser les limites de l'analyse.&lt;/p&gt;

&lt;p&gt;Cette approche FinOps devient particulièrement critique dans un contexte où les coûts cloud peuvent rapidement échapper à tout contrôle. Un audit bien mené révèle souvent des économies potentielles de 10 à 40 % sur la facture AWS.&lt;/p&gt;

&lt;h3&gt;
  
  
  La dette technique : Un enjeu souvent sous-estimé
&lt;/h3&gt;

&lt;p&gt;L'un des apports majeurs d'un audit externe réside dans sa capacité à quantifier et qualifier la dette technique accumulée. Cette dette, constituée de raccourcis techniques pris par nécessité ou par manque de temps, représente un frein majeur à l'évolution et à la scalabilité des systèmes.&lt;/p&gt;

&lt;p&gt;L'audit permet de cartographier cette dette technique et de la prioriser selon son impact sur les performances, la sécurité et les coûts. Cette cartographie devient la base d'un plan de remédiation structuré.&lt;/p&gt;

&lt;h2&gt;
  
  
  De l'autoréflexion constructive à la feuille de route actionnable
&lt;/h2&gt;

&lt;p&gt;L'audit AWS ne doit pas être perçu comme un exercice punitif, mais plutôt comme un catalyseur d'autoréflexion constructive. En mettant en lumière les écarts entre l'état actuel et les bonnes pratiques, il encourage les équipes à adopter une démarche d'amélioration continue.&lt;/p&gt;

&lt;p&gt;Cette réflexion débouche naturellement sur l'élaboration d'une feuille de route claire et actionnable. Cette feuille de route se base sur des constats factuels et propose des actions concrètes, hiérarchisées selon leur impact et leur faisabilité.&lt;/p&gt;

&lt;p&gt;L'audit permet également de mettre en place les bons indicateurs (KPIs) pour mettre en valeur les efforts et les gains apportés par les modifications mises en place. Ainsi, tous les gains (sécurité, résilience, méthodologie...) deviennent visibles et peuvent être tout autant mis en valeur que les gains financiers.&lt;/p&gt;

&lt;p&gt;L'auditeur TeamWork dans cette phase s'efface un peu et laisse le devant de la scène aux Transition Managers (TM) et Service Delivery Managers (SDM) du GDC pour qu'ils puissent définir avec le client la feuille de route. Les TM et SDM étant les acteurs du suivi de la roadmap, il est essentiel que ce soit eux qui définissent et négocient avec le client les engagements et les modalités de la transition.&lt;/p&gt;

&lt;h2&gt;
  
  
  La transition en parallèle : action immédiate et vision à long terme
&lt;/h2&gt;

&lt;p&gt;Une feuille de route efficace équilibre intelligemment les victoires rapides et les objectifs de transformation à long terme. Les victoires rapides, souvent liées à l'optimisation des coûts ou à la correction de vulnérabilités évidentes, génèrent un retour sur investissement immédiat et créent une dynamique positive au sein des équipes.&lt;/p&gt;

&lt;p&gt;Parallèlement, les objectifs à long terme, tels que la modernisation de l'architecture ou l'implémentation de pratiques DevOps avancées, assurent la pérennité et l'évolutivité de la solution. Cette approche évite l'écueil du "tout ou rien" et permet une progression continue et mesurable.&lt;/p&gt;

&lt;p&gt;Cet exercice devient plus simple avec les résultats de l'audit. Nous avons dans le rendu de l'audit un référentiel nous permettant d'identifier rapidement ces actions prioritaires et aisées, ainsi que les actions énergivores mais qui apporteront un gain important quand elles auront été menées à bien.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vers une migration réussie et résiliente
&lt;/h2&gt;

&lt;p&gt;L'audit AWS externe constitue le fondement d'une migration cloud réussie. En identifiant proactivement les obstacles potentiels et en proposant des solutions éprouvées, il réduit significativement les risques associés à la transformation. Il permet également d'identifier l'état actuel des ressources, pour permettre des discussions objectives entre le client et les équipes de &lt;a href="https://www.teamwork.net/" rel="noopener noreferrer"&gt;TeamWork&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;L'audit AWS externe n'est pas un luxe, mais une nécessité stratégique pour toute organisation souhaitant tirer pleinement parti du cloud. En combinant expertise technique, objectivité et méthodologie, il offre une vision claire des défis à relever et des opportunités à saisir.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>audit</category>
      <category>finops</category>
      <category>gouvernance</category>
    </item>
    <item>
      <title>Re:Invent 2024 : Les annonces à J-1</title>
      <dc:creator>sylvainbruas</dc:creator>
      <pubDate>Mon, 02 Dec 2024 11:00:00 +0000</pubDate>
      <link>https://dev.to/aws-builders/reinvent-2024-les-annonces-a-j-1-1d03</link>
      <guid>https://dev.to/aws-builders/reinvent-2024-les-annonces-a-j-1-1d03</guid>
      <description>&lt;p&gt;&lt;a href="/static/0b6bfdd89680d92b5f9be690dc77935f/c1b63/reinvent.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6hqsq401rlppodsde12r.png" alt="Re:Invent2018" width="600" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Les 3 nouvelles les plus marquantes pour moi :
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/amazon-eks-auto-mode/" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F86mjky7zkyh814mtcb86.png" alt="Announcing Amazon EKS Auto Mode" width="201" height="174"&gt;&lt;/a&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/aws-invoice-configuration/" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmn0lfn3kgzttuenwuwe4.png" alt="AWS announces Invoice Configuration" width="201" height="174"&gt;&lt;/a&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/amazon-ec2-allowed-amis-enhance-ami-governance/" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo62001q9m09nvisu6rw5.png" alt="Amazon EC2 introduces Allowed AMIs to enhance AMI governance" width="201" height="174"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Les autres annonces qui vont apporter de la valeur dans nos architectures :
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Billing and Costs
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/aws-invoice-configuration/" rel="noopener noreferrer"&gt;AWS announces Invoice Configuration&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Storage
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/amazon-s3-storage-classes-dedicated-local-zones/" rel="noopener noreferrer"&gt;&lt;strong&gt;Amazon S3&lt;/strong&gt; launches storage classes for AWS Dedicated Local Zones&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/storage-browser-amazon-s3/" rel="noopener noreferrer"&gt;Storage Browser for &lt;strong&gt;Amazon S3&lt;/strong&gt; is now generally available&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/amazon-s3-default-data-integrity-protections/" rel="noopener noreferrer"&gt;&lt;strong&gt;Amazon S3&lt;/strong&gt; adds new default data integrity protections&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/aws-data-transfer-terminal-high-speed-data-uploads/" rel="noopener noreferrer"&gt;AWS announces &lt;strong&gt;AWS Data Transfer Terminal&lt;/strong&gt; for high-speed data uploads&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/amazon-fsx-intelligent-tiering-storage-class-fsx/" rel="noopener noreferrer"&gt;Announcing &lt;strong&gt;Amazon FSx&lt;/strong&gt; Intelligent-Tiering, a new storage class for FSx&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Compute
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/aws-marketplace-ec2-image-builder-components-software-vendors/" rel="noopener noreferrer"&gt;&lt;strong&gt;AWS Marketplace&lt;/strong&gt; now offers &lt;strong&gt;EC2 Image Builder&lt;/strong&gt; components from independent software vendors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/amazon-elastic-vmware-service-preview/" rel="noopener noreferrer"&gt;Announcing &lt;strong&gt;Amazon Elastic VMware Service&lt;/strong&gt; (Preview)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Kubernetes
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/amazon-eks-auto-mode/" rel="noopener noreferrer"&gt;Announcing &lt;strong&gt;Amazon EKS&lt;/strong&gt; Auto Mode&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Gen AI
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/partyrock-app-discovery-upcoming-free-daily-use/" rel="noopener noreferrer"&gt;&lt;strong&gt;PartyRock&lt;/strong&gt; improves app discovery and announces upcoming free daily use&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/amazon-bedrock-knowledge-bases-auto-generated-query-filters-improved-retrieval/" rel="noopener noreferrer"&gt;&lt;strong&gt;Amazon Bedrock&lt;/strong&gt; Knowledge Bases now provides auto-generated query filters for improved retrieval&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/amazon-bedrock-model-evaluation-llm-as-a-judge-preview/" rel="noopener noreferrer"&gt;&lt;strong&gt;Amazon Bedrock&lt;/strong&gt; Model Evaluation now includes LLM-as-a-judge (Preview)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/amazon-bedrock-knowledge-bases-rag-evaluation-preview/" rel="noopener noreferrer"&gt;&lt;strong&gt;Amazon Bedrock&lt;/strong&gt; Knowledge Bases now supports RAG evaluation (Preview)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Observabilité
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/amazon-cloudwatch-database-insights/" rel="noopener noreferrer"&gt;AWS announces &lt;strong&gt;Amazon CloudWatch Database Insights&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/amazon-cloudwatch-network-monitoring-workloads-monitors/" rel="noopener noreferrer"&gt;&lt;strong&gt;Amazon CloudWatch&lt;/strong&gt; adds network performance monitoring for AWS workloads using flow monitors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/amazon-cloudwatch-container-insights-observability-ecs/" rel="noopener noreferrer"&gt;&lt;strong&gt;Amazon CloudWatch Container Insights&lt;/strong&gt; launches enhanced observability for Amazon ECS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Database
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/aws-dms-schema-conversion-generative-ai/" rel="noopener noreferrer"&gt;&lt;strong&gt;AWS DMS Schema Conversion&lt;/strong&gt; now uses generative AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/general-availability-amazon-memory-db-multi-region/" rel="noopener noreferrer"&gt;Announcing the general availability of &lt;strong&gt;Amazon MemoryDB&lt;/strong&gt; Multi-Region&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/oracle-database-aws-limited-preview/" rel="noopener noreferrer"&gt;&lt;strong&gt;Oracle Database@AWS&lt;/strong&gt; is now in limited preview&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Sécurité et gouvernance
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/aws-control-tower-managed-controls-declarative-policies/" rel="noopener noreferrer"&gt;&lt;strong&gt;AWS Control Tower&lt;/strong&gt; launches managed controls using declarative policies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/amazon-ec2-allowed-amis-enhance-ami-governance/" rel="noopener noreferrer"&gt;&lt;strong&gt;Amazon EC2&lt;/strong&gt; introduces Allowed AMIs to enhance AMI governance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/aws-declarative-policies/" rel="noopener noreferrer"&gt;Amazon Web Services announces &lt;strong&gt;declarative policies&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/access-vpc-resources-aws-privatelink/" rel="noopener noreferrer"&gt;AWS announces access to VPC resources over &lt;strong&gt;AWS PrivateLink&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/aws-security-incident-response/" rel="noopener noreferrer"&gt;AWS announces &lt;strong&gt;AWS Security Incident Response&lt;/strong&gt; for general availability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/amazon-guardduty-extended-threat-detection/" rel="noopener noreferrer"&gt;&lt;strong&gt;Amazon GuardDuty&lt;/strong&gt; introduces GuardDuty Extended Threat Detection&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Autre
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/aws-transfer-family-web-apps/" rel="noopener noreferrer"&gt;Announcing &lt;strong&gt;AWS Transfer Family&lt;/strong&gt; web apps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/amazon-eventbridge-step-functions-integration-private-apis/" rel="noopener noreferrer"&gt;&lt;strong&gt;Amazon EventBridge&lt;/strong&gt; and &lt;strong&gt;AWS Step Functions&lt;/strong&gt; announce integration with private APIs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/fr/about-aws/whats-new/2024/12/aws-clean-rooms-multiple-clouds-data-sources/" rel="noopener noreferrer"&gt;&lt;strong&gt;AWS Clean Rooms&lt;/strong&gt; now supports multiple clouds and data sources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>My AWS Training and Certification journey</title>
      <dc:creator>sylvainbruas</dc:creator>
      <pubDate>Wed, 20 Mar 2024 17:45:16 +0000</pubDate>
      <link>https://dev.to/sylvainbruas/my-aws-training-and-certification-journey-2j1o</link>
      <guid>https://dev.to/sylvainbruas/my-aws-training-and-certification-journey-2j1o</guid>
      <description>&lt;p&gt;I’m Sylvain BRUAS, AWS Solutions Architect at Teamwork France since 2015.&lt;/p&gt;

&lt;p&gt;I started to use AWS in 2014, as a customer in an E-learning company. AWS services were used to deliver baccalaureate results to students at scale (more than 600 000 students each year). We were using Amazon EC2 to generate the result pages, and stored them on Amazon S3 to be able to deliver them using Amazon Cloudfront.&lt;/p&gt;

&lt;p&gt;In 2015, I started my journey as AWS Solutions Architect.&lt;/p&gt;

&lt;p&gt;I passed my first certification in 2016 (AWS Certified Solutions Architect). My manager asked me to take the exam to be compliant with AWS partner requirements, and to help our company grow.&lt;/p&gt;

&lt;p&gt;I currently have 9 active AWS certifications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why so many certifications?
&lt;/h2&gt;

&lt;p&gt;People often ask this question, and sometimes my friends see me like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2xqqtiir8f1i8yjdiwp8.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2xqqtiir8f1i8yjdiwp8.jpeg" alt="Cloud Consultants" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are several reasons: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Minimum Knowledge Validation&lt;/strong&gt;. Certification validates a certain level of expertise recognized by AWS, confirming that an individual possesses essential knowledge and skills in architecture and methodology, enabling them to provide valuable assistance to customers or colleagues.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Self-confidence&lt;/strong&gt;. As there is a lot of subjects, whitepapers, architectures, design, etc… to discover and know on AWS, it’s easy to be lost. The worst time for me is just after re:Invent, as I see too many interesting things. Certifications help me to calm down and keep one thing in mind: “Ok Sylvain, you are not an expert on all these interesting subjects, but you are not lost, you are still able to pass this exam and you are not an "&lt;a href="https://en.wikipedia.org/wiki/Impostor_syndrome" rel="noopener noreferrer"&gt;impostor&lt;/a&gt;”.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Professional Spotlight!&lt;/strong&gt; With certification you are easily identified by new customers or new employers, even if they are not too technical. &lt;br&gt;
Each time I pass an exam, I have new contact requests on LinkedIn for several weeks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Creditability Support&lt;/strong&gt;.  As a final benefit, certifications can bolster your credibility and ensure your voice is taken seriously. &lt;br&gt;
I passed AWS security specialty to be more heard by cyber security team at one of my customers. I have learned nothing new during my studies for this exam, but this certification reassured them and facilitated communication.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  My working method for certifications
&lt;/h2&gt;

&lt;p&gt;My first habit is to go regularly on &lt;a href="https://skillbuilder.aws/" rel="noopener noreferrer"&gt;skillbuilder.aws&lt;/a&gt; to find new content. It’s an amazing source of knowledge, as you can find over 1000 courses both free and paid.&lt;br&gt;
I register to the courses that are useful for my next certification, to read them during my studies.&lt;/p&gt;

&lt;p&gt;To stay fit between 2 exams, I challenge myself with &lt;a href="https://aws.amazon.com/training/badges/" rel="noopener noreferrer"&gt;AWS Learning Badges&lt;/a&gt;. I read the courses and the questions in final review are quite similar to the certification exam (even if the questions are easier for badges).&lt;/p&gt;

&lt;p&gt;My manager supports my interest in content development on AWS, that allows me to be part of “&lt;a href="https://aws.amazon.com/developer/community/community-builders/" rel="noopener noreferrer"&gt;AWS community builder&lt;/a&gt;” group. This program provides technical resources, webinars, best practices for sharing AWS knowledge and networking opportunities to AWS enthusiasts. It keeps me motivated to test new services, share architectures and show the time required to be up to date with all AWS news. It helps me to remember how a service works and know limits and best practices.&lt;/p&gt;

&lt;p&gt;AWS Certification need to be re-certified every 3 years. Since I have 9 certifications, in order to keep them active, I find myself taking an exam approximately once a year to ensure all remain active. I try to take 2 exams in the same quarter to mutualize my studies between certifications.&lt;/p&gt;

&lt;p&gt;To simplify this process, I tried to find certifications with the same set of topics. I took the exam guide file on AWS website and extracted the list of services.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyoj7s41dufl7s7bf5izb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyoj7s41dufl7s7bf5izb.png" alt="Coverage of AWS subjects by Certification" width="800" height="522"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Example: Data associate covers 33% of all the AWS services listed in exam guides.&lt;/p&gt;

&lt;p&gt;Certifications vary in terms of difficulty, ranging from Foundational to Associate, Professional, and Specialty levels. For example, Cloud Practitioner is a foundational level certification that covers 62% of services, it will not go deep on each of them.&lt;/p&gt;

&lt;p&gt;If you want to take an exam with the minimal set of services to know, you can try Associate level certifications including SysOps, Developer and Data Engineer certifications.&lt;/p&gt;

&lt;p&gt;In the next picture, you will find the common and specific subjects between certifications (same data source).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv7w4ico7p9y4m4yaur9z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv7w4ico7p9y4m4yaur9z.png" alt="Chart 2" width="800" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Example: if we take the first line at the top. Data Associate has 20 subjects that are not in DevOps pro certification. They have 50 subjects in common, and DevOps has 60 specific subjects.&lt;/p&gt;

&lt;p&gt;You can use these charts to identify how to share efforts across certifications.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Certification Tips
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Don’t start on a whim
&lt;/h3&gt;

&lt;p&gt;You must work to prepare for the exam and have your environment under control. &lt;br&gt;
Don’t forget an exam is like an Olympic final, and your objective is to win:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F14mmazihrajks9cag49z.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F14mmazihrajks9cag49z.jpg" alt="Win" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My worst decision was in 2019, when I decided to recertify during re:Invent. I was so excited to be there, and I had an afternoon without conferences. I booked the AWS solutions Architect Professional exam.&lt;/p&gt;

&lt;p&gt;I have just forgotten details … 3 to be honest :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;I didn’t start to study before the event, but I said to myself: “no problem, I will have it with my skills.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Jet Lag. 8 hours difference with France&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The background noise of the re:Invent. Even if the best was done by AWS to have a quiet place to take the exam, it’s complicated to have no noises when you are in the same area with an event with thousands of people and an expo.&lt;br&gt;
Hopefully, I passed the exam. It took me several days (and Las Vegas nights) to recover from the necessary concentration effort.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In one picture: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1n2fr0n1m8d6b65wfxlw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1n2fr0n1m8d6b65wfxlw.jpeg" alt="Face Palm" width="604" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Use AWS question sets to train.
&lt;/h3&gt;

&lt;p&gt;You must train with real AWS questions, to find quickly the keywords that will help you choose the right answer at the speed of light.&lt;/p&gt;

&lt;p&gt;Questions are designed by Subject Matter Experts (SMEs), and the way to write them is normalized. For not native English speakers like me, it’s important to know the patterns, vocabulary to save time.&lt;/p&gt;

&lt;p&gt;I also use other learning and testing platforms, like A Cloud Guru for example, to check that I have understood all the subjects. It’s interesting, but the questions are not written as the one from AWS. Therefore, the time invested may not yield complete benefits as expected.&lt;/p&gt;

&lt;p&gt;The best questions are the ones available on &lt;a href="https://skillbuilder.aws/" rel="noopener noreferrer"&gt;skillbuilder.aws&lt;/a&gt;. As the set of question is limited, I keep them for my final review. If myscore on these questions is 85% or higher, I’m ready. &lt;/p&gt;

&lt;h3&gt;
  
  
  3. Manage your time and find your rhythm
&lt;/h3&gt;

&lt;p&gt;We all have a different way of managing time. Some of my colleagues do the exam in one go, keeping 10% of time to read once again the questions on which they have doubts.&lt;/p&gt;

&lt;p&gt;My tactics are different and require lots of concentration. I give myself 50% of the time to finish the exam. During this first phase, I put a tag on the questions that bother me, to be able to focus on them in the second phase.&lt;/p&gt;

&lt;p&gt;This method helps me to avoid looping on too difficult questions. It helps me to save time for all the next questions and guarantee that I answered to all “quick win” questions.&lt;/p&gt;

&lt;p&gt;In the second phase, I read once again all the questions, to validate that I didn’t choose a wrong answer by reading too quickly. I take the necessary time on the remaining questions.&lt;/p&gt;

&lt;p&gt;With this method, after the exam I feel like a zombie.&lt;/p&gt;

&lt;p&gt;There is no recipe for this. You must find the method that suits you.&lt;br&gt;
&lt;strong&gt;Golden rule&lt;/strong&gt;: Don’t panic and believe in yourself !&lt;br&gt;
 &lt;/p&gt;

&lt;h3&gt;
  
  
  4. Read a couple of answers at the same time
&lt;/h3&gt;

&lt;p&gt;The exam is made of single choice among 4, or multiple choice.&lt;/p&gt;

&lt;p&gt;For single choice, we can often see 2 groups of similar answers. Only a few words make the difference. The aim is to first find the group of 2 “quite good” answers (50% of answers are removed), and then read carefully and in parallel the 2 remaining answers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tips&lt;/strong&gt;: In the answer we always have the full name of services. If there is a mistake in the name, it’s quite sure that this answer is wrong.&lt;br&gt;
    example: if you read “AWS S3” instead of “Amazon S3”, you can be pretty sure that the answer is wrong.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Don’t panic if you don’t have the results at the end of the exam
&lt;/h3&gt;

&lt;p&gt;On two occasions, at the end of the exam, I was impatiently awaiting the result and then…. A nice screen appeared with a message indicating that the exam will be reread by the AWS teams and that the results will be given in a few days.&lt;/p&gt;

&lt;p&gt;It was a new source of stress and disappointment. Do not panic! This does not mean that you did not do well on your exam.&lt;/p&gt;

&lt;p&gt;Last time I got 900/1000. Even though I was happy with my answers, this extra wait gave me extra stress.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fknvrw2d6yfoc292q6n5q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fknvrw2d6yfoc292q6n5q.png" alt="Wait for answer" width="800" height="758"&gt;&lt;/a&gt;&lt;br&gt;
 &lt;/p&gt;

&lt;h3&gt;
  
  
  6. Try to pass beta certifications!
&lt;/h3&gt;

&lt;p&gt;Beta certification are a chance and I encourage you to try to get them.&lt;/p&gt;

&lt;p&gt;They have 3 interesting characteristics: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Half price&lt;/li&gt;
&lt;li&gt;One retry included
*Drawback: not a lot of specific content to study&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I have tried (and passed) the last beta available that was on data, which is not one of my favorite subjects and not one on which I spent time.&lt;br&gt;
I planned to take the exam beginning of January 2024, to have time to study after Christmas, and after December, that is a crazy month in my customer’s office.&lt;/p&gt;

&lt;p&gt;When I tried to book the exam, there were no more slots to take it (to be honest, some slots were available at 5am, but it’s not a good idea)&lt;/p&gt;

&lt;p&gt;2 solutions for the next move: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Let it go&lt;/li&gt;
&lt;li&gt;Take it in December, with no time to study as only fewa few slots were still available in the next 5 days.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I chose to take the exam, after thinking about these points: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If I pass it, wonderful! But it is unlikely to happen.
*I have only a few hours to study. 
I need to optimize my time to increase my chance of passing. I read again the prerequisites for the exam, and I chose to focus on subjects that seem to be linked to dataOps job role.&lt;/li&gt;
&lt;li&gt;What happens if I fail? 

&lt;ul&gt;
&lt;li&gt;I will take it for free one more time in 3 months. &lt;/li&gt;
&lt;li&gt;I will see a large set of questions and themes related to the certification.
-&amp;gt; It will give me valuable data for the retake.
&lt;strong&gt;Takeaway&lt;/strong&gt;: Do not fear failure and see the first attempt as training and information gathering.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  7. Don’t be unprepared or allow your colleagues to be!
&lt;/h3&gt;

&lt;p&gt;Please verify all the following points before starting the exam: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Stop all alarms on your phone.&lt;br&gt;
I have an alarm at 13:50 to have time to have a coffee before going back to work after lunch. During my last certification, which have started at 13:30, I had the pleasure to hear my alarm … &lt;br&gt;
Big discomfort with the proctor, and some acrobatics movements with my laptop to show him that I only stop the alarm&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don’t forget to plug in your laptop after showing to the proctor your exam room.&lt;br&gt;
Result: 5min before the end of the exam the laptop shutdown. Stress at the highest level to restart the computer, and more stress when the proctor that had problems to recover my exam session.  I was close to restart the entire exam.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;*Put and EXPLICIT and LARGE WARNING about your exam on the door&lt;br&gt;
Even if it was written in red, one of my colleagues knocked on my exam room door. My heart forgot to beat for a few seconds.&lt;br&gt;
I still don’t know who did this, but if I catch him …&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo8ucrto6cr38pc0nmjb5.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo8ucrto6cr38pc0nmjb5.jpeg" alt="Colleagues" width="500" height="282"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Takeaway: don’t be as unprepared as I was!&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Find the right place
&lt;/h3&gt;

&lt;p&gt;I have tested 3 places to take exams: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In a test center: simple and in a dedicated environment, everything is ready. You need to adapt to the required equipment, and you have no control over the environment. 
It’s like Software as a Service (SaaS).&lt;/li&gt;
&lt;li&gt;In the office: need to book a meeting room and adapt it (remove extra screens, move tables …). Environment is well known with its good and bad points.
It’s like Platform as a service (PaaS).&lt;/li&gt;
&lt;li&gt;At home: you need to redesign your office room to comply with the requirements (remove screens, children drawings …). You must also tell your family to go outside during the test (ex: movie theater) to have a quiet place.
It’s like Infrastructure as a service (IaaS), you can change nearly everything.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I chose to take exams at the office, as my wife nearly killed me when I tried to do it at home. She is already kind with me during studies, I no longer impose exam constraints on her.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg6pqu8gn2sa2s99f26ds.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg6pqu8gn2sa2s99f26ds.png" alt="Love" width="800" height="805"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  9. Have healthy routines before the exam
&lt;/h3&gt;

&lt;p&gt;Don’t forget that the exam can be 3h long. Food, drink, smoke or pee break are not allowed.&lt;/p&gt;

&lt;p&gt;One hour before the exam I start to drink several small quantities of water. I also eat a healthy meal but not to fat (exam is not the right time for a nap).&lt;/p&gt;

&lt;p&gt;Put nicotine patch to control smoking needs if you’re smoking. &lt;/p&gt;

&lt;p&gt;Clean your glasses before the exam if, like me, you are no longer able to read without them.&lt;br&gt;
Don’t forget that you will not be allowed to clean them as the proctor wants to see your hands during the exam.&lt;/p&gt;

&lt;p&gt;Last point and maybe the more important one. Take 15min before the exam to breathe, calm down and clean your head. &lt;/p&gt;

&lt;p&gt;I even allow myself to take a little nap to rest my eyes before starting.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ksxitq4uipcsgvjqzsr.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ksxitq4uipcsgvjqzsr.jpg" alt="Meditate" width="640" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In conclusion, my journey through AWS certification has been enhanced by continuous learning, practical application, and community engagement. &lt;/p&gt;

&lt;p&gt;This strategy has not only kept me updated with AWS technologies but also bolstered my professional visibility and credibility. I also learned about myself and found solutions to reduce exam stress.&lt;/p&gt;

&lt;p&gt;I hope you find these tips helpful on your cloud journey!&lt;/p&gt;

&lt;p&gt;Many thanks to &lt;a href="https://www.linkedin.com/in/semaan/" rel="noopener noreferrer"&gt;Viktoria Semaan&lt;/a&gt; and &lt;a href="https://www.linkedin.com/in/anda-catalina/" rel="noopener noreferrer"&gt;Anda-Catalina Giraud&lt;/a&gt; for their help with the writing of this article and for their comments.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>certification</category>
      <category>training</category>
    </item>
  </channel>
</rss>
