我在github中有一个从sqs队列获取消息的步骤。响应是一个带有消息数组的对象。receive_message_sqs但是我尝试从数组中的对象获取ReceivtHandle,但我一直遇到这个错误。
下面是接收消息的步骤
- name: Receive Message from SQS Queue
id: receive_message
run: |
RESPONSE=$(aws sqs receive-message --queue-url https://sqs.us-east-1.amazonaws.com/my-queue.fifo \
--attribute-names All \
--message-attribute-names All --max-number-of-messages 10 --output json)
echo "::set-output name=receipt_handle::$RESPONSE"
下面是使用上一步中的Response的下一步。我想从RESPONSE中提取receipt_handle并将其放入一个变量中,然后检查它是否工作。我需要数组中的第一个对象
- name: Check ReceiptHandle
id: check_receipt_handle
run: |
RECEIPT_HANDLE=$(echo "${{ steps.receive_message.outputs.receipt_handle }}" | jq -r '.Messages[0].ReceiptHandle')
if [ -z "$RECEIPT_HANDLE" ]; then
echo "ReceiptHandle is empty. Failing the workflow."
exit 1
else
echo "ReceiptHandle: $RECEIPT_HANDLE"
fi
echo "::set-output name=receipt_handle::$RECEIPT_HANDLE"
下面是对象外观的屏幕截图
这是我在检查ReceivtHandle步骤时返回的错误。看起来像是和json解析有关的东西。
有办法解决吗?
1条答案
按热度按时间t2a7ltrp1#
@Azeem的评论解决了我的问题。
我相信有些读者可能会忽略这条评论,我把它贴在这里。请一定要投赞成票@Azeem的意见,为有用的解决方案!