[ 
https://issues.apache.org/jira/browse/JCLOUDS-1557?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17945673#comment-17945673
 ] 

Xavier BOURGOUIN edited comment on JCLOUDS-1557 at 4/18/25 1:32 PM:
--------------------------------------------------------------------

Hi [~gaul], [~davidsloan],

That's probably a long shot for me 5+ years after this ticket is closed but is 
there some example somewhere of what would be a working set of 
jclouds.properties to use it with Azurite ? 

I have an Azurite deployed locally in the most natural fashion, ie:

{code:bash}
docker run -d --rm \
  --name azurite \
  -p 10000:10000 \
  -v azurite-data:/data \
  mcr.microsoft.com/azure-storage/azurite:latest
{code}

And somehow I can't manage to find the correct jclouds.properties for it to 
work with, it keeps getting HTTP 403 from Azurite: 

{code:java}
Caused by: org.jclouds.azure.storage.AzureStorageResponseException: command 
[method=org.jclouds.azureblob.AzureBlobClient.public abstract 
org.jclouds.azureblob.domain.ListBlobsResponse 
org.jclouds.azureblob.AzureBlobClient.listBlobs(java.lang.String,org.jclouds.azureblob.options.ListBlobsOptions[])[foo,
 [Lorg.jclouds.azureblob.options.ListBlobsOptions;@165fb67c], request=GET 
http://127.0.0.1:10000/devstoreaccount1/foo?restype=container&comp=list 
HTTP/1.1] failed with code 403, error: 
AzureError{requestId='6f53a5cf-b3af-4ec7-a298-525f42d7dd86', 
code='AuthorizationFailure', message='Server failed to authenticate the 
request. Make sure the value of the Authorization header is formed correctly 
including the signature.
{code}

Here's the jclouds.properties I have right now (the ones commented out are the 
other combinations I tried already but without any luck..): 

{code:java}
jclouds.provider = azureblob
jclouds.endpoint=http://127.0.0.1:10000/devstoreaccount1
#jclouds.endpoint=http://127.0.0.1:10000

jclouds.azureblob.account=devstoreaccount1
jclouds.azureblob.credential=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==

#jclouds.azureblob.virtual-host-buckets=false
#jclouds.azureblob.auth=azureKey
#jclouds.azureblob.identity=devstoreaccount1
#jclouds.identity=devstoreaccount1
#jclouds.credential=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==
{code}

Any clue what I'm missing ?

Aside from the official doc (https://jclouds.apache.org/guides/azure-storage/) 
which doesn't really mention the Azurite case, I haven't found much other 
resources to help myself ... 

Thanks!








was (Author: xbourgouin):
Hi [~gaul], [~davidsloan],

That's probably a long shot for me 5+ years after this ticket is closed but is 
there some example somewhere of what would be a working set of 
jclouds.properties to use it with Azurite ? 

I have an Azurite deployed locally in the most natural fashion, ie:

{code:bash}
docker run -d --rm \
  --name azurite \
  -p 10000:10000 \
  -v azurite-data:/data \
  mcr.microsoft.com/azure-storage/azurite:latest
{code}

And somehow I can't manage to find the correct jclouds.properties for it to 
work with, it keeps getting HTTP 403 from Azurite: 

{code:java}
Caused by: org.jclouds.azure.storage.AzureStorageResponseException: command 
[method=org.jclouds.azureblob.AzureBlobClient.public abstract 
org.jclouds.azureblob.domain.ListBlobsResponse 
org.jclouds.azureblob.AzureBlobClient.listBlobs(java.lang.String,org.jclouds.azureblob.options.ListBlobsOptions[])[other,
 [Lorg.jclouds.azureblob.options.ListBlobsOptions;@165fb67c], request=GET 
http://127.0.0.1:10000/devstoreaccount1/other?restype=container&comp=list 
HTTP/1.1] failed with code 403, error: 
AzureError{requestId='6f53a5cf-b3af-4ec7-a298-525f42d7dd86', 
code='AuthorizationFailure', message='Server failed to authenticate the 
request. Make sure the value of the Authorization header is formed correctly 
including the signature.
{code}

Here's the jclouds.properties I have right now (the ones commented out are the 
other combinations I tried already but without any luck..): 

{code:java}
jclouds.provider = azureblob
jclouds.endpoint=http://127.0.0.1:10000/devstoreaccount1
#jclouds.endpoint=http://127.0.0.1:10000

jclouds.azureblob.account=devstoreaccount1
jclouds.azureblob.credential=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==

#jclouds.azureblob.virtual-host-buckets=false
#jclouds.azureblob.auth=azureKey
#jclouds.azureblob.identity=devstoreaccount1
#jclouds.identity=devstoreaccount1
#jclouds.credential=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==
{code}

Any clue what I'm missing ?

Aside from the official doc (https://jclouds.apache.org/guides/azure-storage/) 
which doesn't really mention the Azurite case, I haven't found much other 
resources to help myself ... 

Thanks!







> Azure Blob Storage: Support for Local Endpoints (eg Azurite)
> ------------------------------------------------------------
>
>                 Key: JCLOUDS-1557
>                 URL: https://issues.apache.org/jira/browse/JCLOUDS-1557
>             Project: jclouds
>          Issue Type: Improvement
>          Components: jclouds-blobstore
>            Reporter: Dave Sloan
>            Assignee: Andrew Gaul
>            Priority: Major
>              Labels: azureblob
>             Fix For: 2.3.0
>
>          Time Spent: 2h 40m
>  Remaining Estimate: 0h
>
> Azurite provides a local Azure-compatible endpoint for purposes of testing 
> without requiring network traffic or incurring costs on Azure.
> Currently while it is possible to define a custom endpoint this is not 
> respected.
> In both
> [https://github.com/apache/jclouds/blob/ba1504b38e725c45db304767ac76b2be4b71fd0d/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobRequestSigner.java#L66]
> [https://github.com/apache/jclouds/blob/ca5190636a5fc1ffe48d0d6b8087ad160c0b7d80/providers/azureblob/src/main/java/org/jclouds/azure/storage/filters/SharedKeyLiteAuthentication.java#L95]
>  
> The `storageUrl` is hard-coded to the Azure location
> {code:java}
> this.storageUrl = URI.create("https://"; + creds.get().identity + 
> ".blob.core.windows.net/");
> {code}
>  
> This should be made to respect a custom endpoint if configured, e.g.
>  
> {code:java}
> BlobStoreContext context = ContextBuilder.newBuilder("azureblob")
>                  .credentials(storageAccountName, storageAccountKey)
>                  .endpoint("http://localhost:10000";)
>                  .buildView(BlobStoreContext.class);
> {code}
> In addition, similar to the AWS S3 connector (`enableVirtualHostBuckets`), a 
> configurable property should be provided to change the format of the URLs 
> used by Azure to include the storage account name in the path.
>  
>  
> *Azure endpoint URL format (storage account in hostname)*
> [https://devstoreaccount1.blob.core.windows.net/]
>  
> *Azurite endpoint URL format (**storage account*  *in path)*
> [http://localhost:10000/devstoreaccount1/]
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to