Azure / Azurite

A lightweight server clone of Azure Storage that simulates most of the commands supported by it with minimal dependencies
MIT License
1.83k stars 325 forks source link

Copying blobs via SAS URL from Azure to Azurite is not implemented #1320

Open AccessViolator opened 2 years ago

AccessViolator commented 2 years ago

Which service(blob, file, queue, table) does this issue concern?

blob

Which version of the Azurite was used?

3.14.1

Where do you get Azurite? (npm, DockerHub, NuGet, Visual Studio Code Extension)

VS2022

What's the Node.js version?

14.17.6

What problem was encountered?

I was trying to copy blobs from an Azure account to Azure Storage Emulator using SAS URL and it doesn't work while it works when doing so from one Azure account to another. I switched from emulator to Azurite but it didn't help. I wasted a lot of time before I figured out that it's just not implemented.

Steps to reproduce the issue?

in debug.log:

error: BlobHandler:startCopyFromURL() Source account %REDUCTED% is not on the same Azurite instance as target account devstoreaccount1

The reducted URL above was to an Azure account which when pasted to a browser successfully downloads the file.

Have you found a mitigation/solution?

blueww commented 2 years ago

@AccessViolator Currently Azurite only supports copy within same Azurite instance. You can find the detail in follow doc: https://github.com/Azure/Azurite#support-matrix

If you would like to test cross account copy, you can config 2 storage account inside one Azurite instance, see detail in: https://github.com/Azure/Azurite#customized-storage-accounts--keys

blueww commented 2 years ago

@AccessViolator Look more into the log, and compare it with my success send blob properties log, I find this might comes from your request has following 3 more headers than mine. Could you share why the 3 headers are added, like why set content-type to empty?

"accept":"application/xml", "accept-charset":"UTF-8", "content-type":"",

I still need to see what kind of StringToSign the client generated to know what's the issue. Could you share which Azure Storage SDK you use to send the request? I would like to view the SDK code to know more about it.

AccessViolator commented 2 years ago

@blueww, if you search Azurite's source code by "is not on the same Azurite instance as target account" you'll see where the problem comes from - it's just not implemented.

blueww commented 2 years ago

@AccessViolator Sorry I just paste message in the wrong issue. Yes, agree with you it's just not implemented. And it's not supported already documented in https://github.com/Azure/Azurite#support-matrix

kuba-lilz commented 2 years ago

Is this issue included in milestones for any upcoming releases? We're hitting this limitation in our development

blueww commented 2 years ago

@kuba-lilz We still don't have an accurate date for this feature yet.

Azurite welcome contribution. It would be great if you can raise a PR to implement it!