gpt4 book ai didi

aws-cloudformation - Cloudformation 无法为新创建的 LogGroup 创建 LogStream

转载 作者:行者123 更新时间:2023-12-03 07:13:39 25 4
gpt4 key购买 nike

我有一个非常简单的 Cloudformation 脚本,它只是尝试创建 CloudWatch LogGroup 和关联的 LogStream -

AWSTemplateFormatVersion: '2010-09-09'
Description: Hello World
Parameters:
AppName:
Type: String
EnvName:
Type: String
Resources:
AppLogGroup:
Properties:
LogGroupName:
Fn::Join:
- '-'
- - Ref: AppName
- Ref: EnvName
RetentionInDays: 7
Type: AWS::Logs::LogGroup
AppLogStream:
Properties:
LogGroupName:
Fn::Join:
- '-'
- - Ref: AppName
- Ref: EnvName
LogStreamName:
Fn::Join:
- '-'
- - Ref: AppName
- Ref: EnvName
- info
Type: AWS::Logs::LogStream

现在,大约 50% 的时间部署成功 - 但对于另外 50% 的时间,虽然 LogGroup 创建良好,但 LogStream 的创建失败,并显示 指定的日志组不存在;并且整个堆栈回滚。

我认为这是因为 AWS 内的“最终一致性”出现某种故障,但令我感到有点惊讶的是 LogStream 的创建不能等到 LogGroup 完成。

我做错了什么吗?我应该在我的应用程序中而不是堆栈中创建 LogStreams 吗?当您发送第一条消息时,是否会自动创建 LogStream(对此表示怀疑)?这里有解决方法吗?

TIA。

最佳答案

您可以使用 !Ref 来引用日志流中的日志组,而不是手动将字符串连接在一起。这样,您还可以获得日志流对日志组的隐式依赖关系,这可确保 CloudFormation 在创建日志组后创建日志流。虽然您可以手动指定 DependsOn 来实现相同的目的,但使用 !Ref 是 AWS 建议的最佳实践方式。看起来像:

AWSTemplateFormatVersion: '2010-09-09'
Description: Hello World
Parameters:
AppName:
Type: String
EnvName:
Type: String
Resources:
AppLogGroup:
Properties:
LogGroupName:
Fn::Join:
- '-'
- - Ref: AppName
- Ref: EnvName
RetentionInDays: 7
Type: AWS::Logs::LogGroup
AppLogStream:
Properties:
LogGroupName: !Ref AppLogGroup
LogStreamName:
Fn::Join:
- '-'
- - Ref: AppName
- Ref: EnvName
- info
Type: AWS::Logs::LogStream

关于aws-cloudformation - Cloudformation 无法为新创建的 LogGroup 创建 LogStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55772177/

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