Azure Functions (Java)をローカル実行したときに認証付きProxyを経由させる


  • local.settings.jsonファイルにProxy関連情報を追加します(local.settings.jsonは.gitignoreに記載すること)
local.settings.json
{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "AzureWebJobsDashboard": "",
    "FUNCTIONS_WORKER_RUNTIME": "java",
    "proxyHost": "Your Proxy Host",
    "proxyPort": "Your Proxy Port",
    "proxyUser": "Your Proxy Username",
    "ProxyPass": "Your Proxy User Password"
  }
}
  • Functionsでは以下のように記述します
String proxyHost = System.getenv("proxyHost");
String proxyPort = System.getenv("proxyPort");
String proxyUser = System.getenv("proxyUser");
String proxyPass = System.getenv("proxyPass");

if (!StringUtils.isEmpty(proxyHost) && !StringUtils.isEmpty(proxyPort)) {
    System.setProperty("proxyHost", proxyHost);
    System.setProperty("proxyPort", proxyPort);
    if (!StringUtils.isEmpty(proxyUser) && !StringUtils.isEmpty(proxyPass)) {
        Authenticator.setDefault(new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(proxyUser, proxyPass.toCharArray());
            }
        });
    }
}
  • mvn testする場合は、local.settings.jsonを読み込まないので環境変数の設定が必要
> set proxyHost="Your Proxy Host"
> set proxyPort="Your Proxy Port"
> set proxyUser="Your Proxy Username"
> set ProxyPass="Your Proxy User Password"
> mvn test
  • mvn packageでテストをスキップする方法
> mvn clean package -Dmaven.test.skip=true
  • ローカル実行とAzureへのデプロイ
> mvn azure-functions:run
> az login
> mvn azure-functions:deploy