Каков правильный синтаксис для включения атрибутов сообщения при публикации сообщения в теме SNS? Я знаю, что это --message-attributes, но как правильно передать значения?
Например, для отправки сообщения я использую эту командную строку:
aws sns publish --topic-arn "arn:aws:sns:us-east-1:09706xxxxxxx:UpdatesTopic" --message "Update 1"
Я хочу включить эти атрибуты сообщения:
MessageAttributes = {
'type': {
'DataType': 'String',
'StringValue': 'event_type_a'
},
'srcArn': {
'DataType': 'String',
'StringValue': f'arn:aws:ec2:us-east-1:09706xxxxxxx:instance/instance_a'
},
'session_id': {
'DataType': 'String',
'StringValue': 'abc123'
},
'owner': {
'DataType': 'String',
'StringValue': 'me'
}
}
Вы можете использовать:
aws sns publish --topic-arn "arn:aws:sns:us-east-1:09706xxxxxxx:UpdatesTopic" --message "hello" --message-attributes '{"type":{"DataType":"String","StringValue":"event_type_a"},"srcArn":{"DataType":"String","StringValue":"arnxxx"}}'
или даже:
aws sns publish --topic-arn "arn:aws:sns:us-east-1:09706xxxxxxx:UpdatesTopic" --message "hello" --message-attributes '
{
"type": {
"DataType": "String",
"StringValue": "event_type_a"
},
"srcArn": {
"DataType": "String",
"StringValue": "arnxxx"
}
}
Это работало на Mac. Если вы используете Windows, вам может потребоваться изменить обработку кавычек.
И --message-attributes, и --message ожидают, что параметр будет заключен в двойные кавычки. В противном случае выдается ошибка: Ошибка анализа параметра «--message-attributes»: Неверный JSON: ожидается имя свойства, заключенное в двойные кавычки.
Ты прав. Спасибо. Для Windows значение должно быть таким: "{\"type\":{\"DataType\":\"String\",\"StringValue\":\"event_type_a\"},\"srcArn\ ":{\"DataType\":\"String\", \"StringValue\":\"arnxxx\"}}"