Studioから Orchestratorに パッケージをパブリッシュする際に「 パッケージフィードに接続できません。」エラーが発生する

:grey_question:Question

StudioからOrchestratorにパッケージをパブリッシュする際に以下のエラーが発生します。

パッケージフィードに接続できません デプロイ設定が無効である可能性があります(#1651)

:bulb:Answer

以下のいずれかの原因が考えられます。

場合1
パブリッシュ先フォルダに適切な権限が設定されていない場合にこのエラーが生じます。
例えばIISがカスタムアカウントユーザーで動作しており、そのユーザー、あるいはユーザーが属するグループがパブリッシュ先フォルダへの書き込み権限を持たない場合、これを新たに付加することをお試しください。

場合2
Orchestratorの設定ファイルWeb.config(場所:C:\Program Files (x86)\UiPath\Orchestrator)で次のストレージ接続文字列に誤りがある場合、パッケージのデプロイに問題が生じます。

<add key= "Storage.Location" value= "ストレージ接続文字列" >

場合3
以下の二つのパターンのいずれかの場合、#1651エラーが発生します。

(1) Studio開発環境において、プロジェクト中に拡張子がない且つファイル名に全角文字が入るファイルが存在する場合、該当エラーが発生します。

(2) ワークフローファイル名(XAMLファイルの名前)の全角文字(漢字やひらがな、カタカナなど通常の日本語の文字)の文字数が同じで、且つ全角文字を除いた残りの半角文字が完全一致する場合、パブリッシュできない問題が発生します。
※なお、この問題はStudio v2019.10以降で修正されています。

場合4
Orchestratorの設定にてアクティビティパッケージの管理を「外部」に選択している場合。

フィードの設定がうまくできていないと、Studio端末からパブリッシュした時に以下エラーが発生します。
以下にmyget.orgを例に正しい設定の例を示します。

Studioからのパブリッシュ
パブリッシュ先:カスタム
カスタムURL:https://www.myget.org/F/(自分の作成したフィード名)/api/v2/package
APIキー:https://www.myget.org/feed/Details/(自分の作成したフィード名)
上記ページで確認できるAPIキー

場合5
原因はパッケージフィードの設定について、IISのApplication Pool Identity ユーザが、ターゲットとなるフォルダ(Sambaサーバ)に対して読み書きの権限を持っていない。(Nuget feedは内部でSambaサービスを使っています。)

設定方法:
orcadminというアカウントをLinuxアカウント+Sambaアカウントとして追加しsmb.confを下記に変更します。

  • IISのアプリケーションプールで設定されているID:orcadmin
  • smb.conf

valid users = smbuser,orcadmin
write list = smbuser,orcadmin

場合6 (Amazon S3を使っている)
Orchestratorのイベントログに対して以下の警告が存在する場合、原因はOrchestratorがパッケージ格納先のAmazon S3に対してアクセスの権限をもたないためと考えられます。

UiPath.Orchestrator.Core.Exceptions.LocalizedException: Error code - 1651, Message - ‘Cannot connect to packages feed, the Deployment Settings may be invalid.’ —> Amazon.S3.AmazonS3Exception: Access Denied —> Amazon.Runtime.Internal.HttpErrorResponseException: リモート サーバーがエラーを返しました: (403) 使用不可能 —> System.Net.WebException: リモート サーバーがエラーを返しました: (403) 使用不可能
at WebResponse System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at void System.Threading.Tasks.TaskFactory.FromAsyncCoreLogic(IAsyncResult iar, Func<IAsyncResult, TResult> endFunction, Action endAction, Task promise, bool requiresSynchronization)
at async Task Amazon.Runtime.Internal.HttpRequest.GetResponseAsync(CancellationToken cancellationToken)

この問題の解決方法は対象のS3バケットに対して「AmazonS3FullAccess」を付与することです。