【问题标题】:AWS Serverless Application Model: Create S3 Event to LambdaAWS 无服务器应用程序模型:为 Lambda 创建 S3 事件
【发布时间】:2017-10-01 22:14:55
【问题描述】:

我想使用无服务器应用程序模型 (SAM) 和 CloudFormation 创建一个简单的 lambda 函数,该函数在 S3 存储桶中创建对象时触发(例如 thescore-cloudfront-trial)。如何启用从 S3 存储桶到 L​​ambda 函数的触发器?下面是我的 python3 boto3 代码。

    region = 'us-east-1'
    import boto3

    test_lambda_template = {
        'AWSTemplateFormatVersion': '2010-09-09',
        'Transform': 'AWS::Serverless-2016-10-31',
        'Resources': {
            'CopyS3RajivCloudF': {
                'Type': 'AWS::Serverless::Function',

                'Properties': {
                    "CodeUri": 's3://my-tmp/CopyS3Lambda',
                    "Handler": 'lambda.handler',
                    "Runtime": 'python3.6',
                    "Timeout": 300,
                    "Role": 'my_existing_role_arn'
                },
                'Events': {
                    'Type': 'S3',
                    'Properties': {
                        "Bucket": "thescore-cloudfront-trial",
                        "Events": 's3:ObjectCreated:*'

                    }

                }
            },
            'SrcBucket': {
                "Type": "AWS::S3::Bucket",
                "Properties": {
                    "BucketName": 'thescore-cloudfront-trial',
                }
            }

        }

    }

    conf = config.get_aws_config('development')
    client = aws.client(conf, 'cloudformation', region_name=region)
    response = client.create_change_set(
         StackName='RajivTestStack',
         TemplateBody=json.dumps(test_lambda_template),
         Capabilities=['CAPABILITY_IAM'],
         ChangeSetName='a',
         Description='Rajiv ChangeSet Description',
         ChangeSetType='CREATE'
     )

    response = client.execute_change_set(
        ChangeSetName='a',
        StackName='RajivTestStack',
    )

【问题讨论】:

标签: amazon-web-services amazon-s3 aws-lambda amazon-cloudformation boto3


【解决方案1】:

我发现了一些警告

警告 1:触发通知将显示在 S3 控制台中,但不会显示在 Lambda 控制台中。我现有的使用 boto3 s3 和 lambda 客户端(我想替换)的 python 部署脚本在两个控制台中都显示了通知。

警告 2:对于监控,只有当我切换到 lambda 别名视图时,我才会看到我的 lambda 触发器。但我没有为我的 lambda 指定别名。所以我不知道为什么我在非别名视图中看不到它(只看到最新版本)

我不得不像这样修改Events 键:

'Events': {
   'RajivCopyEvent': {
      'Type': 'S3',
      'Properties': {
         "Bucket": {"Ref": "SrcBucket"},
         "Events": "s3:ObjectCreated:*"

      }
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 2020-12-21
    • 2019-09-23
    • 2020-10-21
    相关资源
    最近更新 更多