Search code examples
ioscachingamazon-s3aws-sdk-ios

How to define cache control for AWSS3TransferUtility


I'm struggling to define cache control when uploading images via the AWSS3TransferUtility (AWS-iOS-SDK v2.4.x).

My simplified usage is like:

let utility = AWSS3TransferUtility.S3TransferUtilityForKey("key")
let data = UIImageJPEGRepresentation(image, 0.9)!

let expression = AWSS3TransferUtilityUploadExpression()
expression.progressBlock = { (task, progress) in
    onProgress?(progress: progress.fractionCompleted)
}

transferUtility.uploadData(data, bucket: GlobalConfig.awsS3DefaultBucket, key: "image.jpeg", contentType: "image/jpeg", expression: expression) { (task, error) in
    // ...
}

My current focus was on the expression, but calls like expression.setValue("max-age=3600", forRequestParameter: "Cache-Control") didn't work.


Solution

  • Do not use forRequestParameter use forRequestHeader

    example:

    let expression = AWSS3TransferUtilityUploadExpression()
    expression.setValue("max-age=3600", forRequestHeader: "Cache-Control")