作为SAM模板的一部分,我想创建一个日志组和两个日志流。 最初的想法是:
myLogGroup:
Type: 'AWS::Logs::LogGroup'
Properties:
LogGroupName: 'myLogGroup'
RetentionInDays: 180
myLogStream:
Type: 'AWS::Logs::LogStream'
Properties:
LogGroupName: 'myLogGroup'
LogStreamName: 'myLogStream'
不幸的是,当尝试部署应用程序时,事件日志中出现错误:
12:24:32 UTC+0200 CREATE_COMPLETE AWS::Logs::LogGroup myLogGroup
12:24:31 UTC+0200 CREATE_IN_PROGRESS AWS::Logs::LogGroup myLogGroup Resource creation Initiated
12:24:31 UTC+0200 CREATE_FAILED AWS::Logs::LogStream myLogStream The specified log group does not exist
12:24:31 UTC+0200 CREATE_IN_PROGRESS AWS::Logs::LogGroup myLogGroup
12:24:31 UTC+0200 CREATE_IN_PROGRESS AWS::Logs::LogStream myLogStream
是否可以让AWS等待创建组?
答案 0 :(得分:0)
您需要使用Fn::Ref
函数,以便CloudFormation理解资源在同一模板上。否则,在创建myLogStream
时,CloudFormation认为它应该引用另一个{已经存在的)myLogGroup
。
myLogGroup:
Type: 'AWS::Logs::LogGroup'
Properties:
LogGroupName: 'myLogGroup'
RetentionInDays: 180
myLogStream:
Type: 'AWS::Logs::LogStream'
Properties:
LogGroupName: !Ref myLogGroup
LogStreamName: 'myLogStream'
答案 1 :(得分:0)
找到了解决此问题的另一种方法。每个资源可以具有指向另一个资源的DependsOn属性。例如:
myLogGroup:
Type: 'AWS::Logs::LogGroup'
Properties:
LogGroupName: 'myLogGroup'
RetentionInDays: 180
myLogStream:
DependsOn: 'myLogGroup'
Type: 'AWS::Logs::LogStream'
Properties:
LogGroupName: 'myLogGroup'
LogStreamName: 'myLogStream'
通过这种方式,CloudFormation将等待创建流,直到创建日志组。