¿Cómo acceder al contenedor Azure WASB basado en el token SAS en Java?

Estoy tratando de usar una clave SAS para recuperar un contenedor de Azure WASB en código Java. Esto se está haciendo en el código HDFS, pero por alguna razón parece que no puedo hacer que funcione. He logrado simplificarlo a la aplicación a continuación, que tampoco funciona. Creo que es un problema con la forma en que estamos generando el token SAS o los permisos en la cuenta de Azure. ¿Alguien puede mirar esto y señalarme en la dirección correcta cuál podría ser el problema? ¡Gracias!

public static void main(String[] arguments)
{
    try {
        String storage_account = "wasbvalidation";
        String container = "demoengagement1";
        CloudBlobClient blobClient = getBlobClient(storage_account);

        CloudBlobContainer blobContainer = blobClient.getContainerReference(container);

        blobContainer.downloadAttributes(); // This call succeeds

        SharedAccessBlobPolicy policy = new SharedAccessBlobPolicy();
        policy.setPermissions(EnumSet.allOf(SharedAccessBlobPermissions.class));
        policy.setSharedAccessStartTime(Date.valueOf(LocalDate.now().minusYears(2)));
        policy.setSharedAccessExpiryTime(Date.valueOf(LocalDate.now().plusYears(2)));

        String sas = blobContainer.getUri().toString() + "?" + blobContainer.generateSharedAccessSignature(policy, null, null, SharedAccessProtocols.HTTPS_ONLY);

        // Code after this point is emulating what HDFS is doing, so I'd rather not change it.
        URI blobUri = new URI(blobContainer.getUri().toString());
        StorageCredentials credentials = new StorageCredentialsSharedAccessSignature(sas);
        CloudBlobContainer sasContainer = new CloudBlobContainer(blobUri, credentials);
        sasContainer.downloadAttributes(); // This call fails, however.
    } catch (Exception e) {
        e.printStackTrace();
    }
}

private static CloudBlobClient getBlobClient(String storageAccount) throws NullPointerException {
    String storageConnectionString = "DefaultEndpointsProtocol=https;" + "AccountName=" + storageAccount + ";" + "AccountKey=" + accountKey;
    CloudStorageAccount csa = null;
    try {
        csa = CloudStorageAccount.parse(storageConnectionString);
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    CloudBlobClient blobClient = csa.createCloudBlobClient();
    return blobClient;
}
Respuesta 1

Estoy usando Eclipse para administrar pocos archivos Java dentro de un gran proyecto. Quiero filtrar todos los archivos innecesarios (carpeta de proyecto -> propiedades -> recurso -> filtros de recursos) para optimizar mi configuración (Eclipse ...

Recientemente actualicé el arranque de primavera a la versión 2.0.3 y algunas plantillas comenzaron a fallar. Obtuve este error: Se produjo un error durante el análisis de la plantilla (plantilla: "recurso de ruta de clase [plantillas / mypage ...

Lo que uso: RichFaces versión v.4.1.0.Final Mojarra 2.0.3 edit: instalé mojarra 2.1.11 Entonces, me enfrento a 2 problemas. 1 - Voy por flash, un objeto para verlo en la siguiente vista. El problema es ...

Actualmente estoy haciendo mi primer año de estudios, y hasta ahora he estado usando BlueJ para probar mi código en la unidad, que ha funcionado bien. Pero ahora necesito tener clases de prueba abstracta e interfaces, así que ...