当前位置: 首页 > 知识库问答 >
问题:

如何使用AWS CLI向AWS Lambda函数添加触发器?

邢寒
2023-03-14

共有2个答案

袁骏祥
2023-03-14

正如@user1292364所提到的,我们需要对lambda使用add-permission。

唯一的问题是,您需要确保lambda到sns订阅也被添加。否则将发生此错误

A subscription for arn:aws:lambda:eu-west-1:276xxxxxx:function:HourlyLambdaFunction on the topic HourlyLambdaFunction could not be found.

我更愿意使用它而不是AWS CLI,方法如下:

#!/usr/bin/env bash

# Add Lambda to SNS as subscription
aws sns subscribe \
    --topic-arn arn:aws:sns:eu-west-1:276xxxxxx:HourlyLambdaFunction \
    --protocol lambda \
    --notification-endpoint arn:aws:lambda:eu-west-1:276xxxxxx:function:HourlyLambdaFunction

# Give permissions to Lambda to access that subscription i.e. Add it through triggers
aws lambda add-permission \
    --function-name HourlyLambdaFunction \
    --statement-id 276xxxxxx\
    --action "lambda:InvokeFunction" \
    --principal sns.amazonaws.com \
    --source-arn arn:aws:sns:eu-west-1:276xxxxxx:HourlyLambdaFunction

# Send message to publish and trigger lamda
aws sns publish \
    --topic-arn arn:aws:sns:eu-west-1:276xxxxxx:HourlyLambdaFunction \
    --subject "HourlyLambdaFunction" \
    --message "{datawarehouse:banana_wh, database:banana_db, schema:banana. query:'select count(*) from banana.banana_loads;'}"

ps:\代码中有bash脚本的新行(如果有人想知道的话)

lambda函数的日志可以在Cloudwatch上找到

充小云
2023-03-14

在Lambda自己的cli api中管理的事件源只有Kinesis流和DynamoDb流。您可以使用AWS lambda使用cli管理它们

S3 bucket事件在S3内管理,因为它们可以发送到SNS主题、SQS队列或Lambda函数。因此需要使用AWS S3APIcli命令,特别是put-bucket-notification-configuration

--notification-configuration参数中,您将得到如下内容:

{
  "LambdaFunctionConfigurations": [
    {
      "Id": "string",
      "LambdaFunctionArn": "string",
      "Events": [events]
    }
  ]
}

其中events是s3事件的列表

 类似资料:
  • 我试图为cloudfront重定向根默认对象创建一个lambda@edge。我遵循了以下指示:https://aws.amazon.com/blogs/compute/implementing-default-directory-indexes-in-amazon-s3-backed-amazon-cloudfront-origins-using-lambdaedge/ 但是CloudFront没

  • 我有很多DynamoDB表要在数据管道中设置备份。我能够通过aws命令行为1或2个表传递一个json文件,这意味着json文件正在工作。 但是,当我传递一个大型JSON(包含50-100个DynamoDB表)来设置DataPipeline时,我会遇到这样的错误: 调用PutPipelineDefinition操作时发生错误(InvalidRequestException):超过Web服务限制:超过

  • 这是我的模板名为admin的代码。html: 如前所述,我得到了10个函数,这些函数可以读取多个。csv报告并将数据上传到模型中,我使用URL部分触发它们。在我看来。py我将展示两个示例:

  • 我是Azure Function应用程序中blob触发器的新手,需要一些帮助。我正在努力寻找有关如何重命名触发该函数的blob的资源。 我有一个函数应用程序,当一个新的blob被上传到容器时触发,文件被处理,我需要一种方法来将其“标记”为已处理,因此我想重命名blob。 这是我的职责: 我该如何重命名该文件?在这种情况下有可能吗?

  • 我试图使用HttpClient将“Accept Encoding”参数添加到我的HTTP头中,如“gzip,deflate”。代码如下所示。但是,我在响应中遇到以下错误,无法添加header参数。响应不包含添加的标题字段 错误:内部服务器错误

  • 如果我有这样一个函数: 我想给参数添加类型提示,怎么做?我假设的方式给了我一个语法错误: 以下内容不会引发语法错误,但似乎不是处理这种情况的直观方式: 我在文档中或在Google搜索中找不到任何东西。 编辑:我不知道默认参数在Python中是如何工作的,但为了这个问题,我将保留上面的示例。一般说来,做以下事情要好得多: