首页 > 解决方案 > 如何在 AWS SAM 模板中同时包含 CloudWatch 组和流?

问题描述

作为 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 等待创建组?

标签: amazon-web-servicesamazon-cloudformationamazon-cloudwatch

解决方案


您需要使用该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'

推荐阅读