【问题标题】:aws s3 events sns topic notification mail human readable formataws s3 事件 sns 主题通知邮件人类可读格式
【发布时间】:2019-12-12 14:44:47
【问题描述】:

我想要带有 sns 的 s3 事件,但我想要用户可读的电子邮件通知,因为只有我想要时间戳,只需要放置对象。我们只需要人类可读的。

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-lambda


    【解决方案1】:

    S3 触发 lambda,lambda 通过 SNS 向用户发送电子邮件

    【讨论】:

    【解决方案2】:

    S3 默认发送完整的 JSON 作为事件,您有两个选项来发送人类可读的格式电子邮件。

    • 使用云监视事件配置云监视跟踪,并仅使用对象和时间戳转换输入并设置目标 SNS

    您可以查看CloudWatch-Events-Input-Transformer-TutorialConfiguring Amazon S3 Event Notifications

    • 第二种方法按照建议简单易行,配置 lambda 抓取所需属性并发布到 SNS,订阅电子邮件到 SNS 主题,现在消息将是人类可读的格式。

      • 仅使用 put 事件在 s3 上添加通知并发送到 lambda
      • 创建一个 lambda 函数并分配要发布到 SNS 主题的角色

    角色:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "sns-permission",
                "Effect": "Allow",
                "Action": "sns:Publish",
                "Resource": "arn:aws:sns:us-west-2:YOUR_ACCOUNT:demo"
            }
        ]
    }
    

    Lambda 函数示例

    'use strict';
    
    // Load the AWS SDK for Node.js
    const AWS = require('aws-sdk');
    
    
    const sns = new AWS.SNS()
    
    module.exports.handler = async (event) => {
        var bucket = event.Records[0].s3.bucket.name;
        var key = event.Records[0].s3.object.key;
        var eventTime= event.Records[0].eventTime;      
      const params = {
        Message: "bucket:" + bucket + "Object Name:  "+key+ " Event Time:" + eventTime,
        Subject: 'Test SNS From Lambda',
        TopicArn: 'arn:aws:sns:us-west-2:123456789:demo'
      };
    
      let response = {
        statusCode: 200,
        body: JSON.stringify('SNS message'),
      };
      try {
        const data = await sns.publish(params).promise();
        response.messageId = data.MessageId,
        response.result = 'Success'
      } catch (e) {
        console.log(e.stack)
        response.result = 'Error'
      }
      return response
    
    };
    

    在这种情况下,电子邮件将只包含

    bucket:mybucketObject Name:  HappyFace.jpg Event Time:1970-01-01T00:00:00.000Z
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-19
      • 2017-07-15
      • 2021-02-13
      • 2021-04-24
      • 2021-12-28
      • 2018-11-21
      • 2019-07-17
      • 2019-08-06
      相关资源
      最近更新 更多