如何从 sam deploy 命令中排除文件夹?

How do I excluded folder from sam deploy command?

我运行这是为了部署我的lambda:

sam package --template-file prod_template.yaml --s3-bucket mybucket --output-template-file packaged-template.yaml
sam deploy --template-file packaged-template.yaml --stack-name mystack --capabilities CAPABILITY_IAM

可行,但此代码受版本控制,并且 sam 也在上传 .git 文件夹。如何让 sam 像使用 gitignore?

一样忽略某些文件夹

您需要检查您是否在模板中提供了有效的 CodeUri 路径,它应该如下所示:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
  Followers:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: ./src
      Handler: lambda.handler
      Runtime: nodejs12.x
      Timeout: 300

如果 CodeUri 未提供,则 AWS docs state 将压缩并上传整个工作目录(我认为这就是您遇到的情况)。

If you specify a file [in CodeUri], the command directly uploads it to the S3 bucket. If you specify a folder, the command zips the folder and then uploads the .zip file. For most resources, if you don't specify a path, the command zips and uploads the current working directory.