Как настроить журнал Cloudwatch для лямбда-выражения, созданного в Cloudformation

После создания функции Lambda в Cloudformation я хотел бы иметь возможность настроить срок действия журналов Cloudwatch в том же скрипте Cloudformation.

eg:

MyLambdaRole:
  Type: AWS::Iam::Role
    ...
    Properties:
      ...
      Policies:
        -
          PolicyName: "myPolicy"
          PolicyDocument:
            Version: "2012-10-17"
            Statement:
              -
                Effect: "Allow"
                Action:
                  - "logs:CreateLogGroup"
                  - "logs:CreateLogStream"
                  - "logs:PutLogEvents"
                Resource: "arn:aws:logs:*:*:*"

MyLambda:
  Type: AWS::Lambda::Function
  Properties:
    ...
    Role: !GetAtt [ MyLambdaRole, Arn ]

Однако CloudFormation не позволяет изменять / обновлять журналы, зарезервированные для AWS: «Группы журналов, начинающиеся с AWS /, зарезервированы для AWS».

Есть ли обходной путь для этого? Поскольку нет возможности настроить имя журнала в Создание ресурса лямбда, возможно, есть способ указать его в определении роли, которое я не могу найти.


person Efren    schedule 17.05.2018    source источник
comment
stackoverflow.com/questions/39231592 /   -  person Pat Myron    schedule 26.08.2019


Ответы (3)


Попробуйте это и используйте атрибут RetentionInDays, чтобы изменить журналы, срок действия которых истекает через некоторое время

LogGroup:
  Type: AWS::Logs::LogGroup
  Properties:
    LogGroupName: !Join ['/', ['/aws/lambda', !Ref MyLambda]]
    RetentionInDays: 7 # days

Примечание: проблема с невозможностью создания группы журналов появится, если имя группы журналов уже существует (будет существовать, если MyLambda уже существует). Обходной путь - удалить и создать стек.

person roxxypoxxy    schedule 09.10.2018
comment
Обратите внимание, что это невозможно для Журналы API GW: Do not manually API Gateway API log groups or streams...This is because API Gateway creates log groups or log streams for an API stage at the time when it is deployed - person Efren; 14.12.2018
comment
Просто проверил, что на данный момент можно создать хотя бы журнал API GW, если журнал не существует. - person Efren; 14.01.2019
comment
поэтому я добавил туда if the log group name already exists - person roxxypoxxy; 15.01.2019
comment
Да, но способ удаления будет работать только в том случае, если журнал был сначала создан из стека. Сообщение было о modify/update Logs для ресурса, которого изначально не было в стеке, он автоматически создается AWS, поэтому просто добавив этот комментарий после тестирования, журнал был удален вручную, а затем создан стек. - person Efren; 16.01.2019

Нет, нет. Как вы писали, это группа журналов, принадлежащая AWS, и вы не можете предоставить себе больше разрешений в роли, чем позволяет AWS. Следовательно, вы не можете позволить себе изменять их группу журналов.

person Jeshan    schedule 18.05.2018
comment
Это неверно, я могу изменить группу журналов через awscli с помощью команда put-retention-policy. Думаю, кажется, что пока только облачная формация ограничена. - person Efren; 21.05.2018
comment
Никогда не думал об этом, спасибо. Если у меня будет хороший ответ, я попробую еще раз - person Jeshan; 22.05.2018

Используйте модель бессерверного приложения AWS, заботится о развертывании, ролях и исходящих журналах, и вы всегда можете добавить свой собственный код облачной информации https://github.com/awslabs/serverless-application-model у них уже есть много готовых примеров.

person Douglas Lopez    schedule 17.05.2018
comment
Я не могу найти, где этот инструмент выполняет конкретную задачу, которую я задаю в вопросе, пример для журналов Cloudwatch во многом похож на использование сценария облачной информации напрямую - person Efren; 17.05.2018
comment
Шаблон sam заботится о роли IAM и настройке журналов cloudwatch, поэтому выглядит так просто. - person Douglas Lopez; 17.05.2018
comment
Хорошо, не могли бы вы добавить пример к ответу? Я не могу найти, где будет настроен журнал облачных наблюдений с указанием числа дней истечения срока действия. - person Efren; 17.05.2018
comment
Похоже, что ресурс функции в SAM не имеет возможности настроить дату истечения срока действия группы лямбда-журналов. - person Efren; 17.05.2018