如何在另一个帐户中创建由kinesis触发的lambda函数?

时间:2016-07-05 13:55:52

标签: aws-lambda

我正在尝试使用像这样的云形式在B帐户中创建一个堆栈。

{
 "AWSTemplateFormatVersion": "2010-09-09",
 "Resources": {
"lambda": {
  "Type": "AWS::Lambda::Function",
  "Properties": {
    "Code": {
      "S3Bucket": "lambda-test-zwshao",
      "S3Key": "lambda_spike.zip"
    },
    "Description": "lambda spike function..",
    "Handler": "index.handler",
    "MemorySize": 128,
    "Role": "arn:aws:iam::A account:role/kinesis-read",
    "Runtime": "nodejs4.3",
    "Timeout": 20
  }
},
"eventSourceMapping": {
  "Type" : "AWS::Lambda::EventSourceMapping",
  "Properties": {
    "BatchSize" : 100,
    "Enabled" : true,
    "EventSourceArn" : "arn:aws:kinesis:ap-southeast-2:A account:stream/lambda-test",
    "FunctionName" : {"Ref": "lambda"},
    "StartingPosition" : "TRIM_HORIZON"
  }
  }
 }
}

A帐户是帐号。

错误为Cross-account pass role is not allowed

2 个答案:

答案 0 :(得分:2)

我问了AWS TECH SUPPORT CENTER。目前它不支持这一点。

答案 1 :(得分:1)

我希望这会有所帮助

  

跨帐户访问:授予对一个帐户中资源的访问权限   不同帐户中的可信委托人通常被称为   跨账户访问。角色是授予跨帐户的主要方式   访问。但是,通过AWS提供的一些Web服务,您可以   将策略直接附加到资源(而不是使用角色作为   代理)。这些称为基于资源的策略,您可以使用它们   授予另一个AWS账户的主体访问资源的权限。该   以下服务支持指定的基于资源的策略   资源:Amazon Simple Storage Service(S3)存储桶,Amazon Glacier   保险库,亚马逊简单通知服务(SNS)主题和亚马逊   简单队列服务(SQS)队列。有关更多信息,请参阅IAM如何   角色与基于资源的策略不同   http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html

这篇文章提供了如何启用corss-account访问的示例, https://blogs.aws.amazon.com/security/post/Tx70F69I9G8TYG/How-to-enable-cross-account-access-to-the-AWS-Management-Console

但是,对于类似的问题,这是一个hacky方法 https://gist.github.com/djm/1af7dec88fb24bd73188