【问题标题】:Cross Account SNS Subscribe to Lambda in second account跨账户 SNS 在第二个账户订阅 Lambda
【发布时间】:2020-06-02 06:18:19
【问题描述】:

我已使用以下 SNS 主题策略在 Lambda 中订阅此 SNS,帐号为 222222222222。我还通过类似策略授予对我的 lambda 的访问权限,并将其添加到 Lambda 的执行角色中。

得到以下错误:

创建触发器时出错:用户: arn:aws:sts::222222222222:假定角色/TSI_Base_FullAccess/AXXXXXXX 无权执行:SNS:订阅资源: arn:aws:sns:eu-west-1:111111111111:Story-5555(服务:AmazonSNS; 状态码:403;错误代码:授权错误;请求编号: 1321942c-25c4-52a1-bacb-c2e9bd641067)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1582008007178",
      "Action": [
        "sns:GetSubscriptionAttributes",
        "sns:GetTopicAttributes",
        "sns:ListSubscriptions",
        "sns:ListSubscriptionsByTopic",
        "sns:ListTagsForResource",
        "sns:ListTopics",
        "sns:Publish",
        "sns:Subscribe"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:sns:eu-west-1:111111111111:Story-5555",
      "Condition": {
        "ArnEquals": {
          "aws:PrincipalArn": "arn:aws:lambda:eu-west-1:222222222222:function:New_Cross_SNS"
        }
      }
    }
  ]
}

【问题讨论】:

  • 您不应该将arn:aws:sts::222222222222:assumed-role/TSI_Base_FullAccess/AXXXXXXXX 作为政策的主要成员吗?
  • 请同时提供功能角色和跨账号配置

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


【解决方案1】:

根据AWS Documentation,您应该在条件之外指定原则。

所以你的政策应该类似于

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1582008007178",
      "Action": [
        "sns:GetSubscriptionAttributes",
        "sns:GetTopicAttributes",
        "sns:ListSubscriptions",
        "sns:ListSubscriptionsByTopic",
        "sns:ListTagsForResource",
        "sns:ListTopics",
        "sns:Publish",
        "sns:Subscribe"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:sns:eu-west-1:111111111111:Story-5555",
      "Principal": {
        "AWS": ["222222222222"]
      },
      "Condition": {
        "ArnEquals": {
          "aws:PrincipalArn": [
               "arn:aws:lambda:eu-west-1:222222222222:function:New_Cross_SNS",
               "arn:aws:sts::222222222222:assumed-role:TSI_Base_FullAccess:AXXXXXXXX"
          ]
        }
      }
    }
  ]
}

确定在策略的条件部分指定哪个 ARN 的方法是从您的函数调用(并打印)get-caller-identity API。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 2018-12-20
    • 1970-01-01
    相关资源
    最近更新 更多