代码之家  ›  专栏  ›  技术社区  ›  NoorJafri

包含/排除控制AWS lambda大小服务器的目录的方法

  •  0
  • NoorJafri  · 技术社区  · 6 年前

    我一直在为这件事奋斗。以下是我的目录结构:

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

    在我需要的子目录中有一些目录,但其他目录没有。为了简单起见,我减少了目录的数量,因此不能逐个排除所有内容。这是我做的事 Servel.YML :

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

    因此,当我在.serverless lib/dir中检查zip文件时,它被完全忽略了:(现在我唯一能想到的解决方案是显式地提到要包含的每个目录。有人处理过这个问题吗?

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

    注意:这是一个遗留的C代码构建过程,因此从现在的情况改变结构会非常困难。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Milan Cermak    6 年前

    试试这个:

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

    它应该包括以下所有内容 lib/ 除了你告诉它不要的文件。通过使用 ! ,可以在include步骤中将文件和目录标记为省略。