gpt4 book ai didi

ruby - 如何使用 aws ruby​​ SDK 为 AWS Lambda 创建 CloudWatch 日志触发器?

转载 作者:数据小太阳 更新时间:2023-10-29 06:50:31 25 4
gpt4 key购买 nike

我知道应该有一种方法可以使用 aws ruby​​ sdk 为 AWS Lambda 创建触发器(就像可以使用 AWS 管理控制台一样)。

*更新,我找到了创建触发器的方法。我正在使用以下代码来执行此操作:

@cloudwatchlogs = Aws::CloudWatchLogs::Client.new(region: region, credentials: Aws::Credentials.new(aws_access_key_id, aws_secret_access_key))
@cloudwatchlogs.put_subscription_filter({
log_group_name: "RDSOSMetrics",
filter_name: "RDS metrics filter",
filter_pattern: "RDS metrics filter pattern",
destination_arn: function_arn
})

我在尝试这样做时遇到以下错误:

*** Aws::CloudWatchLogs::Errors::InvalidParameterException Exception: Could not execute the lambda function. Make sure you have given CloudWatch Logs permission to execute your function

只是为了测试它,我将角色 X 附加到 Lambda 函数,并且该角色添加了 AWSLambdaFullAccess 策略,但我仍然收到此错误。

还有什么我想念的

谢谢,巴克尔

最佳答案

可以通过以下方式添加 CloudWatch Logs 权限:

client.add_permission({
action: "lambda:InvokeFunction",
function_name: function_arn,
principal: "logs." + region + ".amazonaws.com",
source_account: account_id,
source_arn: "arn:aws:logs:" + region + ":" + account_id + ":log-group:" + log_group_name + ":*",
statement_id: unique_identifier,
})

地点:

  • function_arn 是您的函数标识符,类似于 arn:aws:lambda:eu-west-1:111111111111:function:yourFunctionName
  • region 是您的服务区域名称,类似于 eu-west-1
  • account_id 是您的帐户 ID,类似于 111111111111
  • log_group_name 是您将从类似于 /aws/lambda/logGroupName
  • 的流式传输日志的名称
  • unique_identifier 在策略声明中使用的一些随机字符串。例如。 ID-1

应按以下顺序执行:

  • 创建 Lambda 函数和日志组
  • 添加权限
  • 设置订阅过滤器

更多信息:


注意 source_arn 末尾的星号:

arn:aws:logs:eu-west-1:111111111111:log-group:logGroup:*
arn:aws:logs:eu-west-1:111111111111:log-group:logGroup

是日志流的arn,不是日志组的arn。我花了一些时间来调试这个(直到我发现 aws lambda get-policy 错误)

关于ruby - 如何使用 aws ruby​​ SDK 为 AWS Lambda 创建 CloudWatch 日志触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42070232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com