diff --git a/CHANGELOG.md b/CHANGELOG.md index e1f2d93..afeeea2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### Updates * Updated the BrokerProtocol type for Kafka Extension. +* Add check for all connection env variables to configure managed identity ### Breaking changes * to be update diff --git a/azure-functions-java-sdktypes/src/main/java/com/microsoft/azure/functions/sdktype/blob/BlobClientHydrator.java b/azure-functions-java-sdktypes/src/main/java/com/microsoft/azure/functions/sdktype/blob/BlobClientHydrator.java index d88e67e..23d251a 100644 --- a/azure-functions-java-sdktypes/src/main/java/com/microsoft/azure/functions/sdktype/blob/BlobClientHydrator.java +++ b/azure-functions-java-sdktypes/src/main/java/com/microsoft/azure/functions/sdktype/blob/BlobClientHydrator.java @@ -25,7 +25,7 @@ public Object createInstance(BlobClientMetaData metaData) throws Exception { String envVar = metaData.getConnectionEnvVar(); String configValue = System.getenv(envVar); - if (configValue == null || configValue.isEmpty()) { + if (!environmentVariablesArePresent(envVar)) { throw new SdkHydrationException("No environment variable set for: " + envVar); } @@ -35,7 +35,7 @@ public Object createInstance(BlobClientMetaData metaData) throws Exception { Object blobBuilder = blobBuilderClass.getDeclaredConstructor().newInstance(); // Step 2: If configValue is a connection string, do the existing approach - if (isConnectionString(configValue)) { + if (configValue != null && isConnectionString(configValue)) { LOGGER.info("Detected connection string usage from: " + envVar); Method conn = blobBuilderClass.getMethod("connectionString", String.class); @@ -87,6 +87,24 @@ public Object createInstance(BlobClientMetaData metaData) throws Exception { return blobClient; } + private boolean environmentVariablesArePresent(String envVar){ + final String configValue = System.getenv(envVar); + final String accountName = System.getenv(envVar + "__accountName"); + final String blobServiceUri = System.getenv(envVar + "__blobServiceUri"); + final String serviceUri = System.getenv(envVar + "__serviceUri"); + + if(configValue != null && !configValue.isEmpty()){ + return true; + } + if( (accountName != null && !accountName.isEmpty()) || + (blobServiceUri != null && !blobServiceUri.isEmpty()) || + (serviceUri != null && !serviceUri.isEmpty()) + ){ + return true; + } + return false; + } + /** * Decide if configValue is likely a connection string by checking for well-known keywords. */