방법1) 터미널에 url 생성 코드 직접 입력
aws cloudfront sign \
--url https://클라우드프론트주소.cloudfront.net/디렉토리명/파일명.mp4 \
--key-pair-id KXXXXXXXX \
--private-key file:///파일위치디렉토리/프라이빗키.pem \
--date-less-than 2022-07-25T20:50:00+09:00
위와같은 방법으로 시도해봤는데, 어떠한 이유인지 생성된 signedUrl 링크로 들어가면 오류가 발생하였다.
결국 백엔드쪽에 직접 코드를 짜서 문제를 해결하였다.
exports.getSignedUrl = async(req, res, next) => {
try{
console.log(new Date().getTime() / 1000);
const movieId = req.query.movieId;
const episodeId = req.query.episodeId;
let media;
if (movieId) {
if (episodeId) {
media = await Episode.findOne({where: { id: episodeId, movieId: movieId }})
} else {
media = await Movie.findOne({where: { id: movieId }})
}
})
const s3Key = media.video;
let cfObjectUrl = distUrl + '/' + s3Key;
const signedUrl = signer.getSignedUrl({
url: cfObjectUrl,
expires: Math.floor((Date.now() + twoHours)/1000)
})
console.log(signedUrl)
res.status(201).json({ signedUrl })
}catch (error){
next(error);
}
}