According to the Azure docs [1], metadata names must adhere to the
naming conventions for C# identifiers, which must not contain any
embedded space or symbol such as ? - + ! @ # % ^ & * ( ) [ ] { } . ; :
" ' / and \. However, an underscore ( _ ) can be used.I. [1] https://docs.microsoft.com/es-es/rest/api/storageservices/List-Containers2?redirectedfrom=MSDN On 18 January 2018 at 11:52, Arunagiri Rajasekaran <[email protected]> wrote: > Hi, > > I am trying to run a sample putBlob() operation against Azure but it fails > with the below exception. > > org.jclouds.azure.storage.AzureStorageResponseException: command > [method=org.jclouds.azureblob.AzureBlobClient.public abstract > java.lang.String > org.jclouds.azureblob.AzureBlobClient.putBlockList(java.lang.String,org.jclouds.azureblob.domain.AzureBlob,java.util.List)[arun11thjanmeta, > [properties=[name=CDIR/3026745892893961993/0, container=arun11thjanmeta, > url=null, contentMetadata=[cacheControl=null, contentDisposition=null, > contentEncoding=null, contentLanguage=null, contentLength=114688, > contentMD5=null, contentType=application/unknown, expires=null], eTag=null, > lastModified=null, leaseStatus=Unlocked, > metadata={ics.etagintegrity.status=disabled, > ics.meta-digest=c3445004415ff10e8d136251ed58b7ae, ics.meta-version=1, > ics.simpleencryption.status=disabled, > ics.stack-description=ICStore.1(SimpleEncryption.1(EtagIntegrity.1(BlobStoreConnection.1)))}, > type=BlockBlob]], [AAAAAQ==]], request=PUT > https://azuretct.blob.core.windows.net/arun11thjanmeta/CDIR/3026745892893961993/0?comp=blocklist > HTTP/1.1] failed with code 400, error: > AzureError{requestId='37bf9ad5-001e-00f7-6dc0-8fc20f000000', > code='InvalidMetadata', message='The metadata specified is invalid. It has > characters that are not permitted. > RequestId:37bf9ad5-001e-00f7-6dc0-8fc20f000000 > Time:2018-01-17T18:22:22.3764038Z' > at > org.jclouds.azure.storage.handlers.ParseAzureStorageErrorFromXmlContent.handleError(ParseAzureStorageErrorFromXmlContent.java:71) > ~[azureblob-2.0.3.jar:2.0.3] > at > org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:65) > ~[jclouds-core-2.0.3.jar:2.0.3] > at > org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:140) > ~[jclouds-core-2.0.3.jar:2.0.3] > at > org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:109) > ~[jclouds-core-2.0.3.jar:2.0.3] > at > org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:90) > ~[jclouds-core-2.0.3.jar:2.0.3] > at > org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:73) > ~[jclouds-core-2.0.3.jar:2.0.3] > at > org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:44) > ~[jclouds-core-2.0.3.jar:2.0.3] > at > org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:156) > ~[jclouds-core-2.0.3.jar:2.0.3] > at > org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:123) > ~[jclouds-core-2.0.3.jar:2.0.3] > at com.sun.proxy.$Proxy52.putBlockList(Unknown Source) > ~[na:1.8.0-internal] > at > org.jclouds.azureblob.blobstore.AzureBlobStore.completeMultipartUpload(AzureBlobStore.java:431) > ~[azureblob-2.0.3.jar:2.0.3] > at > org.jclouds.blobstore.internal.BaseBlobStore.putMultipartBlob(BaseBlobStore.java:368) > ~[jclouds-blobstore-2.0.3.jar:2.0.3] > at > org.jclouds.blobstore.internal.BaseBlobStore.putMultipartBlob(BaseBlobStore.java:347) > ~[jclouds-blobstore-2.0.3.jar:2.0.3] > at > org.jclouds.azureblob.blobstore.AzureBlobStore.putBlob(AzureBlobStore.java:235) > ~[azureblob-2.0.3.jar:2.0.3] > > We add the highlighted meta-data to the blob before pushing it to the cloud > which causes this particular exception to be thrown. > > The same meta-data works for other providers like S3, Openstack-Swift etc.. > > Wondering on what could the problem with the above meta-data for Azure? > Could some one throw some light on this issue? > > Thanks, > Arunagiri > > > > >
