Ok, the code below seems to work. Any tips for improvement are welcome!
With[{epsilon = .1},
s1 = ImplicitRegion[x^2 + y^2 <= 1 + epsilon, {x, y}];
s2 = ImplicitRegion[x^2 + y^2 >= 1 - epsilon, {x, y}];
s = RegionIntersection[s1, s2]];
washerSolid =
DiscretizeRegion[
RegionProduct[DiscretizeRegion[s],
MeshRegion[{{0}, {1}}, Line[{1, 2}]]]]
washerBoundary = BoundaryMesh[washerSolid]
washer = Graphics3D[
GraphicsComplex[MeshCoordinates[washerBoundary],
MeshCells[washerBoundary, 2]]]
Export["washer.stl", washer]