为 kinesis firehose cloudformation 启用 cloudwatch 日志
Enable cloudwatch logs for kinesis firehose cloudformation
我正在尝试为我的 firehose 捕获 Cloudwatch 日志,以便在将数据发送到 S3
目的地时发现任何错误。我创建了一个包含日志详细信息的 cloudformation 模板
"CloudWatchLoggingOptions" : {
"Enabled" : "true",
"LogGroupName": "/aws/firehose/firehose-dev", -->firehose-dev is my firehosedeliverystream name
"LogStreamName" : "s3logs"
},
我已授予 firehose 必要的 IAM 权限以创建 loggroupname
和 streamname
。
{
"Sid": "",
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:*:*:*"
]
}
当我触发模板时,我没有发现在 cloudwatch 日志中创建了任何日志组名称和流名称。
但是当我们将相同的 IAM 权限授予 AWS::Lambda
资源时,它会自动创建一个日志组名称(即 /aws/lambda/mylambdaname
)并将日志发送到该组。但为什么这种情况不适用于 firehose?
解决方法
我正在手动创建名称为 /aws/firehose/firehose-dev
的 AWS::Logs::LogGroup
资源和名称为 s3logs
.
的 AWS::Logs::LogStream
资源
And also firehose will create a loggroup name and logstream name
automatically, if we configure the firehose deliverystream using
console.
当通过 cloudformation 配置时,firehose 不能像 aws lambda 那样自动创建日志组名称和日志流名称吗?
谢谢
感谢任何帮助
依赖资源。有些资源会为您创建日志组,有些则不会。有时控制台会在后台创建它们。当您使用 CloudFormation 时,通常您必须自己做所有事情。
对于 Firehose,您可以在 CloudFormation 中创建 AWS::Logs::LogGroup
和 AWS::Logs::LogStream
资源。例如 (yaml):
MyFirehoseLogGroup:
Type: AWS::Logs::LogGroup
Properties:
RetentionInDays: 1
MyFirehoseLogStream:
Type: AWS::Logs::LogStream
Properties:
LogGroupName: !Ref MyFirehoseLogGroup
然后当您定义 AWS::KinesisFirehose::DeliveryStream
时,您可以引用它们:
CloudWatchLoggingOptions:
Enabled: true
LogGroupName: !Ref MyFirehoseLogGroup
LogStreamName: !Ref MyFirehoseLogStream
我正在尝试为我的 firehose 捕获 Cloudwatch 日志,以便在将数据发送到 S3
目的地时发现任何错误。我创建了一个包含日志详细信息的 cloudformation 模板
"CloudWatchLoggingOptions" : {
"Enabled" : "true",
"LogGroupName": "/aws/firehose/firehose-dev", -->firehose-dev is my firehosedeliverystream name
"LogStreamName" : "s3logs"
},
我已授予 firehose 必要的 IAM 权限以创建 loggroupname
和 streamname
。
{
"Sid": "",
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:*:*:*"
]
}
当我触发模板时,我没有发现在 cloudwatch 日志中创建了任何日志组名称和流名称。
但是当我们将相同的 IAM 权限授予 AWS::Lambda
资源时,它会自动创建一个日志组名称(即 /aws/lambda/mylambdaname
)并将日志发送到该组。但为什么这种情况不适用于 firehose?
解决方法
我正在手动创建名称为 /aws/firehose/firehose-dev
的 AWS::Logs::LogGroup
资源和名称为 s3logs
.
AWS::Logs::LogStream
资源
And also firehose will create a loggroup name and logstream name automatically, if we configure the firehose deliverystream using console.
当通过 cloudformation 配置时,firehose 不能像 aws lambda 那样自动创建日志组名称和日志流名称吗?
谢谢 感谢任何帮助
依赖资源。有些资源会为您创建日志组,有些则不会。有时控制台会在后台创建它们。当您使用 CloudFormation 时,通常您必须自己做所有事情。
对于 Firehose,您可以在 CloudFormation 中创建 AWS::Logs::LogGroup
和 AWS::Logs::LogStream
资源。例如 (yaml):
MyFirehoseLogGroup:
Type: AWS::Logs::LogGroup
Properties:
RetentionInDays: 1
MyFirehoseLogStream:
Type: AWS::Logs::LogStream
Properties:
LogGroupName: !Ref MyFirehoseLogGroup
然后当您定义 AWS::KinesisFirehose::DeliveryStream
时,您可以引用它们:
CloudWatchLoggingOptions:
Enabled: true
LogGroupName: !Ref MyFirehoseLogGroup
LogStreamName: !Ref MyFirehoseLogStream