設定佇列 ACL

作業 Set Queue ACL 會設定可用於 SAS (共用存取簽章) 之佇列的預存存取原則。 如需詳細資訊,請參閱定義預存存取原則

注意

2012-02-12 版和更新版提供 Set Queue ACL 作業。

要求

您可以依照下列方式建構 Set Queue ACL 要求。 建議您使用 HTTPS。 以儲存體帳戶的名稱取代 myaccount

方法 要求 URI HTTP 版本
PUT https://myaccount.queue.core.windows.net/myqueue?comp=acl HTTP/1.1

模擬儲存體服務要求

當您對模擬的儲存體服務提出要求時,請將模擬器主機名稱和佇列服務埠指定為 127.0.0.1:10001 ,後面接著模擬的儲存體帳戶名稱:

方法 要求 URI HTTP 版本
PUT http://127.0.0.1:10001/devstoreaccount1/myqueue?comp=acl HTTP/1.1

如需詳細資訊,請參閱使用 Azure 模擬器進行本機 Azure 儲存體開發

URI 參數

您可以在要求 URI 上指定下列其他參數:

參數 描述
timeout 選擇性。 timeout 參數以秒為單位。 如需詳細資訊,請參閱 設定佇列服務作業的逾時

要求標頭

下表說明必要的和選擇性要求標頭:

要求標頭 描述
Authorization 必要。 指定授權配置、帳戶名稱和簽章。 如需詳細資訊,請參閱授權對 Azure 儲存體提出要求
Datex-ms-date 必要。 指定要求的「國際標準時間」(UTC)。 如需詳細資訊,請參閱授權對 Azure 儲存體提出要求
x-ms-version 選擇性。 指定用於這個要求的作業版本。 如需詳細資訊,請參閱 Azure 儲存體服務的版本
x-ms-client-request-id 選擇性。 提供用戶端產生的不透明值,其中包含 1-kibibyte (KiB) 設定記錄時記錄在記錄中的字元限制。 強烈建議您使用此標頭,將用戶端活動與伺服器收到的要求相互關聯。 如需詳細資訊,請參閱 監視 Azure 佇列儲存體

要求本文

若要指定儲存的存取原則,請在要求主體中,提供 Set Queue ACL 作業的唯一識別碼和存取原則。

SignedIdentifier 項目包含唯一識別碼 (如 Id 項目中所指定),以及存取原則的詳細資料 (如 AccessPolicy 項目中所指定)。 唯一識別碼的長度上限為 64 個字元。

StartExpiry 欄位必須以 UTC 時間表示,而且必須遵守有效的 ISO 8061 格式。 支援的 ISO 8061 格式包括:

  • YYYY-MM-DD
  • YYYY-MM-DDThh:mmTZD
  • YYYY-MM-DDThh:mm:ssTZD
  • YYYY-MM-DDThh:mm:ss.ffffffTZD

就這些格式的日期部分而言,YYYY 以四位數表示年份,MM 以兩位數表示月份,而 DD 以兩位數表示日期。 就時間部分而言,hh 以 24 小時標記法表示小時,mm 以兩位數表示分鐘,ss 以兩位數表示秒,而 ffffff 以六位數表示毫秒。 時間指示項 T 會分隔字串的日期和時間部分,而時區指示項 TZD 會指定時區。

<?xml version="1.0" encoding="utf-8"?>  
<SignedIdentifiers>  
  <SignedIdentifier>   
    <Id>unique-64-character-value</Id>  
    <AccessPolicy>  
      <Start>start-time</Start>  
      <Expiry>expiry-time</Expiry>  
      <Permission>abbreviated-permission-list</Permission>  
    </AccessPolicy>  
  </SignedIdentifier>  
</SignedIdentifiers>  
  

範例要求

Request Syntax:  
PUT https://myaccount.queue.core.windows.net/myqueue?comp=acl HTTP/1.1  
  
Request Headers:  
x-ms-version: 2012-02-12  
x-ms-date: Sun, 25 Sep 2011 00:42:49 GMT  
Authorization: SharedKey myaccount:V47F2tYLS29MmHPhiR8FyiCny9zO5De3kVSF0RYQHmo=  
  
