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.
Envoi des journaux de fonction Lambda à Amazon S3
Vous pouvez configurer votre fonction Lambda pour envoyer des journaux directement à Amazon S3 à l’aide de la console Lambda. Cette fonctionnalité fournit une solution rentable pour le stockage des journaux à long terme et permet d’utiliser de puissantes options d’analyse à l’aide de services comme Athena.
Note
Vous pouvez configurer les journaux des fonctions Lambda à envoyer à Amazon S3 à l'aide de la console Lambda AWS CLI AWS CloudFormation, et de tous les AWS kits SDK.
Tarification
Pour en savoir plus sur les tarifs, consultez la page CloudWatch Tarification d'Amazon
Autorisations requises pour la destination du journal Amazon S3
Lorsque vous utilisez la console Lambda pour configurer Amazon S3 comme destination de journal de votre fonction, vous devez :
-
Les autorisations IAM requises pour utiliser CloudWatch Logs avec Lambda.
-
Vers les Configurez un filtre d'abonnements aux CloudWatch journaux pour envoyer les journaux des fonctions Lambda à Amazon S3 Ce filtre définit quels événements de journal sont fournis à votre compartiment Amazon S3.
Configurez un filtre d'abonnements aux CloudWatch journaux pour envoyer les journaux des fonctions Lambda à Amazon S3
Pour envoyer des CloudWatch journaux depuis Logs vers Amazon S3, vous devez créer un filtre d'abonnement. Ce filtre définit quels événements de journal sont fournis à votre compartiment Amazon S3. Le groupe de journaux doit se trouver dans la même région que votre compartiment Amazon S3.
Pour créer un filtre d’abonnements pour Amazon S3
-
Créez un compartiment Amazon Simple Storage Service (Amazon S3). Nous vous recommandons d'utiliser un bucket créé spécifiquement pour les CloudWatch journaux. Toutefois, si vous souhaitez utiliser un compartiment existant, passez directement à l'étape 2.
Exécutez la commande suivante en remplaçant l'espace réservé à la région par la région que vous voulez utiliser :
aws s3api create-bucket --bucket amzn-s3-demo-bucket2 --create-bucket-configuration LocationConstraint=regionNote
amzn-s3-demo-bucket2est un exemple de nom de compartiment Amazon S3. Il est réservé. Pour que cette procédure fonctionne, vous devez le remplacer par le nom unique de votre compartiment Amazon S3.Voici un exemple de sortie :
{ "Location": "/amzn-s3-demo-bucket2" } -
Créez le rôle IAM qui autorise CloudWatch Logs à placer des données dans votre compartiment Amazon S3. Cette politique inclut une clé de contexte aws : SourceArn global condition pour éviter un problème de sécurité associé à la confusion. Pour plus d’informations consultez Prévention du problème de l’adjoint confus.
-
Utilisez un éditeur de texte pour créer une politique d’approbation dans un fichier
~/TrustPolicyForCWL.jsoncomme suit :{ "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:logs:region:123456789012:*" } }, "Action": "sts:AssumeRole" } } -
Utilisez la commande create-role pour créer le rôle IAM, en spécifiant le fichier de politique d'approbation. Notez la Role.Arn valeur renvoyée, car vous en aurez besoin ultérieurement :
aws iam create-role \ --role-name CWLtoS3Role \ --assume-role-policy-document file://~/TrustPolicyForCWL.json { "Role": { "AssumeRolePolicyDocument": { "Statement": { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:logs:region:123456789012:*" } } } }, "RoleId": "AAOIIAH450GAB4HC5F431", "CreateDate": "2015-05-29T13:46:29.431Z", "RoleName": "CWLtoS3Role", "Path": "/", "Arn": "arn:aws:iam::123456789012:role/CWLtoS3Role" } }
-
-
Créez une politique d'autorisations pour définir les actions que CloudWatch Logs peut effectuer sur votre compte. D'abord, utilisez un éditeur de texte pour créer une stratégie d'autorisations dans un fichier
~/PermissionsForCWL.json:{ "Statement": [ { "Effect": "Allow", "Action": ["s3:PutObject"], "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket2/*"] } ] }Associez la politique d’autorisations au rôle à la commande
put-role-policysuivante :aws iam put-role-policy --role-name CWLtoS3Role --policy-name Permissions-Policy-For-S3 --policy-document file://~/PermissionsForCWL.json -
Créez un groupe de journaux
Deliveryou utilisez un groupe de journauxDeliveryexistant.aws logs create-log-group --log-group-name my-logs --log-group-class DELIVERY --region REGION_NAME -
PutSubscriptionFilterpour configurer la destinationaws logs put-subscription-filter --log-group-name my-logs --filter-name my-lambda-delivery --filter-pattern "" --destination-arn arn:aws:s3:::amzn-s3-demo-bucket2 --role-arn arn:aws:iam::123456789012:role/CWLtoS3Role --region REGION_NAME
Envoi de journaux de fonction Lambda à Amazon S3
Dans la console Lambda, vous pouvez envoyer des journaux de fonction directement à Amazon S3 après avoir créé une nouvelle fonction. Pour ce faire, effectuez ces étapes :
-
Connectez-vous à la console de AWS gestion et ouvrez la console Lambda.
-
Choisissez le nom de votre fonction.
-
Cliquez sur l’onglet Configuration.
-
Choisissez l’onglet Outils de surveillance et d’exploitation.
-
Dans le volet « Configuration de la journalisation », choisissez Modifier.
-
Dans la section « Contenu du journal », sélectionnez un format de journal.
-
Dans la section « Destination du journal » procédez comme suit :
-
Sélectionnez un service de destination.
-
Choisissez Créer un nouveau groupe de journaux ou utilisez un Groupe de journaux existant.
Note
Si vous choisissez un groupe de journaux existant pour une destination Amazon S3, assurez-vous que le groupe de journaux que vous choisissez est un type de groupe de journaux
Delivery. -
Choisissez un compartiment Amazon S3 comme destination pour vos journaux de fonction.
-
Le groupe de CloudWatch
Deliveryjournaux apparaît.
-
-
Choisissez Enregistrer.
Note
Si le rôle IAM fourni dans la console ne dispose pas des autorisations requises, la configuration de la destination échoue. Pour résoudre ce problème, reportez-vous à la section Autorisations requises pour la destination du journal Amazon S3.
Cross-Account Journalisation
Vous pouvez configurer Lambda pour envoyer des journaux à un compartiment Amazon S3 d'un autre AWS compte. Cela nécessite de définir une destination et de configurer les autorisations appropriées dans les deux comptes.
Pour obtenir des instructions détaillées sur la configuration de la journalisation entre comptes, y compris les rôles et politiques IAM requis, consultez la section Configuration d'un nouvel abonnement multicompte dans la CloudWatch documentation relative aux journaux.