Запуск шаблона облачной информации yaml с использованием boto дает ошибку проверки - PullRequest
0 голосов
/ 04 мая 2018

Я создал файл шаблона yaml. Я хочу пометить лямбда-функцию на основе условия, указанного в документации https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/conditions-section-structure.html

Следующее - это мой yaml-

AWSTemplateFormatVersion: '2012-10-10'  
Description: "Cloud formation template"

Parameters:  
      tagName:  
        Type: String  
        Description: "tag name for the resource"  
        Default: test  

Conditions:  
      isConditionalTag:  
        - Fn::Equals:  
            - Ref: tagName  
            - "test"  
Resources:  
       TestambdaFunction:  
       Properties:  
            Code:  
                 S3Bucket: "abc-test"  
                 S3Key: xyz-RELEASE.jar  
            Description: Test Lambda function  
            Environment:  
              Variables:  
                DATA_TYPE: "test-data"  
            FunctionName: TestFunction  
            Handler: com.test.testLambda::handleRequest  
            MemorySize: 200  
            Role: "arn:aws:iam::user:role/general"  
            Runtime: java8  
            Timeout: 300  
            Tags:  
            -    Key: "component"  
                 Value:  
                    Fn::If:  
                        - isConditionalTag  
                        - Ref: tagName  
                        - "newValue"  
       Type: AWS::Lambda::Function 

Нет ошибок форматирования, при запуске шаблона с использованием boto выдается ошибка проверки как

boto.exception.BotoServerError: BotoServerError: 400 неверный запрос {"Ошибка": {"Код": "ValidationError", "Сообщение": "Ошибка формата шаблона: условия могут быть только логическими операциями над параметрами и другими условиями", "Тип": "Отправитель"}, "RequestId": " 30250a23-4a66-11e8-a3bd-a14cac12563" }

1 Ответ

0 голосов
/ 04 мая 2018

Вам не нужно будет использовать условие , чтобы выполнить это.

Условия используются для определения, создается ли ресурс в Cloudformation.

На основании документации ,

Необязательный раздел Условия включает в себя операторы, которые определяют, когда ресурс создан или когда свойство определено. Например, вы Можно сравнить, равно ли значение другому значению. На основе В результате этого условия вы можете условно создать ресурсы

Вы должны быть в состоянии решить эту проблему, выполнив что-то вроде этого (не проверено):

Parameters:  
  tagName:  
    Type: String  
    Description: "tag name for the resource"  
    Default: test  
Resources:  
  TestambdaFunction:  
    Properties:  
      Code:  
        S3Bucket: "abc-test"  
        S3Key: xyz-RELEASE.jar  
      Description: Test Lambda function  
      Environment:  
        Variables:  
          DATA_TYPE: "test-data"  
      FunctionName: TestFunction  
      Handler: com.test.testLambda::handleRequest  
      MemorySize: 256  
      Role: "arn:aws:iam::user:role/general"  
      Runtime: java8  
      Timeout: 300
      Tags:  
        - Key: "component"  
          Value: !Ref tagName
    Type: AWS::Lambda::Function

Обратите внимание, что лямбда-функциям требуется память с шагом 64 МБ

...