Request Body:  
<?xml version="1.0" encoding="utf-8"?>  
<SignedIdentifiers>  
  <SignedIdentifier>   
    <Id>MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=</Id>  
    <AccessPolicy>  
      <Start>2009-09-28T08:49:37.0000000Z</Start>  
      <Expiry>2009-09-29T08:49:37.0000000Z</Expiry>  
      <Permission>raup</Permission>  
    </AccessPolicy>  
  </SignedIdentifier>  
</SignedIdentifiers>  
  

回應

回應包括 HTTP 狀態碼和一組回應標頭。

狀態碼

成功的作業會傳回狀態碼 204 (沒有內容)。

如需狀態碼的詳細資訊,請參閱 狀態和錯誤碼

回應標頭

這項作業的回應包括下列標頭。 回應也可能包括其他標準 HTTP 標頭。 所有標準標頭都符合 HTTP/1.1 通訊協定規格

回應標頭 描述
x-ms-request-id 可唯一識別已提出的要求,並可用來對要求進行疑難排解。 如需詳細資訊,請參閱 針對 API 作業進行疑難排解
x-ms-version 指出用來執行要求的佇列服務版本。 針對針對 2009-09-19 版和更新版本提出的要求,會傳回此標頭。
Date 服務所產生的 UTC 日期/時間值,表示起始回應的時間。
x-ms-client-request-id 此標頭可用來針對要求和對應的回應進行疑難排解。 如果此標頭存在於要求中,則此標頭的值等於標頭的值 x-ms-client-request-id ,且值不包含超過 1,024 個可見的 ASCII 字元。 x-ms-client-request-id如果要求中沒有標頭,則不會出現在回應中。

範例回應

Response Status:  
HTTP/1.1 204 No Content  
  
Response Headers:  
Transfer-Encoding: chunked  
Date: Sun, 25 Sep 2011 22:42:55 GMT  
x-ms-version: 2012-02-12  
Server: Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0  
  

授權

只有帳戶擁有者可呼叫這項作業。

備註

除非擁有者已為佇列內的資源發出共用存取簽章,否則只有帳戶擁有者可以存取特定佇列中的資源。

當您設定佇列的權限時,會取代現有的權限。 若要更新佇列的許可權,請呼叫 取得佇列 ACL 以擷取與佇列相關聯的所有存取原則。 修改您想要變更的存取原則,然後使用完整的資料集呼叫 Set Queue ACL 以執行更新。

建立預存存取原則

預存存取原則可以指定與其相關聯之共用存取簽章的開始時間、到期時間和許可權。 視您想要如何控制佇列資源的存取權而定,您可以在預存存取原則內指定所有這些參數,並從共用存取簽章的 URL 中省略這些參數。 如此一來,您可以隨時修改相關聯的簽章行為或撤銷它。 或者,您可以在預存存取原則內指定一或多個存取原則參數,以及 URL 上的其他參數。 最後,您可以在 URL 上指定所有參數。 在此情況下,您可以使用儲存的存取原則撤銷簽章,但不修改其行為。 如需建立存取原則的詳細資訊,請參閱 定義預存存取原則

共用存取簽章和預存存取原則必須包含授權簽章所需的所有欄位。 如果遺漏任何必要欄位,要求就會失敗。 同樣地,如果在共用存取簽章 URL 和預存存取原則中同時指定欄位,要求就會失敗,狀態碼為 400 (不正確的要求) 。

最多可以針對單一佇列設定五個不同的存取原則。 如果在要求本文中傳遞五個以上的存取原則,服務會傳回狀態碼 400 (「不正確的要求」) 。

當您在佇列上建立預存存取原則時,最多可能需要 30 秒才會生效。 在此間隔期間,與預存存取原則相關聯的共用存取簽章會失敗,狀態碼為 403 (禁止) ,直到存取原則變成作用中為止。

另請參閱

定義預存的存取原則
取得佇列 ACL
授權對 Azure 儲存體的要求
狀態和錯誤碼