4

Je travaille sur une application sans serveur AWS, je suis nouveau sur AWS alors s'il vous plaît corriger les idées fausses dans cette question. Nous avons environ 30 fonctions lambda effectuant des opérations CRUD de base sur une base de données SQL hébergée dans RDS. Nous avons utilisé EntityFramework Core pour créer la base de données. Cela signifie que, pour utiliser la base de données, les fonctions lambda doivent chacune avoir accès à la chaîne de connexion EF. Je ne voulais pas laisser la chaîne de connexion en mémoire (elle contient un mot de passe en clair) donc je l'ai mise dans une variable d'environnement chiffrée. La seule façon dont j'ai pu m'y prendre pour cela était d'ajouter une variable d'environnement chiffrée via l'interface graphique de la console de gestion lambda à chaque fonction lambda individuellement. C'était fastidieux mais ça a marché. J'ai maintenant changé la solution un peu et nous avons besoin d'un ensemble différent de fonctions lambda, celles-ci ont besoin de variables d'environnement qui s'ajoutent à elles et je ne veux pas le faire manuellement à nouveau.Comment ajouter facilement des variables d'environnement à plusieurs fonctions Lambda?

Ma question:

est-il un moyen facile d'ajouter des variables d'environnement cryptés (ou quelque chose de similaire) qui peut être consulté par toutes mes fonctions lambda? Y a-t-il une méthode pour les ajouter en vrac? Une variable de plus haut niveau que je peux utiliser?

J'ai essayé de trouver des informations dans les documents Amazon (here for example) mais j'ai eu peu de succès.

Répondre

2

Lambda est seulement préoccupé par l'obtention des variables d'environnement dont il a besoin et il n'est pas responsable pour la gestion centralisée des variables d'environnement.

Ce que vous devez faire est de gérer vos variables d'environnement dans votre processus de déploiement.

Comment déployez-vous actuellement vos 30 fonctions lambda? Si vous utilisez CodeBuild, vous pouvez accéder à AWS EC2 Parameter Store où vous pouvez stocker et gérer de manière centralisée vos variables d'environnement sensibles.

D'autres outils CI/CD ont également leur propre façon de gérer les variables d'environnement de manière centralisée.

Mise à jour:

Vous pouvez utiliser le AWS EC2 Parameter Store programme. Cela signifie que vous pouvez récupérer vos variables d'environnement stockées à l'intérieur de votre fonction Lambda au démarrage, vous n'avez donc pas besoin de le faire au moment du déploiement.

Le faire sur le temps de déploiement est encore mieux si cela est possible dans votre cas d'utilisation.

+0

J'utilise AWS toolkit pour Visual Studio, un assistant de déploiement est intégré. Je vais enquêter sur CodeBuild, merci! – SBaker

0

Je suggère d'ajouter ConnectionString à la console AWS et de ne pas utiliser la chaîne de connexion de production au fichier de configuration pour éviter ce genre de problèmes. Connectez-vous à la console AWS, accédez à la fonction lambda et ajoutez une chaîne de connexion en tant que variable d'environnement. PS. Au cas où vous aurez du mal avec la syntaxe. Si votre fichier de configuration JSON ressemble à ceci:

{ 
    "Settings": 
    { 
     "ConnectionString":"", 
     "SomethingElse" 
    } 
} 

Utilisez cette syntaxe pour configurer la chaîne de connexion:

Settings__ConnectionString

+0

Merci pour la réponse. Je fais déjà ça. Ma question: dire que j'avais 400 fonctions lambda. Devrais-je ajouter 400 variables d'environnement, une pour chaque fonction? Cela prendrait des âges. Y a-t-il un moyen plus facile? – SBaker

+0

@SBaker Je pense qu'il n'y a aucun moyen de centraliser les paramètres. Je cherchais aussi cette solution – OlegI

2

Je n'appellerais pas ceci une solution plutôt qu'un travail pour résoudre votre problème. Vous pouvez configurer vos variables d'environnement et les stocker dans un compartiment S3. Et en utilisant le client S3 dans votre chaque lambda, vous pouvez lire la variable spécifique qui vous intéresse. Espérons que cela aide.