0

Azure Data Lake Storage Gen2 を使用して Azure Storage アカウントを作成しました。REST APIを使用してファイルをアップロードしたいと考えています。Shared Keysで認証を使用すると問題なく動作しますが、アカウント SASを使用すると問題が発生します。

パスの作成には、Path - Create操作を使用します。

# provide Azure Data Lake Storage Gen2 URL as environment variable
$ ADLS_URL="https://xxxxx.blob.core.windows.net/files"

# provide account SAS as environment variable
$ SAS="sv=2017-07-29&ss=bf&..."

# Create a new path in ADLS Gen2
$ curl -vX PUT -H "Content-Length: 112" "$ADLS_URL/example.txt?resource=file&$SAS" 

リクエストは400 An HTTP header that's mandatory for this request is not specified.、次のエラー メッセージとともに返されます。

<Error>
  <Code>MissingRequiredHeader</Code>
  <Message>An HTTP header that's mandatory for this request is not specified. RequestId:870e754b-... Time:2020-07-07T...</Message>
  <HeaderName>x-ms-blob-type</HeaderName>
</Error>

Blob storage に BLOB を作成するには、欠落しているヘッダーが必要であることが判明しました。ADLS Gen2 は両方の API をサポートし、どちらも同様の操作を提供するため、要求を間違ったものに委任します。

ADLS Gen2 API で SAS を使用して PUT 操作を使用してパスを作成する方法はありますか?

4

1 に答える 1