Configuration de source d’événements Amazon MQ pour Lambda - AWS Lambda

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration de source d’événements Amazon MQ pour Lambda

Configurer la sécurité réseau

Pour donner à Lambda un accès complet à Amazon MQ via votre mappage des sources d’événements, soit votre agent doit utiliser un point de terminaison public (adresse IP publique), soit vous devez fournir un accès au VPC Amazon dans lequel vous avez créé l’agent.

Lorsque vous utilisez Amazon MQ avec Lambda, créez des points de terminaison de VPC AWS PrivateLink qui permettent à votre fonction d’accéder aux ressources de votre Amazon VPC.

Note

Les points de terminaison de VPC AWS PrivateLink sont requis pour les fonctions avec des mappages de sources d’événements qui utilisent le mode par défaut (à la demande) pour les interrogateurs d’événements. Si votre mappage des sources d’événements utilise le mode provisionné, vous n’avez pas besoin de configurer les points de terminaison de VPC AWS PrivateLink.

Créez un point de terminaison pour accéder aux ressources suivantes :

  • Lambda — Créez un point de terminaison pour le principal de service Lambda.

  • AWS STS — Créez un point de terminaison pour l’AWS STS afin qu’un principal de service assume un rôle en votre nom.

  • Secrets Manager : si votre agent utilise Secrets Manager pour stocker les informations d’identification, créez un point de terminaison pour Secrets Manager.

Vous pouvez également configurer une passerelle NAT sur chaque sous-réseau public d’Amazon VPC. Pour en savoir plus, consultez Activation de l’accès Internet pour les fonctions Lambda connectées à un VPC.

Lorsque vous créez un mappage de sources d’événements pour Amazon MQ, Lambda vérifie si des interfaces réseau Elastic (ENI) sont déjà présentes pour les sous-réseaux et les groupes de sécurité configurés pour votre VPC Amazon. Si Lambda trouve des ENI existantes, il tente de les réutiliser. Sinon, Lambda crée de nouvelles ENI pour se connecter à la source d’événement et invoquer votre fonction.

Note

Les fonctions Lambda sont toujours exécutées dans des VPC appartenant au service Lambda. La configuration VPC de votre fonction n’affecte pas le mappage des sources d’événements. Seule la configuration réseau des sources d’événements détermine la manière dont Lambda se connecte à votre source d’événements.

Configurez les groupes de sécurité pour le VPC Amazon contenant votre agent. Par défaut, Amazon MQ utilise les ports suivants : 61617 (Amazon MQ pour ActiveMQ) 5671 et (Amazon MQ pour RabbitMQ).

  • Règles entrantes – Autorisent tout le trafic sur le port de l’agent par défaut pour le groupe de sécurité associé à votre source d’événement.

  • Règles sortantes – Autorisent tout le trafic sur le port 443 pour toutes les destinations. Autorisent tout le trafic sur le port de l’agent par défaut pour le groupe de sécurité associé à votre source d’événement.

  • Règles entrantes relatives au point de terminaison Amazon VPC – Si vous utilisez un point de terminaison Amazon VPC, le groupe de sécurité associé à votre point de terminaison Amazon VPC doit autoriser le trafic entrant sur le port 443 en provenance du groupe de sécurité de l’agent.

Si votre agent utilise l’authentification, vous pouvez également restreindre la politique de point de terminaison pour le point de terminaison Secrets Manager. Pour appeler l’API Secrets Manager, Lambda utilise votre rôle de fonction, et non le principal de service Lambda.

