Add a custom cache layer
Provide your customers with a more consistent user experience by implementing a custom caching layer that optimizes the connection between your cloud infrastructure and the Akamai platform.
What you'll do
Create and activate a Cloud Wrapper configuration and link it to a property.
Currently, you can use Cloud Wrapper with these Akamai products:
- Media delivery: Adaptive Media Delivery, Download Delivery, and Object Delivery.
- Website delivery: Dynamic Site Accelerator and Ion.
Support for Cloud Wrapper with Dynamic Site Accelerator and Ion is currently in limited-availability. To request access to these products, talk to your account representative.
What you need
To use a Cloud Wrapper configuration, you need a property from the Property Manager (PAPI) API, which is actively delivering your media or website content for at least 37 days. This helps Akamai determine your capacity needs.
Cloud Wrapper has a default object limit of 10,000 objects/GB.
1. Create a new wrapper configuration
Get your contract's property IDs and traffic locations and their storage capacity to create a new Cloud Wrapper configuration.
The properties you want to use Cloud Wrapper with must be activated on the production network.
-
Determine which properties to use with your new configuration by running
Get-CloudWrapperProperty. Optionally add the-Unusedswitch parameter to return only properties that aren't in use.Get-CloudWrapperProperty -ContractIds 'C-0N7RAC7'propertyId : 12345 propertyName : my-property-1 contractId : C-0N7RAC7 groupId : 23456 type : MEDIA propertyId : 98765 propertyName : my-property-2 contractId : C-0N7RAC7 groupId : 23456 type : WEBYou need to provide property IDs when you create your Cloud Wrapper configuration.
-
Get your contract's traffic location with
Get-CloudWrapperLocation.Get-CloudWrapperLocation | Format-ListlocationId : 1 locationName : US East trafficTypes : {@{trafficTypeId=50; trafficType=WEB_STANDARD_TLS; mapName=cw-s-use}, @{trafficTypeId=1; trafficType=LIVE; mapName=cw-s-use-live}, @{trafficTypeId=2; trafficType=LIVE_VOD; mapName=cw-s-use}, @{trafficTypeId=100; trafficType=WEB_OPTIMIZED; mapName=cw-s-use-web}} multiCdnLocationId : 018 locationId : 2 locationName : US West trafficTypes : {@{trafficTypeId=51; trafficType=WEB_STANDARD_TLS; mapName=cw-s-usw}, @{trafficTypeId=3; trafficType=LIVE_VOD; mapName=cw-s-usw}, @{trafficTypeId=4; trafficType=LIVE; mapName=cw-s-usw-live}, @{trafficTypeId=101; trafficType=WEB_OPTIMIZED; mapName=cw-s-usw-web}} multiCdnLocationId : 020The output returns an Akamai created
trafficTypeIdthat represents a location and its traffic type combination. Use the values of this ID when creating the configuration. -
Find your location's capacity with
Get-CloudWrapperCapacity.Get-CloudWrapperCapacity -ContractIds 'C-0N7RAC7'locationId : 1 locationName : US East contractId : C-0N7RAC7 type : MEDIA approvedCapacity : @{value=100; unit=GB} assignedCapacity : @{value=80; unit=GB} unassignedCapacity : @{value=20; unit=GB} locationId : 3 locationName : Europe contractId : C-0N7RAC7 type : WEB_STANDARD_TLS approvedCapacity : @{value=1; unit=GB} assignedCapacity : @{value=1; unit=GB} unassignedCapacity : @{value=0; unit=GB}The output returns a
unitof measurement, eitherGBorTB.You also get the
valuefor theunassignedCapacity. This value represents the difference between theapprovedCapacityandassignedCapacity, giving you the total space you have left for a location.You need both the
unitand avaluewithin the limits of your approved capacity to create the wrapper configuration. -
Create a Cloud Wrapper configuration with
New-CloudWrapperConfiguration. Provide each location in thelocationsarray.Optionally, add the
-Activateswitch parameter to activate your configuration upon creation. Otherwise, you can activate it separately.For a full list of settings you need to pass in the operation, see Cloud Wrapper configuration.
$MyConfig = @{ locations = @( @{ capacity = @{ unit = "GB" value = 1 } comments = "Real traffic" trafficTypeId = 3 }, ), capacityAlertsThreshold = 50 comments = "Real traffic" configName = "my-config" contractId = "C-0N7RAC7" propertyIds = @( "12345" ) notificationEmails = @( "jsmith@example.com" ) } $MyConfig | New-CloudWrapperConfiguration$MyConfig = '{ "locations": [ { "capacity": { "unit": "GB", "value": 1 }, "comments": "Real traffic", "trafficTypeId": 2 }, ], "capacityAlertsThreshold": 80, "comments": "Real traffic", "configName": "my-config", "contractId": "C-0N7RAC7", "propertyIds": [ "12345" ], "notificationEmails": [ "jsmith@example.com" ] }' $MyConfig | New-CloudWrapperConfigurationconfigId : 54321 configName : my-config contractId : C-0N7RAC7 propertyIds : {12345} comments : Real traffic status : IN_PROGRESS retainIdleObjects : False locations : {@{trafficTypeId=3; comments=Real traffic; capacity=; mapName=cw-s-usw}} multiCdnSettings : capacityAlertsThreshold : 50 notificationEmails : {jsmith@example.com} lastUpdatedDate : 3/31/2026 9:39:33 AM lastUpdatedBy : jsmith lastActivatedDate : lastActivatedBy :
Manage a configuration
Update a configuration
For a full list of settings you need to pass in the update operation, see Cloud Wrapper configuration.
You can update your Cloud Wrapper configuration using one of these ways:
Method 1
Save the results of the Get-CloudWrapperConfiguration command in a variable and update specific attributes of your configuration. Then pipe the entire object back to the Set-CloudWrapperConfiguration command to make your changes effective.
$MyConfig = Get-CloudWrapperConfiguration -ConfigID 54321
$MyConfig.locations[0].trafficTypeId = 1
$MyConfig.locations[0].capacity.value = 3
$MyConfig.propertyIds += "98765"
$MyConfig.notificationEmails = @("jsmith@example.com", "jasmith@example.com")
$MyConfig.capacityAlertsThreshold = 80
$MyConfig | Set-CloudWrapperConfiguration -ConfigID 54321configId : 54321
configName : my-config
contractId : C-0N7RAC7
propertyIds : {12345, 98765}
comments : Real traffic
status : SAVED
retainIdleObjects : False
locations : {@{trafficTypeId=1; comments=Real traffic; capacity=; mapName=cw-s-use}}
multiCdnSettings :
capacityAlertsThreshold : 80
notificationEmails : {jsmith@example.com, jasmith@example.com}
lastUpdatedDate : 3/31/2026 10:09:33 AM
lastUpdatedBy : jsmith
lastActivatedDate :
lastActivatedBy : Method 2
Retrieve your configuration with Get-CloudWrapperConfiguration, save its output locally, and edit it as needed.
Get-CloudWrapperConfiguration -ConfigID 54321 | ConvertTo-Json -Depth 100 | Out-File -FilePath ./myConfig.json{
"configId": 54321,
"configName": "my-config",
"contractId": "C-0N7RAC7",
"propertyIds": [
"12345"
],
"comments": "Real traffic",
"status": "SAVED",
"retainIdleObjects": false,
"locations": [
{
"trafficTypeId": 3,
"comments": "Real traffic",
"capacity": {
"value": 1,
"unit": "GB"
},
"mapName": "cw-s-usw"
}
],
"multiCdnSettings": null,
"capacityAlertsThreshold": 50,
"notificationEmails": [
"jsmith@example.com"
],
"lastUpdatedDate": "2026-03-31T10:09:33.474Z",
"lastUpdatedBy": "jsmith",
"lastActivatedDate": null,
"lastActivatedBy": null
}Then pipe the updated content to the Set-CloudWrapperConfiguration command along with the required ID.
$MyConfig = Get-Content ./myConfig.json -Raw
$MyConfig | Set-CloudWrapperConfiguration -ConfigID 54321When updating the configuration with Set-CloudWrapperConfiguration, optionally add the -Activate switch parameter to activate it.
Delete a configuration
Before deleting a configuration, ensure that all the properties that use it have the Cloud Wrapper behavior disabled. To do that, run the Set-CloudWrapperConfiguration operation with the -Deactivate switch to deactivate it.
Once you disable the Cloud Wrapper, run Remove-CloudWrapperConfiguration to proceed with the delete.
The delete can take up to three hours to complete.
Remove-CloudWrapperConfiguration -ConfigID 54321The operation doesn't return any output.
Pass your configuration's ID in the Get-CloudWrapperConfiguration operation to review its deletion status.
Get-CloudWrapperConfiguration -ConfigID 54321configId : 54321
configName : my-config
contractId : C-0N7RAC7
propertyIds : {12345, 98765}
comments : Real traffic
status : DELETE_IN_PROGRESS
retainIdleObjects : False
locations : {@{trafficTypeId=1; comments=; capacity=; mapName=cw-s-use}}
multiCdnSettings :
capacityAlertsThreshold : 80
notificationEmails : {jsmith@example.com, jasmith@example.com}
lastUpdatedDate : 3/31/2026 5:50:26 PM
lastUpdatedBy : jsmith
lastActivatedDate :
lastActivatedBy : 2. Activate a wrapper configuration
If you haven't activated your configuration upon creation, you can activate it separately with New-CloudWrapperConfigurationActivation by passing your Cloud Wrapper's configuration ID. Activating the configuration makes it available for your property.
Activation processing takes 3–4 hours.
New-CloudWrapperConfigurationActivation -ConfigurationIDs 54321The operation doesn't return any output.
You can use your configuration's ID to run the Get-CloudWrapperConfiguration operation and review its status.
Get-CloudWrapperConfiguration -ConfigID 54321configId : 54321
configName : my-config
contractId : C-0N7RAC7
propertyIds : {12345}
comments : Real traffic
status : ACTIVE
retainIdleObjects : False
locations : {@{trafficTypeId=3; comments=; capacity=; mapName=cw-s-usw}}
multiCdnSettings :
capacityAlertsThreshold : 50
notificationEmails : {jsmith@example.com}
lastUpdatedDate : 3/31/2026 4:59:46 PM
lastUpdatedBy : jsmith
lastActivatedDate : 4/01/2026 6:14:37 PM
lastActivatedBy : jsmithYou can make changes to your configuration while its activation is in progress. However, those changes won’t be included automatically. To apply them, run the activation again.
3. Configure property rules
Once your configuration is active, link it to your property.
-
Get your property's rule tree as JSON snippets. The output is a directory at your current location containing your rule's configurations.
Get-PropertyRules -PropertyName 'my-property' -PropertyVersion 'latest' -OutputSnippets -OutputDirectory './my-property-rules' -
Add a
cloudWrapperbehavior to your property's rule trees, selecting alocationyou've set in your Cloud Wrapper configuration to use its cache space. Additionally, set the trigger criteria.Notes:
- You can't use the
cloudWrapperbehavior in conjunction with thesureRoute,tieredDistribution, orsiteShieldbehavior. cloudWrapperisn't compatible with theoriginTimeoutcriterion and can't be used within a rule using this criterion.- Cloud Wrapper doesn't work with Enhanced TLS hosts.
{ "name": "Cloud Wrapper", "children": [], "behaviors": [ { "name": "cloudWrapper", "options": { "enabled": true, "location": "cw-s-usw" } } ], "criteria": [ { "name": "requestHeader", "options": { "matchOperator": "IS_ONE_OF", "matchWildcardName": false, "matchWildcardValue": false, "matchCaseSensitiveValue": true, "headerName": "enable-cw", "values": [ "true" ] } } ], "criteriaMustSatisfy": "all", "comments": "" } - You can't use the
-
Add your updated rules to your property, pointing to the appropriate directory.
Send your entire rule tree back. Rules not returned are removed from your property.Set-PropertyRules -PropertyName 'my-property' -PropertyVersion 'latest' -InputDirectory './my-property-rules' -VersionNotes 'Adding a Cloud Wrapper setting'The output returns your rule tree along with any errors or warnings upon upload.
4. Activate a property
Reactivate your property to enable your Cloud Wrapper configuration on the production network using the New-PropertyActivation command or its alias Deploy-Property.
Deploy-Property -PropertyName 'my-property' -PropertyVersion 'latest' -Network 'PRODUCTION' -NotifyEmails 'jsmith@email.com'activationLink activationId
-------------- ------------
/papi/v1/properties/prp_12345/activations/atv_67890?contractId=ctr_C-0N7RAC7&groupId=grp_12345 atv_67890Cloud Wrapper configuration
This provides you with a full list of parameters you need to pass in the New-CloudWrapperConfiguration and Set-CloudWrapperConfiguration operations.
| Parameter | Description |
|---|---|
| Required | |
comments |
The descriptive information you've provided about a configuration. |
configName |
Applies only to the New-CloudWrapperConfiguration operation. A configuration's name. This is the propertyName you set when you create the property. |
contractId |
Applies only to the New-CloudWrapperConfiguration operation. Your contract ID. |
locations |
A list of locations with their traffic settings. Each location record contains:
|
propertyIds |
A list of the property IDs to which you want to link your Cloud Wrapper configuration. |
| Optional | |
capacityAlertsThreshold |
The storage limit that triggers a threshold alert. Must be between 50–100. Displayed as null if you haven't enabled capacity alerts. |
multiCdnSettings |
Details about the Multi CDN settings. Displayed as null if Multi CDN isn't defined in your Cloud Wrapper configuration. Contains:
|
notificationEmails |
A list of email addresses that receive change notifications. |
retainIdleObjects |
When true, it sets retention status beyond the max idle lifetime of 30 days. Default is false. This applies only to locations you've configured with a redundant content type, like LIVE_VOD or WEB_OPTIMIZED. |
Advanced settings for Multi CDN
These settings are available only to Akamai Global Services Support.
| Parameter | Description |
|---|---|
| Required | |
denyResponseCode |
The code of a deny response, either 403 or 429. |
| Optional | |
advancedXmlPost |
The text appended to the Advanced Metadata XML |
advancedXmlPre |
The text prepended to the Advanced Metadata XML. |
amdLiveSetting |
Settings you've defined in a property to deliver live streaming media using Adaptive Media Delivery (AMD). Displayed as null if the property uses a delivery product other than AMD, or the AMD property isn't configured to deliver live media content. Contains:
|
amdVodSetting |
Settings you've defined in a property to deliver on-demand streaming media using Adaptive Media Delivery (AMD). Displayed as null if the property uses a delivery product other than AMD, or the AMD property isn't configured to deliver live media content. Contains:
|
baseDirectory |
The base path of content on your origin server. Include the base path in the required value parameter, starting and ending it with a forward slash (/) character. |
cacheKeyQueryParams |
Cached objects based on specified sets of query parameters. Displayed as null if you haven't included these query parameters in your property. Contains:
|
downloadDeliverySetting |
Settings you've defined in a property to deliver your content using Download Delivery. Displayed as null if the property uses a delivery product other than Download Delivery. Contains:
|
objectDeliverySetting |
Settings you've defined in a property to deliver your content using Object Delivery. Displayed as null if the property uses a delivery product other than Object Delivery. Contains:
|
rewriteUrl |
Modifies the path of incoming requests to forward to your origin server. Displayed as null if you haven't set a baseDirectory in your property. Contains:
|
Updated 2 days ago
