2017-02-24 8 views
0

S3バケットにファイルをアップロードするとイベント通知が送られます。S3バケットには、受信したSNSトピックにメールを送信します。AWS S3イベントSNSを介した簡単な電子メールのJSON解析

S3バケットからSNSに送信されたJSONデータを解析するために、jqコマンドラインアプリまたはLambdaのような他のAWS関数やサービスを使用すると、簡単になります。

このことから

...これに

{ 
    "Records": [ 
    { 
     "eventVersion": "2.0", 
     "eventSource": "aws:s3", 
     "awsRegion": "eu-west-1", 
     "eventTime": "2017-02-22T09:16:03.964Z", 
     "eventName": "ObjectCreated:Put", 
     "userIdentity": { 
     "principalId": "AWS:XXXXXXXXXXX" 
     }, 
     "requestParameters": { 
     "sourceIPAddress": "123.456.789" 
     }, 
     "responseElements": { 
     "x-amz-request-id": "XXXXXXXXX", 
     "x-amz-id-2": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" 
     }, 
     "s3": { 
     "s3SchemaVersion": "1.0", 
     "configurationId": "Backup Successful", 
     "bucket": { 
      "name": "my.bucket", 
      "ownerIdentity": { 
      "principalId": "XXXXXXXXXXX" 
      }, 
      "arn": "arn:aws:s3:::my.bucket" 
     }, 
     "object": { 
      "key": "backup_2017-02-22-0915_Test_Web_Site_1c709c59af2a-others.zip", 
      "size": 493812, 
      "eTag": "zxbmcnbskdezb", 
      "sequencer": "y238623rqwde" 
     } 
     } 
    } 
    ] 
} 

...

backup_2017-02-22-0915_Test_Web_Site_1c709c59af2a-others.zip 

私はちょうど構文のまわりで私の頭を取得し、どのようにこの電子メールの内容のためのラムダまたは何か他のものを使用することはできません!

私の要件を満たすのが簡単な場合は、SNSではなく別のAWSオプションを使用してください。

[ファイル]> [S3バケット>通知>ラムダ> SNSメール

または

[ファイル]> [S3バケット>通知>ラムダメール

私はこれで、相対初心者ですので、いくつかのまともな例が必要お願いします。

ありがとうございました。 AWSラムダを使用して

+0

あなたはどの言語で開発していますか? – stdunbar

答えて

0

は、あなたがこのようなイベントを解析することができます(あなたがラムダランタイム用のPythonを使用すると仮定した場合):

あなたは keyは、あなたが boto3SNS publishメソッドを使用することができますいずれかを抽出したら
def my_handler(event, context): 
    records = event['Records'] 
    s3_records = filter(lambda record: record['eventSource'] == 'aws:s3', records) 
    object_created_records = filter(lambda record: record['eventName'].startswith('ObjectCreated'), s3_records) 
    for record in object_created_records: 
    key = record['s3']['object']['key'] 
    # key will be "backup_2017-02-22-0915_Test_Web_Site_1c709c59af2a-others.zip" in your case 
    # now you can use boto3 to act on the key 

あなたのSNSトピックに通知を送信するか、(boto3SES send_emailを使用してあなた自身に電子メールを直接送信することができます。

AWSのa nice tutorialは、S3バケットをラムダ機能に接続するのに役立ちます。

+0

ありがとうございます。 "errorMessage": "モジュール 'lambda_function'にハンドラ 'lambda_handler'がありません –

+0

はい、関数my_handlerの名前をlamba_handlerに変更する必要があります – spg

+0

ありがとうございました。今私は出力を取得しています:null –