Exemple Politique de point de terminaison de VPC — Point de terminaison Secrets Manager
{ "Statement": [ { "Action": "secretsmanager:GetSecretValue", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws::iam::123456789012:role/my-role" ] }, "Resource": "arn:aws::secretsmanager:us-west-2:123456789012:secret:my-secret" } ] }

Lorsque vous utilisez des points de terminaison Amazon VPC, AWS achemine vos appels d’API pour invoquer votre fonction à l’aide de l’interface réseau Elastic (ENI) du point de terminaison. Le principal de service Lambda doit appeler lambda:InvokeFunction pour tous les rôles et fonctions utilisant ces ENI.

Par défaut, les points de terminaison Amazon VPC disposent de politiques IAM ouvertes qui permettent un accès étendu aux ressources. La meilleure pratique consiste à restreindre ces politiques pour effectuer les actions nécessaires à l’aide de ce point de terminaison. Pour garantir que votre mappage des sources d’événements est en mesure d’invoquer votre fonction Lambda, la politique de point de terminaison de VPC doit autoriser le principal de service Lambda à appeler sts:AssumeRole et lambda:InvokeFunction. Le fait de restreindre vos politiques de point de terminaison de VPC pour autoriser uniquement les appels d’API provenant de votre organisation empêche le mappage des sources d’événements de fonctionner correctement. C’est pourquoi "Resource": "*" est requis dans ces politiques.

Les exemples de politiques de point de terminaison de VPC suivants montrent comment accorder l’accès requis au principal de service Lambda pour les points de terminaison AWS STS et Lambda.

Exemple Politique de point de terminaison de VPC — Point de terminaison AWS STS
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "*" } ] }
Exemple Politique de point de terminaison de VPC — Point de terminaison Lambda
{ "Statement": [ { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "*" } ] }

Créer le mappage des sources d’événements

Créez un mappage de source d’événement pour indiquer à Lambda d’envoyer des enregistrements d’un agent Amazon MQ à une fonction Lambda. Vous pouvez créer plusieurs mappages de source d’événement pour traiter les mêmes données avec plusieurs fonctions, ou pour traiter des éléments à partir de plusieurs sources avec une seule fonction.

Pour configurer votre fonction afin qu’elle lise à partir d’Amazon MQ, ajoutez les autorisations requises et créez un déclencheur MQ dans la console Lambda.

Pour lire les enregistrements d’un agent Amazon MQ, votre fonction Lambda a besoin des autorisations suivantes. Vous autorisez Lambda à interagir avec votre agent Amazon MQ et ses ressources sous-jacentes en ajoutant des déclarations d’autorisation à votre rôle d’exécution de fonction :

Note

Lorsque vous utilisez une clé gérée par le client chiffrée, ajoutez également l’autorisation kms:Decrypt.

Pour ajouter des autorisations et créer un déclencheur
  1. Ouvrez la page Functions (Fonctions) de la console Lambda.

  2. Choisissez le nom d’une fonction.

  3. Choisissez l’onglet Configuration, puis Permissions (Autorisations).

  4. Sous Nom du rôle, cliquez sur le lien vers votre rôle d’exécution. Ce lien ouvre le rôle dans la console IAM.

    Lien vers le rôle d’exécution
  5. Sélectionnez Ajouter des autorisations, puis Ajouter la politique.

    Création d’une politique en ligne dans la console IAM
  6. Dans l’Éditeur de politique, sélectionnez JSON. Saisissez la stratégie suivante. Votre fonction a besoin de ces autorisations pour lire à partir d’un agent Amazon MQ.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "mq:DescribeBroker", "secretsmanager:GetSecretValue", "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] }
    Note

    Lorsque vous utilisez une clé gérée par le client chiffrée, vous devez également ajouter l’autorisation kms:Decrypt.

  7. Choisissez Suivant. Saisissez un nom de politique, puis choisissez Créer une politique.

  8. Revenez à votre fonction dans la console Lambda. Sous Function overview (Vue d’ensemble de la fonction), choisissez Add trigger (Ajouter un déclencheur).

    Section de présentation des fonctions de la console Lambda
  9. Choisissez le type de déclencheur MQ.

  10. Configurez les options requises, puis choisissez Add (Ajouter).

Lambda prend en charge les options suivantes pour les sources d’événement Amazon MQ.

  • MQ broker (Agent MQ) – Sélectionnez un agent Amazon MQ.

  • Batch size (Taille de lot) – Définissez le nombre maximum de messages à extraire dans un lot.

  • Queue name (Nom de file d’attente) – Entrez la file d’attente Amazon MQ à consommer.

  • Source access configuration (Configuration de l’accès source) – Entrez les informations d’hôte virtuel et le secret Secrets Manager qui stocke vos informations d’identification d’agent.

  • Enable trigger (Activer le déclencheur) – Désactivez le déclencheur pour arrêter le traitement des enregistrements.

Pour activer ou désactiver le déclencheur (ou le supprimer), choisissez le déclencheur MQ dans le concepteur. Pour reconfigurer le déclencheur, utilisez les opérations d’API de mappage de source d’événement.