Architectures de l’ensemble des instructions Lambda - AWS Lambda

Architectures de l’ensemble des instructions Lambda

L’architecture de l’ensemble des instructions d’une fonction Lambda détermine le type de processeur d’ordinateur que Lambda utilise pour exécuter la fonction. Lambda permet de choisir parmi plusieurs architectures de l’ensemble des instructions :

  • arm64 : architecture ARM 64 bits, pour le processeur Graviton2 AWS.

  • x86_64 : architecture 64 bits x86, pour les processeurs x86.

Avantages liés à l’utilisation de l’architecture arm64

Les fonctions Lambda qui utilisent l’architecture arm64 (processeur Graviton2 AWS) peuvent atteindre un prix et des performances nettement supérieurs à ceux de la fonction équivalente exécutée sur l’architecture x86_64. Envisagez d’utiliser arm64 pour les applications de calcul intensif telles que le calcul haute performance, le codage vidéo et les applications de simulation.

Le processeur Graviton2 utilise le cœur Neoverse N1 et prend en charge Armv8.2 (y compris les extensions CRC et cryptographiques), ainsi que plusieurs autres extensions architecturales.

Graviton2 réduit le temps de lecture de la mémoire en fournissant un cache L2 plus important par vCPU, ce qui permet d’obtenir une meilleure performance de latence des backends Web et mobiles, des microservices et des systèmes de traitement de données. Graviton2 offre également des performances de chiffrement améliorées et prend en charge les ensembles des instructions qui améliorent la latence de l’inférence Machine Learning basée sur CPU.

Pour plus d’informations sur Graviton2 AWS, consultez Processeur Graviton AWS.

Migration de la fonction vers l’architecture arm64

Lorsque vous sélectionnez une fonction Lambda à migrer vers l’architecture arm64, pour que la migration soit fluide, assurez-vous que la fonction répond aux exigences suivantes :

  • La fonction utilise actuellement une exécution Lambda Amazon Linux 2.

  • Le package de déploiement ne contient que des composants open source et le code source que vous contrôlez, ce qui vous permet d’effectuer les mises à jour nécessaires à la migration.

  • Si le code de la fonction inclut des dépendances tierces, chaque bibliothèque ou package fournit une version arm64.

Compatibilité des codes de fonction avec l’architecture arm64

Le code de la fonction Lambda doit être compatible avec l’architecture de l’ensemble des instructions de la fonction. Avant de migrer une fonction vers l’architecture arm64, veuillez noter les points suivants concernant le code de fonction actuel :

  • Si vous avez ajouté le code de la fonction à l’aide de l’éditeur de code intégré, le code s’exécute probablement sur l’une des architectures sans modification.

  • Si vous avez chargé le code de la fonction, vous devez charger un nouveau code compatible avec l’architecture cible.

  • Si la fonction utilise des couches, vous devez vérifier chaque couche afin de vous assurer qu’elle est compatible avec la nouvelle architecture. Si une couche n’est pas compatible, modifiez la fonction, afin de remplacer la version actuelle de la couche par une version de couche compatible.

  • Si la fonction utilise des extensions Lambda, vous devez vérifier chaque extension, afin de vous assurer de sa compatibilité avec la nouvelle architecture.

  • Si votre fonction utilise un type de package de déploiement de l’image de conteneur, vous devez créer une nouvelle image de conteneur compatible avec l’architecture de la fonction.

Étapes de migration suggérées

Pour migrer une fonction Lambda vers l’architecture arm64, nous recommandons de procéder comme suit :

  1. Créez la liste des dépendances de l’application ou de la charge de travail. Les dépendances courantes comprennent :

    • Toutes les bibliothèques et les packages utilisés par la fonction.

    • Les outils que vous utilisez pour créer, déployer et tester la fonction, tels que les compilateurs, les suites de tests, les pipelines d’intégration continue et de livraison continue (CI/CD), les outils d’approvisionnement et les scripts.

    • Les extensions Lambda et les outils tiers que vous utilisez pour contrôler la fonction en production.

  2. Pour chacune des dépendances, vérifiez la version, puis vérifiez si les versions arm64 sont disponibles.

  3. Créez un environnement pour migrer l’application.

  4. Amorcez l’application.

  5. Testez et déboguez l’application.

  6. Testez la performance de la fonction arm64. Comparez la performance avec celle de la version x86_64.

  7. Mettez à jour le pipeline d’infrastructure pour prendre en charge les fonctions Lambda arm64.

  8. Établissez le déploiement vers la production.

    Par exemple, utilisez la configuration du routage d’alias pour fractionner le trafic entre les versions x86 et arm64 de la fonction et comparez les performances et la latence.

Pour plus d’informations sur la création d’un environnement de code pour l’architecture arm64, y compris des informations spécifiques au langage pour Java, Go, .NET et Python, consultez le référentiel GitHub Démarrer avec Graviton AWS.

Configuration de l’architecture de l’ensemble des instructions

Vous pouvez configurer l’architecture de l’ensemble des instructions pour les nouvelles fonctions Lambda en utilisant la console Lambda, les kits SDK AWS, l’AWS Command Line Interface (AWS CLI) ou AWS CloudFormation. Vous pouvez déployer le code de la fonction sur Lambda à l’aide d’un fichier d’archives .zip ou d’un package de déploiement de l’image de conteneur.

Lambda fournit les exécutions suivantes pour l’architecture arm64. Toutes ces exécutions utilisent le système d’exploitation Amazon Linux 2.

  • Node.js 12, Node.js 14

  • Python 3.8, Python 3.9

  • Java 8 (AL2), Java 11

  • .NET Core 3.1

  • Ruby 2.7

  • Exécution personnalisée sur Amazon Linux 2

Note

Les exécutions qui utilisent le système d’exploitation Amazon Linux, tels que Go 1.x, ne prennent pas en charge l’architecture arm64. Pour utiliser l’architecture arm64, vous pouvez exécuter Go avec le moteur d’exécution .al2 fourni. Pour obtenir un exemple, consultez Créer une fonction Go pour l’environnement d’exécution .al2 fourni ou Créer une image Go à partir de l’image de base .al2 fournie.

Pour voir un exemple de création d’une fonction avec l’architecture arm64, consultez Fonctions AWS Lambda alimentées par le processeur Graviton2 AWS.