A11Y: Be careful when marking up links with the button role. Buttons are expected to be triggered using the Space key, while links are expected to be triggered through the Enter key. In other words, when links are used to behave like buttons, adding role="button" alone is not sufficient. It will also be necessary to add a key event handler that listens for the Space key in order to be consistent with native buttons.
Download actions can be implemented as links since downloads are considered destinations. Be sure to use the download
attribute to "augment the inherent functionality of the link retrieving data. It side steps the attempt to render the file in the browser and instead says, “You know what? I’m just going to save this for later...". A link's inherit behavior lets users open in a new tab, copy the address or bookmark the link.
More details about the download
attribute: https://css-tricks.com/building-good-download-button/
From Eric Baily: I think a link styled like a button is fine, no aria needed.