Request originated from client IP * through public internet. This is blocked by your Cosmos DB account firewall settings.
背景:
サービス エンドポイントもしくはプライベート エンドポイント経由で Azure Cosmos アカウントに接続する際に発生したエラーです。
KeyWord
Azure Cosmos DB
原因:
Azure Cosmos アカウントのファイアウォールはインターネットからアクセスをブロックしました。
解決方法
- ファイアウォール設定を見直し、接続元の Vnet からのアクセスを許可します。
- プライベート エンドポイントを使っている場合、nslookup コマンドで全てのプライベート エンドポイントへの名前解決ができていることを確認します。 (注:DNS の代わりに Hosts ファイルを使っている場合、各エンドポイントのレコードが Hosts ファイルに追加されていることを確認します。)
# グローバル エンドポイント $ nslookup {databaseaccount}.azure.com Server: 168.63.129.16 Address: 168.63.129.16#53 Non-authoritative answer: {databaseaccount}.documents.azure.com canonical name = {databaseaccount}.privatelink.documents.azure.com. Name: {databaseaccount}.privatelink.documents.azure.com Address: 10.0.0.5
#リージョン エンドポイント $ nslookup {databaseaccount}-{region}.azure.com Server: 168.63.129.16 Address: 168.63.129.16#53 Non-authoritative answer: {databaseaccount}-{region}.documents.azure.com canonical name = {databaseaccount}-{region}.privatelink.documents.azure.com. Name: {databaseaccount}-{region}.privatelink.documents.azure.com Address: 10.0.0.6
The request failed because the client was unable to establish connections to * endpoints across * regions.
背景:
Cosmos データ移行ツールもしくはSDKを使って大量なデータを処理する際に起きたエラーです。
KeyWord
Azure Cosmos DB
原因:
CPU使用率が高い(CPU 測定値が 70% を超える場合、CPU の枯渇によりタイムアウト発生する可能性がございます。) docs.microsoft.com
直接接続モードに必要なポートがファイアウォールによってブロックされている docs.microsoft.com
- パブリック/サービス エンドポイントを使用する場合: 10000 から 20000 の範囲のポート
- プライベート エンドポイントを使用する場合: 0 から 65535 の範囲のポート
原因 1 の場合、ツール、SDK がインストールされている VM をスケールアップ、もしくはクエリで入力データのサイズを減らすことで解決できます。
原因 2 の場合、必要なポートを開くか、ゲートウェイ モード接続を使用することで解決できます。
// Create a new instance of the Cosmos Client in Gateway mode this.cosmosClient = new CosmosClient(EndpointUri, PrimaryKey, new CosmosClientOptions() { ConnectionMode = ConnectionMode.Gateway });
注:直接接続モードを使用する場合、TCP プロトコルを介した接続がサポートされ、ネットワーク ホップ数が減るため、ゲートウェイ モード接続よりパフォーマンスが良いので、ご注意ください。
The function 'length' expects its parameter to be an array or a string. The provided value is of type 'Object'.
背景:
こちらのマニュアルで Azure Data Factory を試していた時に起きたエラーです。 docs.microsoft.com
KeyWord
Azure Data Factory, Lookup(検索/参照) Activity
原因:
以下の原因が考えられます。
- [First row only](先頭行のみ) フィールドのチェック ボックスをオフにしていません。
- [動的なコンテンツの追加] を設定する際、テーブルリストの値を「@activity('LookupTableList').output.value」にしていません。
上記のいずれかの設定が足りなかったことで、期待されるデータ型(ArrayもしくはString)と異なる型のデータが入力されて、Lookup(検索/参照) Activity 内部で使用されている length 関数が実行失敗しました。
上記設定が公式のマニュアルに書いてありますが、結構見落としやすいので、設定する際注意してください。