Set Queue Service Properties
The Set Queue Service Properties
operation sets properties for a storage account’s Queue service endpoint, including properties for Storage Analytics and cross-origin resource sharing (CORS) rules. See CORS Support for the Storage Services for more information on CORS rules.
Request
You can specify the Set Queue Service Properties
request as follows. We recommend that you use HTTPS. Replace account-name with the name of your storage account:
Method | Request URI | HTTP version |
---|---|---|
PUT | https://account-name.queue.core.windows.net/?restype=service&comp=properties |
HTTP/1.1 |
Note
The URI must always include a slash character (/) to separate the hostname from the path and query portions of the URI. In this operation, the path portion of the URI is empty.
URI parameters
Parameter | Description |
---|---|
restype=service&comp=properties |
Required. The combination of both query strings is required to set the Azure Storage service properties. |
timeout |
Optional. The timeout parameter is expressed in seconds. For more information, see Set time-outs for Queue service operations. |
Request headers
The required and optional request headers are described in the following table:
Request header | Description |
---|---|
Authorization |
Required. Specifies the authorization scheme, storage account name, and signature. For more information, see Authorize requests to Azure Storage. |
Date or x-ms-date |
Required. Specifies the Coordinated Universal Time (UTC) for the request. For more information, see Authorize requests to Azure Storage. |
x-ms-version |
Required for all authorized requests. Specifies the version of the operation to use for this request. For more information, see Versioning for the Azure Storage services. |
x-ms-client-request-id |
Optional. Provides a client-generated, opaque value with a 1-kibibyte (KiB) character limit that's recorded in the logs when logging is configured. We highly recommend that you use this header to correlate client-side activities with requests that the server receives. For more information, see Monitor Azure Queue Storage. |
Request body
For version 2012-02-12 and earlier, the format of the request body is as follows:
<?xml version="1.0" encoding="utf-8"?>
<StorageServiceProperties>
<Logging>
<Version>version-number</Version>
<Delete>true|false</Delete>
<Read>true|false</Read>
<Write>true|false</Write>
<RetentionPolicy>
<Enabled>true|false</Enabled>
<Days>number-of-days</Days>
</RetentionPolicy>
</Logging>
<Metrics>
<Version>version-number</Version>
<Enabled>true|false</Enabled>
<IncludeAPIs>true|false</IncludeAPIs>
<RetentionPolicy>
<Enabled>true|false</Enabled>
<Days>number-of-days</Days>
</RetentionPolicy>
</Metrics>
</StorageServiceProperties>
For version 2013-08-15 and later, the format of the request body is as follows:
<?xml version="1.0" encoding="utf-8"?>
<StorageServiceProperties>
<Logging>
<Version>version-number</Version>
<Delete>true|false</Delete>
<Read>true|false</Read>
<Write>true|false</Write>
<RetentionPolicy>
<Enabled>true|false</Enabled>
<Days>number-of-days</Days>
</RetentionPolicy>
</Logging>
<HourMetrics>
<Version>version-number</Version>
<Enabled>true|false</Enabled>
<IncludeAPIs>true|false</IncludeAPIs>
<RetentionPolicy>
<Enabled>true|false</Enabled>
<Days>number-of-days</Days>
</RetentionPolicy>
</HourMetrics>
<MinuteMetrics>
<Version>version-number</Version>
<Enabled>true|false</Enabled>
<IncludeAPIs>true|false</IncludeAPIs>
<RetentionPolicy>
<Enabled>true|false</Enabled>
<Days>number-of-days</Days>
</RetentionPolicy>
</MinuteMetrics>
<Cors>
<CorsRule>
<AllowedOrigins>comma-separated-list-of-allowed-origins</AllowedOrigins>
<AllowedMethods>comma-separated-list-of-HTTP-verb</AllowedMethods>
<MaxAgeInSeconds>max-caching-age-in-seconds</MaxAgeInSeconds>
<ExposedHeaders>comma-seperated-list-of-response-headers</ExposedHeaders>
<AllowedHeaders> comma-seperated-list-of-request-headers </AllowedHeaders>
</CorsRule>
</Cors>
</StorageServiceProperties>
As of version 2013-08-15, you can call Set Queue Service Properties
with one or more root elements specified in the request body. The root elements include:
- Logging
- HourMetrics
- MinuteMetrics
- Cors
It's no longer necessary to specify every root element on the request. If you omit a root element, the existing settings for the service for that functionality are preserved. However, if you do specify a specified root element, you must specify every child element for that element.
The elements of the request body are described in the following table:
Element name | Description |
---|---|
Logging | Optional as of version 2013-08-15. Required for earlier versions. Groups the Storage Analytics Logging settings. |
Metrics | Required for version 2012-02-12 and earlier. Not applicable for version 2013-08-15 and later. Groups the Storage Analytics Metrics settings. The Metrics settings provide a summary of request statistics grouped by API in hourly aggregates for queues. |
HourMetrics | Optional for version 2013-08-15 and later. Not applicable for earlier versions. Groups the Storage Analytics HourMetrics settings. The HourMetrics settings provide a summary of request statistics grouped by API in hourly aggregates for queues. |
MinuteMetrics | Optional for version 2013-08-15 and later. Not applicable for earlier versions. Groups the Storage Analytics MinuteMetrics settings. The MinuteMetrics settings provide request statistics for each minute for queues. For versions earlier than 2013-08-15, MinuteMetrics isn't included in the response body. |
Version | Required if Logging, Metrics, HourMetrics, or MinuteMetrics settings are specified. The version of Storage Analytics to configure. |
Delete | Required if Logging, Metrics, HourMetrics, or MinuteMetrics settings are specified. Applies only to logging configuration. Indicates whether all delete requests should be logged. |
Read | Required if Logging, Metrics, HourMetrics, or MinuteMetrics settings are specified. Applies only to logging configuration. Indicates whether all read requests should be logged. |
Write | Required if Logging, Metrics, HourMetrics, or MinuteMetrics settings are specified. Applies only to logging configuration. Indicates whether all write requests should be logged. |
Enabled | Required. Indicates whether metrics are enabled for the Queue service. If read-access geo-redundant replication is enabled, both primary and secondary metrics are collected. If read-access geo-redundant replication isn't enabled, only primary metrics are collected. |
IncludeAPIs | Required only if metrics are enabled. Applies only to metrics configuration. Indicates whether metrics should generate summary statistics for called API operations. |
RetentionPolicy/Enabled | Required. Indicates whether a retention policy is enabled for the storage service. |
RetentionPolicy/Days | Required only if a retention policy is enabled. Indicates the number of days that metrics or logging data should be retained. All data that's older than this value will be deleted. The minimum value you can specify is 1 , and the maximum value is 365 (one year). |
Cors | Optional. The Cors element is supported for version 2013-08-15 and later. Groups all CORS rules. Omitting this element group will not overwrite existing CORS settings. |
CorsRule | Optional. Specifies a CORS rule for the Queue service. You can include up to five CorsRule elements in the request. If no CorsRule elements are included in the request body, all CORS rules will be deleted, and CORS will be disabled for the Queue service. |
AllowedOrigins | Required if CorsRule element is present. A comma-separated list of origin domains that will be allowed via CORS, or "*" to allow all domains. An origin domain might also include a wildcard character in the subdomain to permit requests via CORS for all subdomains of a domain. Limited to 64 origin domains. Each allowed origin can have up to 256 characters. |
ExposedHeaders | Required if the CorsRule element is present. A comma-separated list of response headers to expose to CORS clients. Limited to 64 defined headers and two prefixed headers. Each header can contain up to 256 characters. |
MaxAgeInSeconds | Required if the CorsRule element is present. The number of seconds that the client/browser should cache a preflight response. |
AllowedHeaders | Required if the CorsRule element exists. A comma-separated list of headers allowed to be part of the cross-origin request. Limited to 64 defined headers and 2 prefixed headers. Each header can contain up to 256 characters. |
AllowedMethods | Required if the CorsRule element exists. A comma-separated list of HTTP methods that are allowed to be executed by the origin. For Azure Storage, permitted methods are DELETE , GET , HEAD , MERGE , POST , OPTIONS , or PUT . |
Response
The response includes an HTTP status code and a set of response headers.
Status code
A successful operation returns status code 202 (Accepted).
Response headers
The response for this operation includes the following headers. The response may also include additional standard HTTP headers. All standard headers conform to the HTTP/1.1 protocol specification.
Response header | Description |
---|---|
x-ms-request-id |
Uniquely identifies a request that's made against the service. |
x-ms-version |
Specifies the version of the operation that was used for the response. For more information, see Versioning for the Azure Storage services. |
x-ms-client-request-id |
Can be used to troubleshoot requests and corresponding responses. The value of this header is equal to the value of the x-ms-client-request-id header if it's present in the request and the value contains no more than 1,024 visible ASCII characters. If the x-ms-client-request-id header isn't present in the request, it won't be present in the response. |
Response body
None.
Authorization
Only the account owner may call this operation.
Remarks
The following restrictions and limitations apply to CORS rules in Azure Storage:
A maximum of five rules can be stored.
The maximum size of all CORS rules settings on the request, excluding XML tags, should not exceed 2 KiB.
The length of an allowed header, exposed header, or allowed origin should not exceed 256 characters.
Allowed headers and exposed headers may be either of the following:
Literal headers, where the exact header name is provided, such as
x-ms-meta-processed
. A maximum of 64 literal headers may be specified on the request.Prefixed headers, where a prefix of the header is provided, such as
x-ms-meta-data*
. Specifying a prefix in this manner allows or exposes any header that begins with the specified prefix. A maximum of two prefixed headers may be specified on the request.
The methods (or HTTP verbs) specified in the
AllowedMethods
element must conform to the methods that are supported by the Azure Storage service APIs. Supported methods areDELETE
,GET
,HEAD
,MERGE
,POST
,OPTIONS
, andPUT
.
Specifying CORS rules on the request is optional. If you call Set Queue Service Properties
without specifying the Cors element in the request body, any existing CORS rules are maintained.
To disable CORS, call Set Queue Service Properties
with an empty CORS rules settings (that is,*</Cors>
) and no inner CORS rules. This call deletes any existing rules, and it disables CORS for the Queue service.
All CORS rule elements are required if the CorsRule element is specified. The request fails with error code 400 (Bad Request
) if any element is missing.
As of version 2013-08-15, XML settings elements are optional, so you can update a specific element by sending an XML that contains only the updated element. Other settings aren't affected.
For detailed information about CORS rules and evaluation logic, see CORS support for the Azure Storage services.
Sample request and response
The following sample URI makes a request to change the Queue service properties for a fictional storage account named myaccount:
PUT https://myaccount.queue.core.windows.net/?restype=service&comp=properties HTTP/1.1
The request is sent with the following headers:
x-ms-version: 2013-08-15
x-ms-date: Wed, 23 Oct 2013 04:28:19 GMT
Authorization: SharedKey
myaccount:Z1lTLDwtq5o1UYQluucdsXk6/iB7YxEu0m6VofAEkUE=
Host: myaccount.queue.core.windows.net
The request is sent with the following XML body:
<?xml version="1.0" encoding="utf-8"?>
<StorageServiceProperties>
<Logging>
<Version>1.0</Version>
<Delete>true</Delete>
<Read>false</Read>
<Write>true</Write>
<RetentionPolicy>
<Enabled>true</Enabled>
<Days>7</Days>
</RetentionPolicy>
</Logging>
<HourMetrics>
<Version>1.0</Version>
<Enabled>true</Enabled>
<IncludeAPIs>false</IncludeAPIs>
<RetentionPolicy>
<Enabled>true</Enabled>
<Days>7</Days>
</RetentionPolicy>
</HourMetrics>
<MinuteMetrics>
<Version>version-number</Version>
<Enabled>true|false</Enabled>
<IncludeAPIs>true|false</IncludeAPIs>
<RetentionPolicy>
<Enabled>true|false</Enabled>
<Days>number-of-days</Days>
</RetentionPolicy>
</MinuteMetrics>
<Cors>
<CorsRule>
<AllowedOrigins> http://www.fabrikam.com,http://www.contoso.com</AllowedOrigins>
<AllowedMethods>GET,PUT</AllowedMethods>
<MaxAgeInSeconds>500</MaxAgeInSeconds>
<ExposedHeaders>x-ms-meta-data*,x-ms-meta-customheader</ExposedHeaders>
<AllowedHeaders>x-ms-meta-target*,x-ms-meta-customheader</AllowedHeaders>
</CorsRule>
</Cors>
</StorageServiceProperties>
After the request has been sent, the following response is returned:
HTTP/1.1 202 Accepted
Connection: Keep-Alive
Transfer-Encoding: chunked
Date: Wed, 23 Oct 2013 04:28:20 GMT
Server: Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: cb939a31-0cc6-49bb-9fe5-3327691f2a30
x-ms-version: 2013-08-15
See also
CORS support for the Azure Storage services
CORS HTTP specification