dimanche 13 avril 2014

iOS - AWS S3 demande échoue et diplômes obtenus de TVM Client - Stack Overflow


In my iOS app I recently changed the AWS iOS Library to 1.7.0 (from 1.6.0) which supports resuming/pausing multipart upload. As a result all file uploads greater than 5MB fails which uses temporary AWS credentials obtained from TVM. (Original credentials work without any problem). The error being HTTP: 403, S3 Error Code: AccessDenied.


The request that fails is this one: GET https://s3.amazonaws.com/<my.bucket.name>/?uploads I am not sure what this request is for or why there is a permission issue because my TVM get_federation_token has GET and PUT access.


{
"Version": "2012-10-17",
"Statement": [
{
"Action": ["s3:PutObject","s3:GetObject"],
"Resource": ["arn:aws:s3:::my.bucket.name/*"],
"Effect": "Allow"
}
]
}

The uploads are happening to the location /<my.bucket.name>/. Any idea what is going on?


Thanks




UPDATE The initial policy I posted was incorrect, s3:ListBucketMultipartUploads is only effective on the bucket.


The S3TransferManager uses multipart uploads for files over 5MB, so you will need to include operations necessary for multipart uploads in your TVM policy.


{
"Version": "2012-10-17",
"Statement": [
{
"Action":"s3:ListBucketMultipartUploads",
"Resource":"arn:aws:s3:::my.bucket.name",
"Effect": "Allow"
},
{
"Action": ["s3:PutObject","s3:GetObject","s3:ListMultipartUploadParts","s3:AbortMultipartUpload"],
"Resource": ["arn:aws:s3:::my.bucket.name/*"],
"Effect": "Allow"
}
]
}


In my iOS app I recently changed the AWS iOS Library to 1.7.0 (from 1.6.0) which supports resuming/pausing multipart upload. As a result all file uploads greater than 5MB fails which uses temporary AWS credentials obtained from TVM. (Original credentials work without any problem). The error being HTTP: 403, S3 Error Code: AccessDenied.


The request that fails is this one: GET https://s3.amazonaws.com/<my.bucket.name>/?uploads I am not sure what this request is for or why there is a permission issue because my TVM get_federation_token has GET and PUT access.


{
"Version": "2012-10-17",
"Statement": [
{
"Action": ["s3:PutObject","s3:GetObject"],
"Resource": ["arn:aws:s3:::my.bucket.name/*"],
"Effect": "Allow"
}
]
}

The uploads are happening to the location /<my.bucket.name>/. Any idea what is going on?


Thanks



UPDATE The initial policy I posted was incorrect, s3:ListBucketMultipartUploads is only effective on the bucket.


The S3TransferManager uses multipart uploads for files over 5MB, so you will need to include operations necessary for multipart uploads in your TVM policy.


{
"Version": "2012-10-17",
"Statement": [
{
"Action":"s3:ListBucketMultipartUploads",
"Resource":"arn:aws:s3:::my.bucket.name",
"Effect": "Allow"
},
{
"Action": ["s3:PutObject","s3:GetObject","s3:ListMultipartUploadParts","s3:AbortMultipartUpload"],
"Resource": ["arn:aws:s3:::my.bucket.name/*"],
"Effect": "Allow"
}
]
}

0 commentaires:

Enregistrer un commentaire