S3

0

にアップロードされたファイルに関する情報を取得するファイルがs3バケットにアップロードされるたびに電子メールを送信するラムダ関数を作成しましたが、そのファイルに関するすべての情報を名前、サイズ、日付、アップロードの時間、それがどこから来る可能性があるかどうかなどです。 私はawsコンソールでこのすべての情報を持っていますが、電子メール本文にその情報を入れたいと思っています。S3

私はサーバレスフレームワークを使用しています。 http://docs.aws.amazon.com/AmazonS3/latest/dev/notification-content-structure.html

あなたは、ファイル名、サイズ、ソースIPアドレスを取得することができます。vここ

1.22.0は、オブジェクトの作成時にS3によって送信されるイベントのJSON構造私のコードここ

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_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 
email_body = str(context) 

try: 
    s3 = boto3.client('s3') 
    ses = boto3.client('ses') 
    ses.send_email(Source = email_from, 
       Destination = {'ToAddresses': [email_to,],}, 
        Message = {'Subject': {'Data': email_subject}, 'Body':{'Text' : {'Data': email_body}}} 
     ) 
except Exception as e: 
    print(traceback.format_exc()) 
    status_code = 500 
    body["message"] = json.dumps(e) 

response = { 
    "statusCode": 200, 
    "body": json.dumps(body) 
} 

return response 

答えて

4

されています

for record in event['Records']: 
    filename = record['s3']['object']['key']; 
    filesize = record['s3']['object']['size']; 
    source = record['requestParameters']['sourceIPAddress']; 
    eventTime = record['eventTime']; 
+0

ありがとう、それは非常に役に立ちました – ner

3
def lambda_handler(event, context): 
    s3 = boto3.client('s3') 
    email_from = '[email protected]' 
    email_to = '[email protected]' 
    email_subject = 'new event on s3' 
    email_body = "File Name :" + event[u'Records'][0][u's3'][u'object'][u'key'] + "\n" + "File Size :" + str(event[u'Records'][0][u's3'][u'object'][u'size']) + "\n" + "Upload Time :" + event[u'Records'][0][u'eventTime'] + "\n" + "User Details :" + event[u'Records'][0][u'userIdentity'][u'principalId'] 
    ses = boto3.client('ses') 
    ses.send_email(Source = email_from, 
       Destination = {'ToAddresses': [email_to,],}, 
        Message = {'Subject': {'Data': email_subject}, 'Body':{'Text' : {'Data': email_body}}} 
     ) 
    print("Function execution Completed !!!") 

F:このようなこのpostからound。

+0

私の問題を解決する多くの仲間に感謝 – ner