Je veux recevoir des e-mails à chaque fois qu'un fichier est téléchargé dans s3 seau comme décrit dans le titre ci-dessus, j'utilise serverless, le problème est que l'événement que j'ai créé sur s3 me donne juste une notification sur la console s3-aws, et je ne sais pas comment configurer l'événement cloudwatch sur S3 pour déclencher lambda. Donc s'il vous plaît si quelqu'un sait comment déclencher des événements sur S3 en utilisant cloudwatch je suis tout ouïe. Voici mon code:Recevoir des e-mails à chaque fois qu'un fichier est téléchargé sur s3 sans serveur
import json
import boto3
import botocore
import logging
import sys
import os
import traceback
from botocore.exceptions import ClientError
from pprint import pprint
from time import strftime, gmtime
email_from = '*****@******.com'
email_to = '******@******.com'
#email_cc = '********@gmail.com'
email_subject = 'new event on s3 '
email_body = 'a new file is uploaded'
#setup simple logging for INFO
logger = logging.getLogger()
logger.setLevel(logging.INFO)
from botocore.exceptions import ClientError
def sthree(event, context):
"""Send email whenever a file is uploaded to S3"""
body = {}
status_code = 200
try:
s3 = boto3.client('s3')
ses = boto3.client('ses')
response = ses.send_email(Source = email_from,
Destination = {'ToAddresses': [email_to,],},
Message = {'Subject': {'Data': email_subject}, 'Body':{'Text' : {'Data': email_body}}}
)
response = {
"statusCode": 200,
"body": json.dumps(body)
}
return response
et voici mon fichier serverless.yml
service: aws-python # NOTE: update this with your service name
plugins:
- serverless-external-s3-event
provider: name: aws
runtime: python2.7
stage: dev
region: us-east-1
iamRoleStatements:
- Effect: "Allow"
Action:
- s3:*
- "ses:SendEmail"
- "ses:SendRawEmail"
- "s3:PutBucketNotification"
Resource: "*"
functions: sthree:
handler: handler.sthree
description: send mail whenever a file is uploaded on S3
events:
- s3:
bucket: cartegie-nirmine
event: s3:ObjectCreated:*
rules:
- prefix: uploads/
- suffix: .jpg
- cloudwatchEvent:
description: 'CloudWatch Event triggered '
event:
source:
- "aws.S3"
detail-type:
- "S3 event Notification"
enabled : true
Il semble que vous ayez un lambda qui est déclenché par un événement de téléchargement.Ce lambda est censé déclencher un email, non? Avez-vous vérifié les journaux pour le lambda pour voir s'il y a une erreur? Je vous suggère de vous connecter à l'événement pour vous assurer que vous le recevez. –
Sauf si vous avez besoin de la flexibilité offerte par l'écriture de code, vous pouvez simplement configurer un événement S3 à publier sur un sujet SNS et vous abonner à ce sujet par adresse e-mail. – jarmod