Maybe contextily could work if you just need some shaded relief. What sort of scale are you plotting at, and what kind of data are you trying to overlay on top of the elevation map, are they points, lines or polygons?
If you need proper DEMs and aren’t tied to Cartopy, I can also recommend PyGMT which has a pygmt.datasets.load_earth_relief function that downloads the SRTM15+V2.6 grid for a region of interest (see examples here). That function will return an xarray.DataArray that can then be plotted with grdimage. Happy to show some example code if you provide a bounding box region (min/max longitude/latitude coordinates).