使用 AWS CLI 命令添加 SQS 重新驱动策略
Adding SQS redrive policy using AWS CLI command
我正在尝试使用下面的 AWS CLI 命令为 SQS 设置重新驱动策略,但看到与重新驱动相关的错误 JSON。你能告诉我如何解决这个问题吗?
redrive_policy="{\"RedrivePolicy\":{\"deadLetterTargetArn\":\"$dlq_arn\",\"maxReceiveCount\":\"15\"}}"
AWS CLI 命令
aws sqs set-queue-attributes --queue-url https://queue.amazonaws.com/12345678/test-queue --attributes $redrive_policy --region=us-east-1
错误信息
Parameter validation failed: Invalid type for parameter
Attributes.RedrivePolicy, value: OrderedDict([(u'deadLetterTargetArn',
u'arn:aws:sqs:us-east-1:12345678:dlq'), (u'maxReceiveCount', u'15')]),
type: , valid types:
您是否尝试过在单独的文件中创建 JSON 并将其作为参数传递给您的 AWS CLI 命令?我发现在将 JSON 作为参数传递时很难获得所有正确的转义。因此,您基本上可以按照 AWS 文档中显示的示例进行操作:
https://docs.aws.amazon.com/cli/latest/reference/sqs/set-queue-attributes.html#examples
- 所以首先您要创建一个名为 "set-queue-attributes.json" 的新文件,如下所示:
{
"DelaySeconds": "10",
"MaximumMessageSize": "131072",
"MessageRetentionPeriod": "259200",
"ReceiveMessageWaitTimeSeconds": "20",
"RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:80398EXAMPLE:MyDeadLetterQueue\",\"maxReceiveCount\":\"1000\"}",
"VisibilityTimeout": "60"
}
- 然后运行这样的命令:
aws sqs set-queue-attributes --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyNewQueue --attributes file://set-queue-attributes.json --region=us-east-1
如果你想 运行 在同一个命令中,你可以使用这个例子:
aws sqs set-queue-attributes \
--queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyNewQueue \
--attributes '{
"RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:80398EXAMPLE:MyDeadLetterQueue\",\"maxReceiveCount\":\"1000\"}",
"MessageRetentionPeriod": "259200",
"VisibilityTimeout": "90"
}'
我正在尝试使用下面的 AWS CLI 命令为 SQS 设置重新驱动策略,但看到与重新驱动相关的错误 JSON。你能告诉我如何解决这个问题吗?
redrive_policy="{\"RedrivePolicy\":{\"deadLetterTargetArn\":\"$dlq_arn\",\"maxReceiveCount\":\"15\"}}"
AWS CLI 命令
aws sqs set-queue-attributes --queue-url https://queue.amazonaws.com/12345678/test-queue --attributes $redrive_policy --region=us-east-1
错误信息
Parameter validation failed: Invalid type for parameter Attributes.RedrivePolicy, value: OrderedDict([(u'deadLetterTargetArn', u'arn:aws:sqs:us-east-1:12345678:dlq'), (u'maxReceiveCount', u'15')]), type: , valid types:
您是否尝试过在单独的文件中创建 JSON 并将其作为参数传递给您的 AWS CLI 命令?我发现在将 JSON 作为参数传递时很难获得所有正确的转义。因此,您基本上可以按照 AWS 文档中显示的示例进行操作:
https://docs.aws.amazon.com/cli/latest/reference/sqs/set-queue-attributes.html#examples
- 所以首先您要创建一个名为 "set-queue-attributes.json" 的新文件,如下所示:
{
"DelaySeconds": "10",
"MaximumMessageSize": "131072",
"MessageRetentionPeriod": "259200",
"ReceiveMessageWaitTimeSeconds": "20",
"RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:80398EXAMPLE:MyDeadLetterQueue\",\"maxReceiveCount\":\"1000\"}",
"VisibilityTimeout": "60"
}
- 然后运行这样的命令:
aws sqs set-queue-attributes --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyNewQueue --attributes file://set-queue-attributes.json --region=us-east-1
如果你想 运行 在同一个命令中,你可以使用这个例子:
aws sqs set-queue-attributes \
--queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyNewQueue \
--attributes '{
"RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:80398EXAMPLE:MyDeadLetterQueue\",\"maxReceiveCount\":\"1000\"}",
"MessageRetentionPeriod": "259200",
"VisibilityTimeout": "90"
}'