首页 > 解决方案 > 用于接收每日 SMS 使用报告的 Amazon S3 策略 - 不起作用

问题描述

我们已将 S3 存储桶配置为接收来自 AWS SNS 的每日 SMS 使用报告。

但是 S3 存储桶没有收到任何报告。

这是我们正在使用的政策:

{
    "Version": "2012-10-17",
    "Id": "sns-sms-daily-usage-policy",
    "Statement": [
        {
            "Sid": "AllowPutObject",
            "Effect": "Allow",
            "Principal": {
                "Service": "sns.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::bucket-name/*"
        },
        {
            "Sid": "AllowGetBucketLocation",
            "Effect": "Allow",
            "Principal": {
                "Service": "sns.amazonaws.com"
            },
            "Action": "s3:GetBucketLocation",
            "Resource": "arn:aws:s3:::bucket-name"
        }
    ]
}

标签: amazon-web-servicesamazon-s3amazon-sns

解决方案


为了测试这一点,我做了以下事情:

  • 创建了一个 Amazon S3 存储桶
  • 应用上述 Bucket 策略(替换我的 Bucket 名称)
  • 在 Amazon SNS 中,将 SMS 使用报告配置为传送到此存储桶
  • 发送短信
  • 等了两天

报告终于出现在我的 S3 存储桶中,名为:

SMSUsageReports/ap-southeast-2/2018/10/31/001.csv.gz

内容是:

PublishTimeUTC,MessageId,DestinationPhoneNumber,MessageType,DeliveryStatus,PriceInUSD,PartNumber,TotalParts
2018-10-31T06:40:29.247Z,xxx,+61xxx,Promotional,Message has been accepted by phone,0.05878,1,1

所以,它似乎需要很长时间才能到达,但它确实到达了。

我还注意到发送到美国号码的前 100 条 SMS 消息是免费的,因此免费消息可能不会生成使用情况报告(但我使用的是非美国号码,所以我不知道这是否是案子)。


推荐阅读