aws-cli中sqs的send-message命令中消息属性的简写语法

时间:2016-09-07 13:43:22

标签: amazon-web-services amazon-sqs aws-cli

尝试使用AWS CLI for SQS发送消息时,我无法获得--message-attributes参数的简写语法。

指定json文件可以正常工作,并且引用没有显示简写选项的示例。

以下是此命令的参考,它指定了我尝试使用的简写,但我无法使其工作:http://docs.aws.amazon.com/cli/latest/reference/sqs/send-message.html

这是我尝试过的命令:

aws sqs send-message 
--queue-url https://sqs.us-east-1.amazonaws.com/0000000000/aa_queue_name 
--message-body "message body goes here" 
--message-attributes firstAttribute={DataType=String,StringValue="hello world"},secondAttribute={DataType=String,StringValue="goodbye world"}

我不断收到错误消息:

  

参数验证失败:参数的类型无效   MessageAttributes.contentType,value:StringValue = Snapshot,type:   ,有效类型:

有人曾经使用速记来管理邮件的发送属性吗?

2 个答案:

答案 0 :(得分:9)

目前,--message-attributes选项的简写语法文档不正确,而且简写语法不起作用。

相反,您可以使用JSON文件(如您所述)。您还可以使用内联JSON:

aws sqs send-message 
  --queue-url https://sqs.us-east-1.amazonaws.com/0000000000/aa_queue_name 
  --message-body "message body goes here" 
  --message-attributes '{ "firstAttribute":{ "DataType":"String","StringValue":"hello world" }, "secondAttribute":{ "DataType":"String","StringValue":"goodbye world"} }'

答案 1 :(得分:2)

您的速记语法格式正确:

MY_KEY = {DataType = 字符串,StringValue = MY_VALUE }

您只是忘了在命令行选项中用单引号或双引号引起来:

aws sqs send-message \
  --queue-url https://sqs.us-east-1.amazonaws.com/0000000000/aa_queue_name \
  --message-body "message body goes here" \
  --message-attributes 'firstAttribute={DataType=String, StringValue="hello world"}, secondAttribute={DataType=String,StringValue="goodbye world"}'

上面的快捷方式语法应该正确地产生一条带有2个额外标题的消息,也就是消息属性:

firstAttribute=hello world
secondAttribute=goodbye world

注意:

一个属性是一个<class 'dict'>,因此每个属性看起来像一个字典:{DataType=String, StringValue=MY_VALUE}

  • 受支持的DataType字符串数字二进制

  • 每个DataType值可以包含一个可选的自定义扩展名,aws会忽略它。例如: String.uuid Number.int Binary.pdf

https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-message-attributes.html#message-attribute-components