#amazon-web-services #amazon-cloudformation
#amazon-веб-сервисы #amazon-cloudformation
Вопрос:
Мне нужно, чтобы свойство DeadLetterQueue в AWS :: Serverless:: Function создавалось только в том случае, если Env = ppd или Env = prod
Conditions:
IsPpdOrPrdEnv: !Or [!Equals [!Ref "Env", ppd], !Equals [!Ref "Env", prod]]
<...>
Resources:
<...>
TestFunction:
Type: 'AWS::Serverless::Function'
Properties:
FunctionName: !Sub '${Env}-Test-Function'
DeadLetterQueue:
TargetArn: !If [IsPpdOrPrdEnv, !Ref TestSNSTopic, !Ref "AWS::NoValue"]
Type: !If [IsPpdOrPrdEnv, SNS, !Ref "AWS::NoValue"]
<...>
Ошибка:
Преобразование AWS :: Бессерверное-2016-10-31 сбой с помощью: сбой внутреннего преобразования.
Я также пробовал:
DeadLetterQueue:
!If
- IsPpdOrPrdEnv
-
TargetArn: !Ref TestSNSTopic
Type: SNS
- !Ref "AWS::NoValue"
Ошибка:
Преобразование AWS :: Бессерверное-2016-10-31 ошибка с: Недопустимый документ спецификации бессерверного приложения. Количество найденных ошибок: 1. Ресурс с идентификатором [testFunction] недопустим. для «DeadLetterQueue» требуется указать свойства Type и TargetArn.
Любой совет, пожалуйста?
Ответ №1:
Похоже, это ошибка / ограничение SAM. В github есть открытые проблемы (здесь и здесь), которые описывают, с чем вы столкнулись.
Поскольку обе проблемы открыты, они не решены. Единственным обходным решением является:
В итоге нам пришлось добавить (вручную или по сценарию) этап предварительного развертывания, который просто удаляет всю часть конфигурации [DeadLetterQueue], если [DeadLetterQueue] нежелателен.