据我所知,我们可以从一个函数应用程序中的函数获取存储在应用程序设置中的环境变量但我们无法从其他函数应用程序获取它。所以如果你想从其他函数应用中获取一些键值对,我建议你使用Azure key vault来存储键值对。
1. Create 一个 azure 密钥保管库和 add a secret 到密钥保管库(秘密是您存储在应用程序设置中的环境变量)。
在上面的屏幕截图中,我生成了一个以“testkey”为密钥、以“testvalue”为值的密钥。
2.编辑你的java代码如下:
import com.microsoft.azure.AzureEnvironment;
import com.microsoft.azure.keyvault.KeyVaultClient;
import com.microsoft.azure.keyvault.models.SecretBundle;
import com.microsoft.azure.credentials.AppServiceMSICredentials;
AppServiceMSICredentials credentials = new AppServiceMSICredentials(AzureEnvironment.AZURE);
KeyVaultClient keyVaultClient = new KeyVaultClient(credentials);
SecretBundle secret = keyVaultClient.getSecret("https://xxxxx.vault.azure.net/", "testkey");
return request.createResponseBuilder(HttpStatus.OK).body("Hello, " + secret.value()).build();
https://xxxxx.vault.azure.net/ 是您的密钥保管库的 URL,您可以在 azure 门户的密钥保管库的“概述”选项卡中找到它。
我们还需要在你的函数项目的pom.xml中添加依赖。
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-client-authentication</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-keyvault</artifactId>
<version>1.2.4</version>
</dependency>
3. 将您的函数从本地部署到 azure,然后在 azure 门户上启用您的函数的 MSI。
4. 授予您的函数应用访问密钥保管库的权限,您可以参考此tutorial。
5.之后,在azure portal上运行函数,我们可以得到key("testkey")的值。
您也可以通过上述步骤在其他功能中获取密钥库。