Je veux connecter une fonction AWS Lambda à des ressources qui se trouvent sur un cloud privé virtuel (VPC) AWS dédié.

Actuellement, AWS Lambda ne prend pas en charge l'exécution dans un VPC de location dédiée et, par conséquent, vous devez appairer le VPC dédié à un VPC standard contenant votre fonction Lambda.

Cet article suppose que vous maîtrisez les fonctions NodeJS et Creating Lambda.

Configurer les VPC

  1. Dans la console Amazon VPC, créez un VPC de location par défaut avec un bloc d'adresse CIDR 10.0.0.0/16 et un VPC de location dédiée avec un bloc d'adresse CIDR 11.0.0.0/16. Si vous utilisez un autre bloc d'adresse CIDR, assurez-vous que le VPC par défaut et le VPC dédié ont des blocs d'adresse différents qui ne se chevauchent pas. (Remarque : passez cette étape si vous avez déjà configuré un VPC de location par défaut.)
  2. Dans le volet de navigation, sélectionnez Connexions d'appairage.
  3. Choisissez Créer une connexion d'appairage de VPC.
  4. Saisissez le nom du VPC de location dédiée dans le champ Balise Nom et l'ID de VPC du VPC de location par défaut dans le champ VPC local à appairer. Sélectionnez le bouton radio Mon compte , saisissez l'ID de VPC du VPC de location dédiée dans le champ VPC , puis choisissez Créer une connexion d'appairage de VPC.
  5. Configurez les tables de routage de façon à autoriser la communication entre les deux VPC.

VPC de location dédiée :

Destination Target Statut Propagated
12.0.0.0/16 Local Actif Non
11.0.0.0/16 Actif Non

VPC de location à appairer :

Destination Target Statut Propagated
11.0.0.0/16 Local Actif Non
12.0.0.0/16 Actif Non

Actif

Actif

Actif

Créer une fonction test

1. Créez une nouvelle fonction Lambda dans la même région que celle où se trouve le VPC de location par défaut. L'exemple de code suivant utilise l'interface HTTP native dans NodeJS :

var http = require('http')
     
exports.handler = (event, context, callback) => {
    const options = {
        hostname: event.Host,
        port: event.Port
    }
    
    const response = {};
    
   http.get(options, (res) => {
        response.httpStatus = res.statusCode
        callback(null, response)
    }).on('error', (err) =>{
        callback(null, err.message);
    })
   
};

2.    Veillez à choisir le rôle lambda_basic_vpc_execution . Si ce rôle n'existe pas, choisissez Créer un rôle et saisissez la stratégie suivante :

{
      "Version": "2012-10-17",
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "logs:CreateLogGroup",
                  "logs:CreateLogStream",
                  "logs:PutLogEvents"
              ],
              "Resource": "arn:aws:logs:*:*:*"
          },
          {
              "Effect": "Allow",
              "Action": [
                  "ec2:CreateNetworkInterface",
                  "ec2:DescribeNetworkInterfaces",
                  "ec2:DetachNetworkInterface",
                  "ec2:DeleteNetworkInterface"
              ],
              "Resource": "*"
          }
      ]
  }

3.    Pour la configuration du VPC, choisissez VPC de location par défaut.

4.    Sélectionnez Créer.

Testez la connectivité

1.    Démarrez une instance EC2 dans votre VPC dédié si une instance n'est pas déjà en cours d'exécution.

2.    Vérifiez que les listes de contrôle d'accès des deux sous-réseaux du VPC autorisent le trafic sur le port que vous testez, ainsi que pour le groupe de sécurité de l'instance EC2.

3.    À des fins de test, vérifiez qu'un service est en cours d'exécution sur l'instance EC2 sur laquelle la fonction Lambda peut émettre une requête. Étant donné que la commande ping n'est pas prise en charge dans l'environnement Lambda, configurez le serveur de façon à répondre à une requête HTTP. Comme l'exécution d'un écouteur sur le port 80 nécessite sudo, exécutez le serveur de test sur le port 8080, puis activez le réacheminement des ports.

$ sudo iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 8080
$ python -V
# If python version is 2.x:
$ python -m SimpleHTTPServer 8080
# If python version is 3.x
$ python -m http.server 8080

4.    Configurez l'événement de test, en remplaçant et par l'adresse IP ou le nom d'hôte et le port de votre choix de votre instance EC2 :

{
  "Host": "<your-host>",
  "Port": <port>
}

5. Pour vérifier que la connexion a été établie, recherchez une sortie similaire à la suivante :

{
  "httpStatus": 200
}

Si la sortie de la fonction indique des valeurs non nulles pour la latence moyenne, maximale et minimale, votre connexion d'appairage de VPC est bien configurée.

Si la connexion est impossible, la sortie ressemble à la suivante :

"connect ECONNREFUSED <your-host>:<port>"

Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support

Date de publication : 22/08/2016

Date de mise à jour : 10/4/2018