🖨️ AWS-S 3ファイルのコピー中に発生した問題(copyObject)
18693 ワード
現在の項目の静止画ファイルは、
何を入力しても、
正確な原因は分かりませんが、
この部分を知らないで别の问题が长い间の问题の原因を探したのだと思っています...
bucketポリシーでは、エラーコード 通常コード
AWS S3
を用いて処理される.発生した問題
S3.copyObject()
の使用を開始した当初は、Access Denied
が発生したため、パケットポリシーやアクセス権限が正しく付与されていないと勘違いしていたため、Google検索を行う際に、これらを入力しながらテストを継続していた.何を入力しても、
Access Denied
がずっと出てくるので、ずっと問題の所在を探していましたが、最後にここです。でヒントを得て、問題を解決しました.Access Denied
は権限の問題かもしれませんが、誤ったパスを入力してもこのような状況が発生することを理解しています.正確な原因は分かりませんが、
copyObject()
を行う場合、Key
に버킷명/
度を貼り付けてから経路を正常に認識する必要があります.この部分を知らないで别の问题が长い间の问题の原因を探したのだと思っています...
bucketポリシーでは、
"s3:GetObject"
および"s3:PutObject"
のみが許可され、アクセス権がすべて開かれていることに注意してください.export const copyPhoto = (originalSource: string) =>
S3.copyObject(
{
Bucket: "blemarket",
CopySource: originalSource,
Key:
originalSource.slice(0, originalSource.lastIndexOf("/")) +
"/remove" +
originalSource.slice(originalSource.lastIndexOf("/")),
},
(error, data) => {
if (error) {
console.error("error >> ", error);
}
}
);
export const copyPhoto = (originalSource: string) =>
S3.copyObject(
{
Bucket: "blemarket",
CopySource: "blemarket/" + originalSource,
Key:
originalSource.slice(0, originalSource.lastIndexOf("/")) +
"/remove" +
originalSource.slice(originalSource.lastIndexOf("/")),
},
(error, data) => {
if (error) {
console.error("error >> ", error);
}
}
);
完全的桑普尔科德
import AWS from "aws-sdk";
import multer from "multer";
import multerS3 from "multer-s3";
// 헬퍼 함수
export const getPhotoPath = (filename: string) =>
`images/${process.env.NODE_ENV}/${filename}_${Date.now()}`;
AWS.config.update({
region: process.env.BLEMARKET_AWS_REGION,
accessKeyId: process.env.BLEMARKET_AWS_ACCESS_KEY,
secretAccessKey: process.env.BLEMARKET_AWS_SECRET_KEY,
});
const S3 = new AWS.S3();
// multerS3를 이용해서 이미지 추가 처리
const upload = multer({
storage: multerS3({
s3: S3,
bucket: "blemarket",
key(req, file, cb) {
const filename = file.originalname.split(".")[0];
cb(null, getPhotoPath(filename));
},
}),
limits: { fileSize: 1024 * 1024 }, // 1mb
});
// 이미지 제거 함수
export const deletePhoto = (photo: string) =>
S3.deleteObject(
{
Bucket: "blemarket",
Key: photo,
},
(error, data) => {
if (error) {
console.error("error >> ", error);
}
}
);
// 이미지 이동 함수
export const copyPhoto = (originalSource: string) =>
S3.copyObject(
{
Bucket: "blemarket",
CopySource: "blemarket/" + originalSource,
Key:
originalSource.slice(0, originalSource.lastIndexOf("/")) +
"/remove" +
originalSource.slice(originalSource.lastIndexOf("/")),
},
(error, data) => {
if (error) {
console.error("error >> ", error);
}
}
);
Reference
この問題について(🖨️ AWS-S 3ファイルのコピー中に発生した問題(copyObject)), 我々は、より多くの情報をここで見つけました https://velog.io/@1-blue/AWS-S3-파일-복사-copyObjectテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol