web-dev-qa-db-ja.com

PUTのAzure Blob Storageドキュメントからの「404リソースが見つかりません」

新しいBLOBを作成するためにPUTリクエストを実行しようとしています。 Authorizationヘッダーでの最初のトラブルの後、ファイルをコンテナーにPUTしようとすると、404 Resource Not Foundエラーが発生します。

私は私が正しいURLを持っていることをかなり確信しています:

https://accountNameHere.blob.core.windows.net/containerNameHere

コンテナ名とアカウント名が含まれていることを確認および再確認しましたが、どちらも正しいものです。

他に何がこれを引き起こしている可能性がありますか?

編集して追加:

未加工のリクエストヘッダーは次のとおりです。

PUT /testss HTTP/1.1
Host: accountName.blob.core.windows.net
Accept: */*
Connection: Keep-Alive
0: content-encoding
1: content-language
2: content-length
3: content-md5
4: content-type
5: date
6: if-modified-since
7: if-match
8: if-none-match
9: if-unmodified-since
10: range
x-ms-blob-type: BlockBlob
x-ms-version: 2011-08-18
x-ms-date: Fri, 09 Aug 2013 04:17:59 GMT
Content-Length: 126377
Authorization: SharedKey accountName:MBVLmoxzxZr+tf8EZw2GkbFLEHuNn8FNAaEHrcty/cM=
Expect: 100-continue

送信した署名用の文字列は次のとおりです。

PUT x-ms-blob-type:BlockBlob x-ms-date:Fri, 09 Aug 2013 04:03:20 GMT x-ms-version:2011-08-18 /accountName/test

そして、ここに彼らが期待したものがあります:

PUT 126377 x-ms-blob-type:BlockBlob x-ms-date:Fri, 09 Aug 2013 04:02:17 GMT x-ms-version:2011-08-18 /accountName/test

2つの違いは、PUTの後の126377だけです。これがファイルのコンテンツの長さです。削除する方法がわかりません。

30
user1091949

Blobコンテナーのセキュリティ設定を確認しましたか?十分なアクセス権がない可能性があります。

25

コンテナを確認してください。新しいポータルで、横にある省略記号をクリックして[編集]をクリックします。次に、コンテナーのリストを許可する場合は、アクセスタイプをBlobまたはコンテナーに設定します。

Microsoftはセキュリティを強化し、新しいコンテナをデフォルトで非公開にしたようです。

11
stuartdotnet

1- Azure Storage Explorer アプリケーションで、これらの手順を実行してアクセスを変更/確認します。

  1. 問題のコンテナのblobを右クリックします
  2. Set Public Access Levelを選択します
  3. 少なくともPublic read access for blobs onlyに設定します。
  4. 適用します。

enter image description here


[〜#〜]または[〜#〜]2-またはAzure Portalパネルで選択

  • Storage account>
  • Blob serviceセクションから "Blob"を選択>
  • アクセス許可を変更するBlobを選択します>
  • Access policy」を選択>
  • ドロップダウンメニューから、必要に応じて "Blob"または "Container"匿名アクセスを選択します
4
ΩmegaMan

Fiddler を使用して、自分が思っているリクエストを送信していることを確認する必要があります。その後、Fiddlerリクエストをドキュメントと比較できます。

コンテナはすでに存在していますか?サードパーティのストレージエクスプローラーを使用して、そのことを確認する価値があります。

0
Neil Mackenzie