Estou encontrando um problema ao implantar uma pilha do AWS CloudFormation para SNS. A mensagem de erro que recebo é:
Model validation failed (#/Subscription: expected type: JSONArray, found: JSONObject)
Tenho o seguinte snippet de modelo do CloudFormation onde defino um tópico SNS e defino a propriedade Subscription. A intenção é criar dinamicamente uma matriz de assinaturas a partir de um parâmetro que pode conter endereços de e-mail.
Parameters:
Endpoint1:
Type: String
Endpoint2:
Type: String
EnvironmentName:
Description: "The environment name (e.g., dev, prod)"
Type: String
Resources:
Topic1:
Type: AWS::SNS::Topic
Properties:
DisplayName: !Sub ${EnvironmentName} notification1
TopicName: !Sub ${EnvironmentName}-notification1
Subscription:
Endpoint: ${Endpoint1}
Protocol: "email"
StuckedObjectsSNSTopic:
Type: AWS::SNS::Topic
Properties:
DisplayName: !Sub ${EnvironmentName} Notification2
TopicName: !Sub ${EnvironmentName}-notification2
Subscription:
Endpoint: ${Endpoint2}
Protocol: "email"
Eu passo Endpoint1 e Endpoint2 em um dict do python.
ENDPOINT1 = "[email protected]"
ENDPOINT2 = "[email protected]"
context["Endpoint1"] = ENDPOINT1
context["Endpoint2"] = ENDPOINT2
Espera-se que a propriedade Subscription seja uma matriz, mas o modelo está apresentando um erro indicando que recebeu um objeto.
Como posso formatar corretamente a propriedade Subscription para sempre ser uma matriz JSON válida no CloudFormation, especialmente ao manipular dinamicamente endereços de e-mail únicos e múltiplos? Existe uma maneira mais confiável de fazer isso?
Precisa ser um Array, como mencionado.
Você tem:
Precisa ser:
Veja o exemplo em https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-topic.html#aws-resource-sns-topic--examples