如何通过 serverles.yml 在我的 lambda 中提供基于资源的策略?

How can I provide resource-based policy in my lambda via serverles.yml?

我正在使用 serverless.yml 将 lambda 部署到 AWS,我想知道如何为我的 lambda 配置基于资源的策略。

我为我的 lambda 部署了自定义别名,需要在基于资源的策略中授予 invoke:lambda。所以当你打开 lambda -> configuration -> permission 时,策略应该如下所示

当我在 serverless.yml 中使用 role 配置时,它只会更改我的 lambda 执行角色的权限。如何为我的 lambda 修改 Resource-based policy

我之前用过API网关资源策略: https://www.serverless.com/framework/docs/providers/aws/events/apigateway/#resource-policy

对于lambda 函数关联,您可以直接查看该线程: https://github.com/serverless/serverless/issues/4926

示例 serverless.yaml 如下所示:

  provider:
    name: aws
    runtime: nodejs8.10
    memorySize: 128
    stage: dev
    apiGateway: 
      resourcePolicy:
        - Effect: Allow
          Principal: '*'
          Action: execute-api:Invoke
          Resource:
            - execute-api:/*/*/*
          Condition:
            IpAddress:
              aws:SourceIp:
                - 'your ip here'

How to restrict access to a lambda

请注意,资源策略目前仅适用于 REST API 网关。 https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-vs-rest.html

HTTP APIs 不支持资源策略。