私が試みていたデフォルトのアップロードプロセスで問題が見つかりました。私のビデオファイルは、AWS API Gatewayは、私は
func getPresignedUrl() {
let uploadUrl = URL(string: awsLambdaUrl)
Alamofire.request(uploadUrl!, method: .put, parameters: ["filename": filename ], encoding: JSONEncoding.default).responseJSON { response in
if let result = response.result.value {
let JSON = result as! NSDictionary
self.postToS3(JSON["url"] as! String)
}
}
}
func postToS3(_ url: String) {
let buildUrl = URL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0], isDirectory: true).appendingPathComponent("\(filename).mp4")
Alamofire.upload(buildUrl, to: url, method: .put, headers: ["Content-Type": "video/mp4", "x-amz-acl": "public-read"]).responseString { response in
if response.result.isSuccess {
return self.deleteVideo()
}
}
}
S3
に直接AWS S3の事前署名URLを要求して、ビデオを掲載することにより、周りの仕事を作成することができたサポート10メガバイトの最大ペイロードサイズよりも大きかったですそして、事前に署名したURLを処理AWSラムダ関数は次のとおりです。
const aws = require('aws-sdk');
const s3 = new aws.S3();
exports.handler = (event, context, callback) => {
var params = {
Bucket: 'YOUR_BUCKET_NAME',
Key: `${event.body.filename}.mp4`,
ACL: 'public-read',
Expires: 120,
ContentType: 'video/mp4'
};
s3.getSignedUrl('putObject', params, function (err, url) {
if (err) {
callback(err);
} else {
callback(null, { url });
}
});
};