Chr*_*mon 11
在lambda自己的cli api中管理的唯一事件源是Kinesis Streams和DynamoDb Streams.您可以使用cli管理它们aws lambda
S3存储桶事件在S3中进行管理,因为它们可以发送到SNS主题,SQS队列或Lambda功能.所以你需要特别使用aws s3apicli命令put-bucket-notification-configuration
在--notification-configurationarg中,你会有类似的东西:
{
"LambdaFunctionConfigurations": [
{
"Id": "string",
"LambdaFunctionArn": "string",
"Events": [events]
}
]
}
Run Code Online (Sandbox Code Playgroud)
事件是s3 事件的列表
小智 7
我能够使用下面的 AWS CLI 为 lambda 添加 SNS 触发器
aws lambda add-permission \
--function-name {{LAMBDA-FUNCTION-NAME}} \
--statement-id {{UNIQUE-ID}} \
--action "lambda:InvokeFunction" \
--principal sns.amazonaws.com \
--source-arn arn:aws:sns:us-east-1:77889900:{{SNS-TOPIC-ARN}}
Run Code Online (Sandbox Code Playgroud)
SNS 主题也可以来自其他地区。
希望这可以帮助。
正如@user1292364 提到的,我们需要对 lambda 使用添加权限。
唯一的问题是您需要确保将lambda 添加到 sns 订阅。否则会出现这个错误
A subscription for arn:aws:lambda:eu-west-1:276xxxxxx:function:HourlyLambdaFunction on the topic HourlyLambdaFunction could not be found.
Run Code Online (Sandbox Code Playgroud)
我更愿意以这种方式在 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;'}"
Run Code Online (Sandbox Code Playgroud)
ps:代码中的\是bash脚本的新行(如果有人想知道的话)
可以在 Cloudwatch 上找到 lambda 函数的日志
| 归档时间: |
|
| 查看次数: |
8634 次 |
| 最近记录: |