You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用boto3调用SQS SendMessage时遇QueueUrl无效错误求助

问题描述

尝试从SQS队列获取URL,区域为us-east-1,使用传统格式端点https://queue.amazonaws.com/XXXXXXXXXXXX/MyMessages,但调用send_message时触发InvalidAddress错误,提示传入的地址对当前端点无效。

代码示例

import json
import boto3

from datetime import datetime


def lambda_handler(event, context):

    now = datetime.now()
    current_time = now.strftime("%H:%M:%S %p")

    sqs = boto3.client('sqs', region_name="us-east-1")
    # 获取队列URL
    queueurl = sqs.get_queue_url(QueueName='MyMessages')
    print(queueurl)
    
    for x in range(5):
        sqs.send_message(
            QueueUrl=str(queueurl),
            MessageBody=current_time
        )
    return {
        'statusCode': 200,
        'body': json.dumps(current_time)
    }

错误信息

Test Event Name
sendMessage

Response
{
  "errorMessage": "An error occurred (InvalidAddress) when calling the SendMessage operation: The address {'QueueUrl': 'https://queue.amazonaws.com/XXXXXXXXXXXX/MyMessages', 'ResponseMetadata': {'RequestId': '10fea792-29fa-5484-9bc0-fbb6ad9320b7', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '10fea792-29fa-5484-9bc0-fbb6ad9320b7', 'date': 'Tue, 27 Dec 2022 05:27:05 GMT', 'content-type': 'text/xml', 'content-length': '322'}, 'RetryAttempts': 0}} is not valid for this endpoint.",
  "errorType": "ClientError",
  "requestId": "ba1f3c72-6180-4308-ad12-0bc6b02c3793",
  "stackTrace": [
    "  File \"/var/task/lambda_function.py\", line 18, in lambda_handler\n    sqs.send_message(\n",
    "  File \"/var/runtime/botocore/client.py\", line 391, in _api_call\n    return self._make_api_call(operation_name, kwargs)\n",
    "  File \"/var/runtime/botocore/client.py\", line 719, in _make_api_call\n    raise error_class(parsed_response, operation_name)\n"
  ]
}

Function Logs
START RequestId: ba1f3c72-6180-4308-ad12-0bc6b02c3793 Version: $LATEST
{'QueueUrl': 'https://queue.amazonaws.com/XXXXXXXXXXXX/MyMessages', 'ResponseMetadata': {'RequestId': '10fea792-29fa-5484-9bc0-fbb6ad9320b7', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '10fea792-29fa-5484-9bc0-fbb6ad9320b7', 'date': 'Tue, 27 Dec 2022 05:27:05 GMT', 'content-type': 'text/xml', 'content-length': '322'}, 'RetryAttempts': 0}}
[ERROR] ClientError: An error occurred (InvalidAddress) when calling the SendMessage operation: The address {'QueueUrl': 'https://queue.amazonaws.com/XXXXXXXXXXXX/MyMessages', 'ResponseMetadata': {'RequestId': '10fea792-29fa-5484-9bc0-fbb6ad9320b7', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '10fea792-29fa-5484-9bc0-fbb6ad9320b7', 'date': 'Tue, 27 Dec 2022 05:27:05 GMT', 'content-type': 'text/xml', 'content-length': '322'}, 'RetryAttempts': 0}} is not valid for this endpoint.
Traceback (most recent call last):
  File "/var/task/lambda_function.py", line 18, in lambda_handler
    sqs.send_message(
  File "/var/runtime/botocore/client.py", line 391, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/var/runtime/botocore/client.py", line 719, in _make_api_call
    raise error_class(parsed_response, operation_name)END RequestId: ba1f3c72-6180-4308-ad12-0bc6b02c3793
REPORT RequestId: ba1f3c72-6180-4308-ad12-0bc6b02c3793  Duration: 1108.64 ms    Billed Duration: 1109 ms    Memory Size: 128 MB Max Memory Used: 65 MB  Init Duration: 275.81 ms
解决方案

问题核心是get_queue_url的返回值处理错误:sqs.get_queue_url()返回的是包含QueueUrl字段和ResponseMetadata的字典,你直接将整个字典转为字符串传给send_message的QueueUrl参数,导致传递的不是有效URL字符串,而是字典的字符串形式,从而触发InvalidAddress错误。

修正代码只需从返回字典中提取QueueUrl字段的值:

import json
import boto3

from datetime import datetime


def lambda_handler(event, context):

    now = datetime.now()
    current_time = now.strftime("%H:%M:%S %p")

    sqs = boto3.client('sqs', region_name="us-east-1")
    # 从返回字典中提取实际队列URL
    queue_response = sqs.get_queue_url(QueueName='MyMessages')
    queue_url = queue_response['QueueUrl']
    print(queue_url)
    
    for x in range(5):
        sqs.send_message(
            QueueUrl=queue_url,
            MessageBody=current_time
        )
    return {
        'statusCode': 200,
        'body': json.dumps(current_time)
    }

修正后,传递给send_message的是正确的队列URL字符串,错误即可解决。

内容的提问来源于stack exchange,提问作者Sri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 14:00:36