Как включить группу CloudWatch и поток в шаблон AWS SAM? - PullRequest
0 голосов
/ 19 октября 2018

Как часть шаблона 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 ждать группубыть созданным?

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Нашел другое решение этой проблемы.Каждый ресурс может иметь атрибут DependsOn , указывающий на другой ресурс.Например:

myLogGroup:
    Type: 'AWS::Logs::LogGroup'
    Properties:
        LogGroupName: 'myLogGroup'
        RetentionInDays: 180

myLogStream:
    DependsOn: 'myLogGroup'
    Type: 'AWS::Logs::LogStream'
    Properties:
        LogGroupName: 'myLogGroup'
        LogStreamName: 'myLogStream'

Таким образом CloudFormation будет ожидать создания потока, пока не будет создана группа журналов.

0 голосов
/ 19 октября 2018

Вам необходимо использовать функцию 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'
...