no, stai aggiungendo stile che non serve (display: block insieme ad un float:left non ha senso di per sé, ancora meno se dato ad un elemento il cui parent è un flexbox) e soprattutto, se rimuovi uno dei due blocchi rossi l'altro si allarga (quando invece dovrebbe restare fermo a 270px)
http://codepen.io/anon/pen/wGJbqQ
codice HTML:
<section>
<div>DIV</div>
<main>MAIN</main>
<div>DIV</div>
</section>
Css
codice:
section { display: flex;}
div, main { height: 300px; border: 1px #ccc dashed;}
div { width: 270px; }
main { flex-grow: 1; }
/* il margine va impostato in base alla presenza dei div prima o dopo il main */
main + div, div + main { margin-left: 10px; }