包含/排除控制AWS Lambda Size无服务器目录的方法

时间:2019-01-17 10:13:05

标签: python amazon-web-services aws-lambda serverless

我一直在努力解决这个问题。以下是我的目录结构:

lib
├── dir
│   ├── DirButNotOneSubdir
│   │   ├── DirIdontWantBecauseTheSizeIsTooLarge
│   │   └── DirIwant
│   ├── DirIdontWantBecauseTheSizeIsTooLarge
│   └── DirIwant
├── lambda1.py
└── lambda2.py

我需要的子目录中有一些目录,而其他目录则不需要。为简单起见,我减少了目录的数量,因此不能一一排除所有内容。这是我在 serverless.yml 中所做的事情:

package:
    excludeDevDependencies: true
    exclude:
      - "*"
      - "*/**"
      - lib/dir/DirIdontWantBecauseTheSizeIsTooLarge
      - lib/dir/DirButNotOneSubdir/DirIdontWantBecauseTheSizeIsTooLarge
    include:
      - lib/*

因此,当我检查.serverless lib / dir中的zip文件时,它被完全忽略了:(而且,我现在唯一想到的解决方案是明确提及要包含的每个目录。有人解决了此问题。

首先包括所有内容,然后再排除一些目录,这似乎也不起作用。

注意:这是建立代码的一种旧式C代码,因此从目前的状态更改结构确实非常严峻。

1 个答案:

答案 0 :(得分:1)

尝试一下:

package:
  exclude:
    - '*/**'
  include:
    - 'lib/**'
    - '!./lib/dir/DirIdontWantBecauseTheSizeIsTooLarge'
    - '!./lib/dir/DirButNotOneSubdir/DirIdontWantBecauseTheSizeIsTooLarge'

它应该包含lib/下的所有内容,但您不要求的文件除外。通过使用!,您可以标记要在包含步骤中忽略的文件和目录。