내 웹 사이트에서 aws javascript SDK를 통해 삭제할 수있는 객체가 포함 된 s3 버킷이 있습니다. 참고로, 내 웹 사이트는 us-east-1 지역의 s3에서 호스팅되며 웹 사이트를 통해 삭제해야하는 객체가 포함 된 내 버킷은 us-west-1에 있습니다.AWS javascript sdk로 s3 버킷의 객체를 삭제할 수없는 이유는 무엇입니까?
var bucketInstance = new AWS.S3({region: 'us-west-1'});
var params = {
Bucket: 'MyBucketName',
Key: 'photoToDelete.JPG'
};
bucketInstance.deleteObject(params, function (err, data) {
if (data) {
console.log("Photo deleted successfully");
}
else {
console.log("Check if you have sufficient permissions : "+err);
}
});
을하지만 그것은 successed하지 않습니다 - 다음과 같은 오류가 콘솔에 나타납니다 :
내 웹 사이트에 다음 코드를 시도
1)은 XMLHttpRequest https://MyBucketName.s3-us-west-1.amazonaws.com/photoToDelete.JPG을로드 할 수 없습니다. 프리 플라이트 요청에 대한 응답이 액세스 제어 검사를 통과하지 못합니다. 'Access-Control-Allow-Origin'헤더가 요청 된 자원에 없습니다. 따라서 'https : // MyDomain .com'은 액세스 할 수 없습니다. 2122 옵션 https://MyBucketName.s3.amazonaws.com/?max-keys=0 403 (금지)
3)은 XMLHttpRequest https://MyBucketName.s3.amazonaws.com/?max-keys=0를로드 할 수 없습니다 : 응답은 HTTP 상태 코드 (403)
2) AWS-sdk.js했다. 프리 플라이트 요청에 대한 응답이 액세스 제어 검사를 통과하지 못합니다. 'Access-Control-Allow-Origin'헤더가 요청 된 자원에 없습니다. 따라서 'https : // MyDomain .com'은 액세스 할 수 없습니다. 응답의 HTTP 상태 코드는 403입니다.
그리고 이러한 오류는 콘솔에서 약간 반복되는 것 같습니다.
무슨 일입니까? 나는 이러한 객체가 삭제 될 그 필요에있는 S3 버킷 등의 문제를 일으킬 수있는 생각
AWS.config.region = 'us-east-1'; // 1. Enter your region
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'us-east-1:*MyIdentityPoolId*'
});
서쪽 1에 있습니다 이전에 내 코드에서 참고로
는 그래서 같은 AWS SDK를 config (설정) 내 웹 사이트와 내가 설정 한 모든 람다 함수와 API 게이트웨이는 동쪽 -1에 있으므로 당연히 내 AWS.config.region과 자격 증명을 동쪽 값으로 구성했습니다. 비록 이것이이 문제를 일으키는 지 모르겠다. 명시 적으로 서부 지역에 s3 지역을 설정하고 있는데, 우리가 의심 스럽기 때문에이 설정 값이 오류를 일으키는 것처럼 IdentityPool을 us-west-1에 만들 수는 없지만 그럴 수 있습니다.
마지막으로, S3의 다음 버킷 정책이 삭제 될 필요가있는 객체가 양동이 우리 서쪽-1 :
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>MyDomain.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
:
{
"Version": "2012-10-17",
"Id": "Policy2354434234",
"Statement": [
{
"Sid": "MakeItPublic",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:DeleteObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::MyBucketName/*"
}
]
}
을 그리고 난 그렇게 같은 CORS 구성을 설정
또한 버킷의 모든 사용자에 대해 읽기 및 쓰기 권한을 설정했습니다. 왜 내가이 매우 실망스러운 오류가 발생하는지 어떤 생각?
이 카드 wiled 오류에 보여줍니다 같은 방법으로 추가 할 필요가있는 것은 어디에서 일이 잘못 가고있다 . 허용 된 원점을 '*'로 간단히 재검사 해 볼 수 있습니까? – c3st7n
제안에 감사드립니다 - 나는 원점을 *로 바꾸 었으며 동일한 결과가 발생했습니다! –
여기에서 빨대를 심각하게 짚고 있지만, 찾을 수있는 모든 예제/샘플은'xmlns' 또는 버전/인코딩 정보를 지정하지 않습니다. – c3st7n