Назад | Перейти на главную страницу

Условная политика фильтрации в подписке на социальные сети

У меня есть шаблон с подпиской на SNS для очереди SQS, который выглядит следующим образом (сокращено для краткости):

"Parameters": {
    "ProductionIdentifiers": {
        "Default": "1,2,3",
        "Description": "Comma-separated list of production identifiers.",
        "Type": "List<Number>"
    }
},
"Conditions": {
    "IsProd": {
        "Fn::Equals": [
            { "Fn::Sub": "${Environment}" },
            "prod"
        ]
    }
},
"Resources": {
    "Subscription": {
        "Type": "AWS::SNS::Subscription",
        "Properties": {
            "Endpoint": {
                "Fn::GetAtt": [
                    "Queue",
                    "Arn"
                ]
            },
            "Protocol": "sqs",
            "TopicArn": {
                "Fn::ImportValue": {
                    "Fn::Sub": "My-Sns-Topic-${Environment}"
                }
            },
            "FilterPolicy": {
                "identifier": {
                    "Fn::If": [
                        "IsProd",
                        { "Ref": "ProductionIdentifiers" },
                        [ { "anything-but": [ "-1", "0" ] } ]
                    ]
                }
            }
        }
    }
}

Я хотел бы использовать список идентификаторов, если среда Prod или все, кроме -1, 0 в противном случае. Однако присоединенная очередь остается пустой. Я немного скептически отношусь к тому, как строю фильтр. Я неправильно форматирую фильтр?