Traiter les messages Amazon MQ avec 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.

Traiter les messages Amazon MQ avec Lambda

Configuration de l'accès au réseau

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

Par défaut, lorsque vous créez un agent Amazon MQ, l'indicateur PubliclyAccessible défini sur false. Pour que votre agent reçoive une adresse IP publique, vous devez définir l'indicateur PubliclyAccessible sur true.

La meilleure pratique pour utiliser Amazon MQ avec Lambda consiste à utiliser des AWS PrivateLink VPCpoints de terminaison et à donner à votre fonction Lambda l'accès à celle de votre courtier. VPC Déployez un point de terminaison pour Lambda et, pour ActiveMQ uniquement, un point de terminaison pour (). AWS Security Token Service AWS STS Si votre courtier utilise l'authentification, déployez également un point de terminaison pour AWS Secrets Manager. Pour en savoir plus, consultez Configurer les points de VPC terminaison Amazon.

Vous pouvez également configurer une NAT passerelle sur chaque sous-réseau public du sous-réseau VPC contenant votre courtier Amazon MQ. Pour de plus amples informations, veuillez consulter Activer l'accès à Internet pour les VPC fonctions Lambda connectées.

Lorsque vous créez un mappage de source d'événements pour un courtier Amazon MQ, Lambda vérifie si des interfaces réseau élastiques (ENIs) sont déjà présentes pour les sous-réseaux et les groupes de sécurité de votre courtier. VPC Si Lambda trouve des objets existantsENIs, il essaie de les réutiliser. Sinon, Lambda en crée un nouveau ENIs pour se connecter à la source de l'événement et appeler votre fonction.

Note

Les fonctions Lambda s'exécutent toujours au sein VPCs du service Lambda. Ils VPCs sont gérés automatiquement par le service et ne sont pas visibles pour les clients. Vous pouvez également connecter votre fonction à un AmazonVPC. Dans les deux cas, la VPC configuration de votre fonction n'affecte pas le mappage des sources d'événements. Seule la configuration des sources d'événements VPC détermine la manière dont Lambda se connecte à votre source d'événements.

Configuration des règles du groupe de sécurité

Configurez les groupes de sécurité pour l'Amazon VPC contenant votre Amazon MQ.

Note

Par défaut, Amazon MQ pour ActiveMQ utilise le port, et 61617 Amazon MQ pour le port RabbitMQ. 5671

  • Règles de trafic entrant : autorisez tout le trafic sur le port du courtier pour le groupe de sécurité associé à votre source d'événement à partir de son propre groupe de sécurité.

  • Règles de sortie : autorisez tout le trafic sur le port 443 pour toutes les destinations. Autorisez tout le trafic sur le port du broker à partir de son propre groupe de sécurité.

  • Règles relatives aux points de VPC terminaison Amazon : pour le groupe de sécurité associé à votre point de VPC terminaison Amazon, autorisez le trafic entrant sur le port en 443 provenance du groupe de sécurité du courtier

Configurer les points de VPC terminaison Amazon

Lorsque vous utilisez des VPC points de terminaison Amazon, AWS achemine vos API appels pour appeler une fonction à l'aide de l'interface réseau élastique (ENI) du point de terminaison. Le principal du service Lambda doit faire appel à toutes lambda:InvokeFunction les fonctions qui les utilisent. ENIs En outre, pour Amazon MQ pour ActiveMQ, le principal du service Lambda doit exécuter les rôles qui utilisent le. sts:AssumeRole ENIs

Par défaut, les VPC points de terminaison Amazon ont des IAM politiques ouvertes qui permettent un large accès aux ressources. Pour utiliser Amazon MQ avec Lambda en production, vous pouvez restreindre ces politiques afin de n'autoriser que des principaux à accéder à des rôles et fonctions spécifiques.

Les exemples de politiques de point de VPC terminaison suivants montrent comment accorder l'accès requis aux points de terminaison Lambda AWS STS et aux points de terminaison Lambda.

Exemple Politique de point de AWS STS terminaison — point de terminaison (ActiveMQ uniquement)
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "arn:aws::iam::123456789012:role/my-role" } ] }
Exemple Politique relative aux terminaux — Point de terminaison Lambda
{ "Statement": [ { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "arn:aws::lambda:us-west-2:123456789012:function:my-function" } ] }

Si votre courtier Amazon MQ utilise l'authentification, vous pouvez également restreindre la politique de point de terminaison pour le point de terminaison Secrets Manager. Pour appeler le Secrets ManagerAPI, Lambda utilise votre rôle fonctionnel, et non le principal du service Lambda. L'exemple suivant montre une politique de point de terminaison de Secrets Manager.

Exemple VPCpolitique relative aux terminaux — 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" } ] }
Avertissement

Le fait de restreindre les politiques de vos terminaux pour n'autoriser que les API appels provenant de votre organisation empêche le mappage des sources d'événements de fonctionner correctement.

Création du 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 de manière à lire depuis Amazon MQ, ajoutez les autorisations requises et créez un déclencheur MQ dans la console Lambda.

Pour lire les enregistrements d'un courtier Amazon MQ, votre fonction Lambda a besoin des autorisations suivantes. Vous autorisez Lambda à interagir avec votre courtier Amazon MQ et ses ressources sous-jacentes en ajoutant des instructions 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, choisissez le lien vers votre rôle d'exécution. Ce lien ouvre le rôle dans la IAM console.

    Lien vers le rôle d'exécution
  5. Choisissez Ajouter des autorisations, puis choisissez Créer une politique intégrée.

    Création d'une politique intégrée dans la console IAM
  6. Dans l'éditeur de politiques, choisissez JSON. Saisissez la stratégie suivante. Votre fonction a besoin de ces autorisations pour lire depuis un courtier 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é cryptée gérée par le client, vous devez également ajouter l'kms:Decryptautorisation.

  7. Choisissez Suivant. Entrez un nom de stratégie, puis choisissez Créer une politique.

  8. Retournez à 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 API opérations de mappage des sources d'événements.