Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS SAM模板:将S3事件映射到Lambda的问题_Amazon Web Services_Amazon S3_Aws Lambda_Aws Sam_Aws Sam Cli - Fatal编程技术网

Amazon web services AWS SAM模板:将S3事件映射到Lambda的问题

Amazon web services AWS SAM模板:将S3事件映射到Lambda的问题,amazon-web-services,amazon-s3,aws-lambda,aws-sam,aws-sam-cli,Amazon Web Services,Amazon S3,Aws Lambda,Aws Sam,Aws Sam Cli,我已经按照AWS SAM文档进行了实践学习,并达到了以下特定部分: 文档的上面一页解释了如何将S3事件映射到任何资源,我在本地机器上也做了类似的事情。我的本地模板如下 AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Resources: CreateThumbnail: Type: AWS::Serverless::Function Properties: C

我已经按照AWS SAM文档进行了实践学习,并达到了以下特定部分:

文档的上面一页解释了如何将S3事件映射到任何资源,我在本地机器上也做了类似的事情。我的本地模板如下

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
  CreateThumbnail:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: hello_world/
      Handler: app.lambda_handler
      Runtime: python3.6
      Timeout: 60
      Policies: AWSLambdaExecute
      Events:
        CreateThumbnailEvent:
          Type: S3
          Properties:
            Bucket: !Ref testBucket
            Events: s3:ObjectCreated:*

  testBucket:
    Type: AWS::S3::Bucket
现在,当我在SAM模板之上构建和部署时,在创建新的S3 bucket时,“对象创建”事件不会映射到创建的Lambda函数。PSB截图

我还没有找到任何关于这个错误的文章或博客(可能,我在这里犯了一个愚蠢的错误)

请帮忙


谢谢。

首先创建一个bucket,您可以在其中保存打包的代码

aws s3 mb s3://youtbucketname
sam构建之后
追求

sam包——模板文件template.yaml——s3 bucket

首先创建一个bucket,您可以在其中保存打包的代码

aws s3 mb s3://youtbucketname
sam构建之后
追求

sam包——模板文件template.yaml——s3 bucket

我意识到由于某种原因,AWS Lambda控制台没有显示触发器事件,但映射成功。我还通过将示例图像上传到触发lambda的bucket进行了验证

事件映射可以在创建的S3 bucket的properties部分看到

S3已创建测试桶->属性->事件


我意识到由于某种原因,AWS Lambda控制台没有显示触发器事件,但映射成功。我还通过将示例图像上传到触发lambda的bucket进行了验证

事件映射可以在创建的S3 bucket的properties部分看到

S3已创建测试桶->属性->事件


您可以向
资源中添加
AWS::Lambda::Permission
。 这对我很有用:

您可以向
资源中添加
AWS::Lambda::Permission
。 这对我很有用:

您的SAM cli命令是什么?
SAM build
后接
SAM deploy--guided
您的SAM cli命令是什么?
SAM build
后接
SAM deploy--guided
它给了我以下错误
错误:无法上载CreateThumbnail资源的CodeUri参数引用的工件CreateThumbnail。S3 Bucket不存在。
您能告诉我为什么建议对命令进行上述更改吗?它有什么作用?它期望S3存储桶在实际执行模板之前出现。很抱歉,我花了很长时间。事先创建一个S3 bucket并不能满足SAM的目的。我刚刚意识到,尽管Lambda控制台没有在UI中显示触发器设置(bug?),但事件实际上已经被映射。我已经通过将一个图像放入S3存储桶并触发lambda函数来验证它。TL;DR:我问题中的原始代码起作用了。它给了我以下错误
错误:无法上载CreateThumbnail资源的CodeUri参数引用的工件CreateThumbnail。S3 Bucket不存在。
您能告诉我为什么建议对命令进行上述更改吗?它有什么作用?它期望S3存储桶在实际执行模板之前出现。很抱歉,我花了很长时间。事先创建一个S3 bucket并不能满足SAM的目的。我刚刚意识到,尽管Lambda控制台没有在UI中显示触发器设置(bug?),但事件实际上已经被映射。我已经通过将一个图像放入S3存储桶并触发lambda函数来验证它。TL;DR:我问题中的原始代码起作用了。