Send Data from DynamoDB to Lambda (C#) and to Azure Queue
If the connection and queue name are not changing per record then there is no reason to be creating a new client for each record in the loop. Especially for the amount of times stated in the original post.

Move that to the constructor of the class.

public class Function {
    private static readonly JsonSerializer _jsonSerializer = new JsonSerializer();
    private readonly IQueueClient client;
    private const string connectionString = "QUEUE END POINT";
    private const string queueName = "QUEUE NAME";

    public Function() {            
        ServiceBusConnectionStringBuilder builder = new ServiceBusConnectionStringBuilder(connectionString);
        ServiceBusConnection connection = new ServiceBusConnection(builder);
        client = new QueueClient(connection, queueName, ReceiveMode.PeekLock, RetryPolicy.Default);
    }

    public async Task FunctionHandler(DynamoDBEvent dynamoEvent, ILambdaContext context) {
        var logger = context.Logger;
        logger.LogLine($"Beginning to process {dynamoEvent.Records.Count} records...");

        foreach (var record in dynamoEvent.Records) {
            logger.LogLine($"Event ID: {record.EventID}");
            logger.LogLine($"Event Name: {record.EventName}");

            string streamRecordJson = SerializeStreamRecord(record.Dynamodb);
            await SendAsync(streamRecordJson);

            logger.LogLine($"DynamoDB Record:");
            logger.LogLine(streamRecordJson);
        }

        context.Logger.LogLine("Stream processing complete.");
    }

    private Task SendAsync(string body) {
        var message = new Message(Encoding.UTF8.GetBytes(body));
        return client.SendAsync(message);
    }

    private string SerializeStreamRecord(StreamRecord streamRecord) {
        using (var writer = new StringWriter()) {
            _jsonSerializer.Serialize(writer, streamRecord);
            return writer.ToString();
        }
    }
}