Below is my cloudformation snippet that creates a SNS topic along with the subscriptions to the SQS endpoint based on parameters file (paramters.json)
paramters.json
{
"Key" : "sqlmulValues",
"Value": "us,europe,rest"
}
cloudformation snippet
Parameters:
......
sqlmulValues:
Default: "a,b"
Type: CommaDelimitedList
Resources:
NewSNSTopicName:
Type: AWS::SNS::Topic
Properties:
TopicName: "my-test-sns"
# Handling Multiple SQS subscription
Fn::ForEach::Subs:
- Args
- !Ref sqlmulValues
- 'SqsSubs${Args}':
Type: AWS::SNS::Subscription
Properties:
Endpoint: Fn::ImportValue: !Sub "${BU}-sqs-${env}-${id}-${Args}"
Protocol: sqs
TopicArn: !Ref 'SnsTopic'
Now, i’m looking to modify the Fn::ForEach::Subs:
to add the filter policy based on the country name.
If US it should add
FilterPolicy: {
"country": [
"US.int"
]
}
if Europe,
FilterPolicy: {
"country": [
"EU.br"
]
}
I came up with
......
sqlmulValues:
Default: "a,b"
Type: CommaDelimitedList
Conditions:
IsCountry: !Equals [!Select [0, !Split [",", !Ref sqlmulValues]], "US"]
Resources:
NewSNSTopicName:
Type: AWS::SNS::Topic
Properties:
TopicName: "my-test-sns"
# Handling Multiple SQS subscription
Fn::ForEach::Subs:
- Args
- !Ref sqlmulValues
- 'SqsSubs${Args}':
Type: AWS::SNS::Subscription
Properties:
Endpoint: Fn::ImportValue: !Sub "${BU}-sqs-${env}-${id}-${Args}"
Protocol: sqs
TopicArn: !Ref 'SnsTopic'
FilterPolicy:
community:
- Fn::If:
- IsCountry
- "US.int"
- "EU.br"
but it throws,
Transform AWS::LanguageExtensions failed with: Type mismatch for parameter /sqlmulValues on resource IsCountry.IsCountry
Where am I going wrong ?