Pri*_*ate 7 amazon-web-services aws-cloudformation amazon-cloudwatchlogs amazon-kinesis-firehose
我正在尝试为我的 Firehose 捕获 Cloudwatch 日志,以在将数据发送到S3目的地时发现任何错误。我创建了一个带有日志详细信息的 cloudformation 模板
"CloudWatchLoggingOptions" : {
"Enabled" : "true",
"LogGroupName": "/aws/firehose/firehose-dev", -->firehose-dev is my firehosedeliverystream name
"LogStreamName" : "s3logs"
},
Run Code Online (Sandbox Code Playgroud)
我已授予必要的 IAM 权限来创建loggroupname和streamname.
{
"Sid": "",
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:*:*:*"
]
}
Run Code Online (Sandbox Code Playgroud)
当我触发模板时,我没有在 cloudwatch 日志中找到任何日志组名和流名。
但是当我们为AWS::Lambda资源提供相同的 IAM 权限时,它会自动创建一个/aws/lambda/mylambdaname日志组名(即)并将日志发送到该组。但是为什么这种情况不适用于 firehose ?
作为解决方法
我手动创建AWS::Logs::LogGroup与名称资源/aws/firehose/firehose-dev和AWS::Logs::LogStream资源使用的名称s3logs。
如果我们使用控制台配置 firehose 传输流,firehose 也会自动创建日志组名称和日志流名称。
通过 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
Run Code Online (Sandbox Code Playgroud)
然后当你定义你的 时AWS::KinesisFirehose::DeliveryStream,你可以引用它们:
CloudWatchLoggingOptions:
Enabled: true
LogGroupName: !Ref MyFirehoseLogGroup
LogStreamName: !Ref MyFirehoseLogStream
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1142 次 |
| 最近记录: |