如何将Amazon SES权限写入您的Amazon S3存储桶

时间:2017-01-24 03:00:07

标签: amazon-web-services amazon-s3

我希望我的SES(AWS)可以接收电子邮件,所以我按照以下教程, http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-getting-started-receipt-rule.html

当我在最后一步 - 创建规则时,它会出现以下错误, 无法写入存储桶:"电子邮件接收"

我谷歌并发现(http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-permissions.html)上的这些信息可以解决问题。

但是,在添加我的策略语句时,它会出现错误 - 此策略包含以下错误:已禁止字段Principal有关IAM策略语法的详细信息,请参阅AWS IAM策略。

我的政策声明是,

{     "版本":" 2012-10-17",     "陈述":[         {             " Sid":" GiveSESPermissionToWriteEmail",             "效果":"允许",             "校长":{                 "服务":[                     " ses.amazonaws.com"                 ]             },             "行动":[                 " S3:PutObject"             ]             "资源":" arn:aws:s3 ::: mybulketname / *",             "条件":{                 " StringEquals":{                     " aws:Referer":" my12accountId"                 }             }         }     ] }

如果我起飞

  

"校长":{                 "服务":[                      " ses.amazonaws.com"                  ]              }

验证政策将通过。

由于

5 个答案:

答案 0 :(得分:6)

查找存储桶->许可-> bucketPolicy

{
    "Version": "2012-10-17",
    "Statement": [
       {
           "Sid": "AllowSESPuts",
           "Effect": "Allow",
           "Principal": {
               "Service": "ses.amazonaws.com"
           },
           "Action": "s3:PutObject",
           "Resource": "arn:aws:s3:::BUCKEN_NAME/*",
           "Condition": {
            "StringEquals": {
                   "aws:Referer": "YOUR ID"
                }
           }
       }
   ]
}

在这里https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-permissions.html

了解更多

要在AWS管理控制台上找到您的AWS账户ID号,请在右上角的导航栏上选择“支持”,然后选择“支持中心”。您当前登录的帐户ID出现在“支持”菜单下方的右上角。

在这里https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html

了解更多

答案 1 :(得分:1)

此问题已得到解决 在要授予SES权限的存储桶上创建策略,而不是在IAM

答案 2 :(得分:0)

我遵循了此建议,但仍然遇到问题。经过大量调试后,我意识到SES无法编写,因为我将默认的服务器端加密(存储桶中)设置为“ AWS-KMS”

我进行了5分钟的google搜索,找不到任何地方记录的这种不兼容性。

您可以通过将目标存储桶上的默认加密设置更新为“ AES-256”或“无”来解决此问题。

答案 3 :(得分:0)

请注意,即使在正确指定权限后,我仍然遇到此错误。如果您使用跨区域(例如,SES 位于弗吉尼亚北部,S3 Bucket 位于非洲),则您需要使用区域指定存储桶名称,否则只需将存储桶放在同一区域。

答案 4 :(得分:-2)

我有同样的问题,如果我只删除"条件" 政策通过和" RuleSet"好的:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "GiveSESPermissionToWriteEmail",
            "Effect": "Allow",
            "Principal": {
                "Service": "ses.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::mybulketname/*"
        }
    ]
}