事象としては、az bicep install error #25471 となりますが、Bicep を使用するために「az bicep install」を実行すると、ネットワーク環境によっては次のようなエラーが発生することがあります。
Error while attempting to retrieve the latest Bicep version: HTTPSConnectionPool(host=’aka.ms’, port=443): Max retries exceeded with url: /BicepLatestRelease (Caused by SSLError(SSLCertVerificationError(1, ‘[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1006)’))).
Bicep のインストールを実施する際には、最新の情報を「https://aka.ms/BicepLatestRelease」から取得しているのですが、プロキシなどが入っている環境ではこの情報を取得する際にエラーが発生するようです。
解決の方法としては、次の情報に記載されている内容となるようです。
- Azure CLI と Python を使用して Azure Stack Edge Pro GPU デバイスに VM をデプロイする
- Azure CLI を正しく使用するためのヒント
- Fixing certificate errors while working behind Firewall
今回の環境であれば、環境変数として「AZURE_CLI_DISABLE_CONNECTION_VERIFICATION = 1」を設定することでエラーを回避することができました。
環境変数の設定については https://github.com/Azure/azure-cli/blob/bb30f28efad520b36342ece7689b3980854a158a/src/azure-cli-core/azure/cli/core/util.py#L675 / 要求の送信については https://github.com/Azure/azure-cli/blob/bb30f28efad520b36342ece7689b3980854a158a/src/azure-cli/azure/cli/command_modules/resource/_bicep.py#L200 で確認することができます。
要求の送信については、requests を使用しており、【Python】【requests】プロキシ環境下でSSLErrorになる原因と対処法 の記事が参考となります。
環境変数に 「AZURE_CLI_DISABLE_CONNECTION_VERIFICATION = 1」 を設定した場合、「requests.get」を実行した際の「verify」が「False」となり証明書の検証が行われなくなっていました。