Azure Python

Azure Pipelinesで「Invalid clientid or client secret」エラーを解決してみた

久しぶりに、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 Pipelinesを利用してDockerコンテナを利用したPythonアプリケーションをContainer Registryに自動反映してみたAzure DevOpsとは、Azure 上で DevOps(計画→開発→デリバリー→運用)を実現するために必要なサービスが揃ったプラッ...

やってみたこと

  1. エラー発生の確認
  2. サービスコネクションの更新
  3. Azure Pipelines動作検証

エラー発生の確認

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)を修正する。
エラー発生の確認_1_1

エラー発生の確認_1_2

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

エラー発生の確認_2_2 エラー発生の確認_2_3

3)「git push」コマンドでAzure Reposを更新すると、以下のように、Azure Pipelineが自動的に動作し始めることが確認できる。
エラー発生の確認_3

4) 以下のように、Azure Pipelineの実行が失敗したことが確認できる。
エラー発生の確認_4

5) Azure Pipeline実行時ログを順次確認していくと、エラーログ「unauthorized: Invalid clientid or client secret.」が確認できる。
エラー発生の確認_5_1

エラー発生の確認_5_2 エラー発生の確認_5_3 エラー発生の確認_5_4 エンジニアファーストバナー

サービスコネクションの更新

Azure Pipelinesによるビルド実行時に、「unauthorized: Invalid clientid or client secret.」というエラーが発生した場合、Azure DevopsからContainer Registryへのサービスコネクションが無効になっているので、サービスコネクションを更新する。その手順は、以下の通り。

1) Azure Devopsの左下「Project Settings」を選択する。
サービスコネクションの更新_1

2) Pipelinesの 「Service connections」メニューを選択する。
サービスコネクションの更新_2

3) Azure DevopsからContainer Registryへのサービスコネクションである「funccontainer」を選択する。
サービスコネクションの更新_3

4) 右上の「Edit」ボタンを押下する。
サービスコネクションの更新_4

5) そのまま「Save」ボタンを押下する。
サービスコネクションの更新_5

なお、ここまでの手順は、以下のサイトを参考にしている。
https://stackoverflow.com/questions/78826916/unauthorized-invalid-clientid-or-client-secret-container-registry-azure/78843673

6) Azure Pipelinesの「Pipelines」メニューを押下後、「Run pipeline」ボタンを押下する。
サービスコネクションの更新_6

7) そのまま「Run」ボタンを押下する。
サービスコネクションの更新_7

8) 以下のように、Azure Pipelineが動作し始めることが確認できる。
サービスコネクションの更新_8

9) 以下のように、Azure Pipelineが正常に実行できたことが確認できる。
サービスコネクションの更新_9

10) Azure Pipelineの実行ログを確認すると、以下のように、正常に実行できている。
サービスコネクションの更新_10_1

サービスコネクションの更新_10_2

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

「AOMEI Partition Assistant Standard(無料)版」は便利なパーティション管理ツールだったハードディスクの記憶領域を論理的に分割し、分割された個々の領域のことを、パーティションといいます。 例えば、以下の図の場合、C/D...



Azure Pipelines動作検証

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

1) Azure DevOps上のAzure Reposに配置するソースコード(README.md)を修正する。
Azure Pipelines動作検証_1_1

Azure Pipelines動作検証_1_2

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

Azure Pipelines動作検証_2_2 Azure Pipelines動作検証_2_3

3) 以下のように、Azure Pipelineが動作し始めることが確認できる。
Azure Pipelines動作検証_3

4) 以下のように、Azure Pipelineが正常に実行できたことが確認できる。
Azure Pipelines動作検証_4

5) Azure Pipelineの実行ログを確認すると、以下のように、正常に実行できている。
Azure Pipelines動作検証_5

6) Azure Portal上のコンテナレジストリを確認すると、「azurefunctionpython」リポジトリにタグ「176」が増えているのが確認できる。
Azure Pipelines動作検証_6

要点まとめ

  • Azure Pipelinesを利用して、Dockerコンテナを利用したPythonアプリケーションをContainer Registryに自動反映しようとして「unauthorized: Invalid clientid or client secret.」というエラーが発生した場合、Azure DevopsからContainer Registryへのサービスコネクションを更新すればよい。