久しぶりに、Azure Pipelinesを利用して、Dockerコンテナを利用したPythonアプリケーションをContainer Registryに自動反映しようとしたところ、Azure Pipelinesによるビルド実行時に、「unauthorized: Invalid clientid or client secret.」というエラーが発生してしまった。
今回は、「unauthorized: Invalid clientid or client secret.」というエラーを解決してみたので、その手順を共有する。
前提条件
下記サイトの手順に従って、Azure Functions上で動作するDockerコンテナを利用したPythonアプリケーションをContainer Registryに配置するPipelineを作成済であること。

やってみたこと
エラー発生の確認
Azure DevOps上のAzure Reposに修正したソースコードを配置すると、作成済のAzure Pipelinesにより、Dockerコンテナを利用したPythonアプリケーションをContainer Registryに自動反映できるはずだが、Azure Pipelinesによるビルド実行時に、「unauthorized: Invalid clientid or client secret.」というエラーが発生してしまった。その手順は、以下の通り。
1) Azure DevOps上のAzure Reposに配置するソースコード(README.md)を修正する。

2)「git add」「git commit」「git push」コマンドを、それぞれ順次実行していくことで、ローカルのソースコードを、Reposリポジトリに配置する。


3)「git push」コマンドでAzure Reposを更新すると、以下のように、Azure Pipelineが自動的に動作し始めることが確認できる。
4) 以下のように、Azure Pipelineの実行が失敗したことが確認できる。
5) Azure Pipeline実行時ログを順次確認していくと、エラーログ「unauthorized: Invalid clientid or client secret.」が確認できる。




サービスコネクションの更新
Azure Pipelinesによるビルド実行時に、「unauthorized: Invalid clientid or client secret.」というエラーが発生した場合、Azure DevopsからContainer Registryへのサービスコネクションが無効になっているので、サービスコネクションを更新する。その手順は、以下の通り。
1) Azure Devopsの左下「Project Settings」を選択する。
2) Pipelinesの 「Service connections」メニューを選択する。
3) Azure DevopsからContainer Registryへのサービスコネクションである「funccontainer」を選択する。
なお、ここまでの手順は、以下のサイトを参考にしている。
https://stackoverflow.com/questions/78826916/unauthorized-invalid-clientid-or-client-secret-container-registry-azure/78843673
6) Azure Pipelinesの「Pipelines」メニューを押下後、「Run pipeline」ボタンを押下する。
8) 以下のように、Azure Pipelineが動作し始めることが確認できる。
9) 以下のように、Azure Pipelineが正常に実行できたことが確認できる。
10) Azure Pipelineの実行ログを確認すると、以下のように、正常に実行できている。

11) Azure Pipelineが正常に終了したので、Azure Portal上のコンテナレジストリを確認すると、「azurefunctionpython」リポジトリにタグ「175」が増えているのが確認できる。

Azure Pipelines動作検証
Azure DevOps上のAzure Reposに修正したソースコードを配置することで、Azure Pipelinesによるビルド実行時に、「unauthorized: Invalid clientid or client secret.」というエラーが発生しなくなることを確認する。その手順は、以下の通り。
1) Azure DevOps上のAzure Reposに配置するソースコード(README.md)を修正する。

2)「git add」「git commit」「git push」コマンドを、それぞれ順次実行していくことで、ローカルのソースコードを、Reposリポジトリに配置する。


3) 以下のように、Azure Pipelineが動作し始めることが確認できる。
4) 以下のように、Azure Pipelineが正常に実行できたことが確認できる。
5) Azure Pipelineの実行ログを確認すると、以下のように、正常に実行できている。
6) Azure Portal上のコンテナレジストリを確認すると、「azurefunctionpython」リポジトリにタグ「176」が増えているのが確認できる。
要点まとめ
- Azure Pipelinesを利用して、Dockerコンテナを利用したPythonアプリケーションをContainer Registryに自動反映しようとして「unauthorized: Invalid clientid or client secret.」というエラーが発生した場合、Azure DevopsからContainer Registryへのサービスコネクションを更新すればよい。