AWS Cross Account SNS Publish

时间:2017-07-29 00:03:52

标签: amazon-web-services aws-access-policy

我们有两个账户111111111111和222222222222。

要求 - 帐户111111111111将每天创建RDS的快照。拍摄快照后,我们希望帐户111111111111发布到帐户222222222222中创建的SNS主题。一旦帐户222222222222收到通知,它就会运行Lambda函数。

我已将以下政策附加到帐户222222222222

中创建的主题
     "Sid":"RestoreRDSEng_topic_publish",
     "Effect":"Allow",
     "Principal":{
        "AWS":"111111111111"
     },
     "Action":"sns:Publish",
     "Resource":"arn:aws:sns:us-east-1:222222222222:RestoreRDSEng",
     "Condition":{
        "StringEquals":{
           "AWS:SourceAccount":"222222222222"
        },

     }
  } 

我在帐号111111111111尝试发布到222222222222时收到以下错误

*" message":" AuthorizationError:User:arn:aws:sts :: ************ assume-role / tf-rds_eventhandler / tf-rds_eventhandler无权执行:SNS:在资源上发布:arn:aws:sns:us-east-1:xxxxxxxxxxxx:RestoreRDSEng \ n \ tstatus代码:403,请求ID:098f4647-c9ad-51fe-9bc3- 17b45deef60e" *

问题:

  1. 这种做法有什么不妥吗?

  2. 我是否应该在帐户222222222222中创建一个具有对111111111111的受信任访问权限的角色?

  3. 我们将不胜感激。

2 个答案:

答案 0 :(得分:0)

Principal必须是帐户11111中的服务或角色,您需要采取行动将其发布到SNS主题。例如:

 "Principal": {
     "Service": "cloudtrail.amazonaws.com"
   }

答案 1 :(得分:0)

应该是:

    {
      "Sid": "lambda-access",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111111111111:root"
      },
      "Action": [
        "SNS:Publish"
      ],
      "Resource": "arn:aws:sns:us-east-1:222222222222:RestoreRDSEng"
    }