次の方法で共有


アクセス許可の問題が原因で Azure Batch タスクが失敗する

この記事では、アクセス許可の問題が原因で Azure Batch タスクが失敗する問題の解決策について説明します。

シナリオ 1: バッチ タスクが "アクセス許可が拒否されました" エラーで失敗する

現象

バッチ タスクは 0 以外の終了コードで失敗し、標準エラー (stderr) の "アクセス許可が拒否されました" が stderr.txt ファイルに表示されます。

stderr.txt ファイルの [アクセス許可が拒否されました] エラーを示すスクリーンショット。

原因

既定では、タスクは Batch で標準ユーザーとして自動ユーザー アカウントで実行され、昇格されたアクセス権を持たず、プール スコープを使用して実行されます。 プール スコープは、プール内の任意のタスクで使用できる自動ユーザー アカウントでタスクが実行されることを意味します。

特に指定しない限り、タスクは特権のないユーザーとしてアプリケーションを実行する可能性があり、このエラーが発生する可能性があります。 Linux の /opt フォルダーに書き込むには、管理者特権が必要です。 そのため、ほとんどの場合、この問題は、アプリケーションを実行しているユーザーが宛先に書き込むための管理者アクセス権がないために発生します。

解決策: タスクの "プール自動ユーザー、管理者" 昇格レベルを設定する

この問題を解決するには、タスクに "プール自動ユーザー、管理者" 昇格レベルを指定してから、タスクを再実行します。

標高レベルのオプションを示すスクリーンショット。

シナリオ 2: ファイルのダウンロード中にアクセスが拒否されたため、バッチ開始タスクが失敗する

現象

開始タスクのリソース ファイル (Shared Access Signature (SAS) で生成) を使用してストレージ アカウントからファイルをダウンロードすると、アクセスが拒否されたため、開始タスクは失敗します。

次のエラー メッセージが表示されることがあります。

Error: 指定した署名付きリソースは、このリソース レベルでは許可されていません。

原因

この問題は、通常、操作を実行するための適切なアクセス許可がない場合に発生します。 既定では、SAS にはコンテナーの "読み取り" アクセス許可のみが含まれます。つまり、SAS トークンは "r" のみを指定します。

次に例を示します。

sp=r&st=2024-02-12T09:55:58Z&se=2024-02-12T17:55:58Z&spr=https&sv=2022-11-02&sr=b&sig=<####>

ただし、ストレージ アカウントから Batch ノードにファイル全体をダウンロードするなどの他の操作では、コンテナー レベルで "リスト" アクセス許可が必要です。

解決策: 適切なアクセス許可を持つ SAS トークンを生成する

この問題を解決するには、コンテナー レベルで "読み取り" と "リスト" の両方のアクセス許可を持つ手動 SAS を作成し、Batch アカウント 開始タスクResource files オプションで使用して、ファイルを正常にダウンロードします。

[リソース ファイル] オプションを示すスクリーンショット。

SAS 値を手動で入力するオプションを示すスクリーンショット。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。