无服务器框架AWS跨账户自定义授权者

时间:2018-11-29 12:33:55

标签: amazon-web-services aws-lambda aws-api-gateway serverless-framework

如何使用无服务器框架设置跨帐户自定义授权者?如果配置了sls框架的自定义授权者与需要授权的函数位于同一AWS账户中,则可以正常工作。

我现在所拥有的是已在其中部署了授权者功能的组织根帐户。在作为组织成员的第二个帐户上,我部署了无服务器服务,并且需要从根帐户授权这些端点。

是否可以在serverless.yml中配置这样的内容,并将其部署在成员帐户上(111111111111是根帐户号码):

  hello:
    handler: api/hello.handler
    events:
     - http:
        path: hello
        method: get
        cors: true
        authorizer: arn:aws:lambda:eu-west-1:111111111111:function:authorizer

我已经尝试过并收到以下错误:

  

发生错误:AuthorizerApiGatewayAuthorizer-的策略   Lambda函数必须明确授权方法或自定义   具有SourceArn条件的授权者,可进行跨帐户集成   (服务:AmazonApiGateway;状态代码:400;错误代码:   BadRequestException;

...根据AWS docs,这很有意义。这些文档介绍了如何使用API​​网关控制台手动执行操作,这正是我现在所做的(根目录中的授权者,会员帐户中的授权者-通过API网关手动连接,与文档中所述相同)。

随着服务和组织成员帐户数量的增长,我需要一个更好的解决方案。

是否可以使用无服务器框架进行配置并使之工作?

1 个答案:

答案 0 :(得分:1)

与许多无服务器框架一样,在CloudFormation尚未提供选项的情况下有一个插件:

https://github.com/rschick/serverless-plugin-lambda-account-access

自定义授权者的 serverless.yml应包括:

plugins:
  - serverless-plugin-lambda-account-access
provider:
  allowAccess:
    - 111111111111 # account id of invoking account