2014-10-07 2 views
1

S3에 test-bucket 버킷을 설정하고 사용자 IAM 정책을 구성하여 다른 곳에서 호스팅되는 웹 응용 프로그램의 프로그래밍 방식 액세스를 허용하려고합니다. 이 폴더는 폴더가없는 단순한 평면 양동이입니다.Amazon S3 프로그래밍 방식 PUT 액세스 구성

IAM 구성에서 사용자를 추가하고 액세스 키 집합을 만들었습니다. 마지막으로, 나는이처럼 보이는 액세스 정책 설정이 사용

{ 
    "Statement":[ 
     { 
     "Effect":"Allow", 
     "Action":[ 
      "s3:ListAllMyBuckets" 
     ], 
     "Resource":"arn:aws:s3:::*" 
     }, 
     { 
     "Effect":"Allow", 
     "Action":[ 
      "s3:ListBucket", 
      "s3:GetBucketLocation" 
     ], 
     "Resource":"arn:aws:s3:::test-bucket" 
     }, 
     { 
     "Effect":"Allow", 
     "Action":[ 
      "s3:PutObject", 
      "s3:GetObject", 
      "s3:DeleteObject" 
     ], 
     "Resource":"arn:aws:s3:::test-bucket/*" 
     } 
    ] 
} 

을, 나는 성공적으로 프로그램 내 버킷의 내용을 나열하고 양동이에 개별 파일을 다운로드 할 수 있습니다.

<Error> 
    <Code>AccessDenied</Code> 
    <Message>Access Denied</Message> 
    ... 
</Error> 

나는이 정책이 GET 및 LIST 위해 일하는 것을 알고 : 나는 정책에서 선 "s3:GetObject"을 제거 할 때 예를 들어, 다운로드가 더 이상 작동 내가 뭔가를 업로드 할 때 프로그래밍 나는 Access Denied 오류가 발생합니다. 하지만 내 인생에서 업로드가 작동하지 않는 이유를 알 수 없습니다. localhost에서 실행중인 webapp을 통해이 모든 것을 테스트하고 있습니다. 업로드 작업을하는 방법에 대한 아이디어가 있습니까?

답변

1

나는 다음과 같은 권한을 추가하는 데 필요한 밝혀 :

"s3:PutObjectAcl" 

을 따라서 허용 된 조치는 다음과 같아야한다 : 나는 here에서 아이디어를 가지고,하지만 난 아니에요

"Action":[ 
     "s3:PutObject", 
     "s3:PutObjectAcl" 
     "s3:GetObject", 
     "s3:DeleteObject" 
    ] 

파일의 사용 권한을 변경하지 않기 때문에 이것이 왜 나에게 적용되는지 완전히 확신 할 수 있습니다. 그러나 그것은 효과적이다.

+0

권한을 변경하지 말고 새 파일을 업로드 할 때 설정해야합니다. 하지만 유감스럽게도 그것은 "s3 : ListBucket", "s3 : PutObject", "s3 : GetObject", "s3 : DeleteObject", "s3 : PutObjectAcl"을 허용해도 나를 위해 작동하지 않습니다 아직 AccessDenied 내 파이썬 스크립트 –

+0

OMG에 대한 PutObject 동작은 ROLE로 만들어야하지만 Policy로 만들어서는 안됩니다. 정책과 같은 콘텐츠로 S3 역할을 만들었습니다 - IT WORK –