Place onion in a large skillet and drizzle with canola oil. Season with salt and pepper. Cook over low heat, stirring occasionally, until onions are very soft but not browned, 20 to 25 minutes. Transfer onions to a bowl to cool.
Bring a large pot of salted water to a boil. Add green beans and cook until tender yet crisp, about 5 minutes. Pour into a colander and rinse under cold running water. Drain well and pat dry with paper towels.
In a large bowl, whisk together vinegar and soy sauce. Whisk in olive oil and season with salt and pepper. Add onions and beans and toss well. Season with additional salt and pepper. Serve at room temperature.