我正在将消息发送到Flask应用程序内的SQS队列。 我正在使用https://github.com/vsouza/docker-SQS-local在本地模拟此SQS功能。
我正在为函数内部的boto3.client()
设置凭据。
当我运行直接在Pycharm中发送消息的功能时,它会将消息发送到SQS队列。
但是当我对这个Flask应用程序进行docker化并调用触发该功能的端点时,它会抛出错误。
提高NoCredentialsError botocore.exceptions.NoCredentialsError: 无法找到凭据
这是发送消息的代码。
def send_mes():
config = Config()
sqs = boto3.client('sqs', aws_access_key_id=None, aws_secret_access_key=None,
endpoint_url=config.QUEUE_ENDPOINT_URL, region_name='default')
feeder_queue = config.FEEDER_QUEUE
def inside_fun():
while True:
resp = sqs.send_message(
QueueUrl=feeder_queue,
MessageBody=(
f'Sample message for Queue at {datetime.now()}.'
)
)
print(resp)
time.sleep(3)
t1 = threading.Thread(target=inside_fun)
t2 = threading.Thread(target=inside_fun)
t1.start()
t2.start()
t1.join()
t2.join()
if __name__ == '__main__':
send_mes()
请指出我在哪里犯错了?
答案 0 :(得分:0)
我设置环境变量并使其起作用,而不是直接在代码中将AWS凭证直接传递给客户端。