2016-11-04 5 views
0

안녕하세요. S3에 업로드 할 때 개체에 대한 사용 권한을 설정하는 데 도움이 필요합니다. 나는 그것을 공개 읽기/쓰기로 만들고 싶다.전체 액세스 권한이있는 Boto3을 사용하여 AWS S3에 파일 업로드

다음과 같은 기능이 있습니다.

def UploadFile(self, destFilePath, data): 
     self._bucket.put_object(Key=destFilePath, Body=data, ACL='public-read-write') 

실행하면 권한 오류가 발생합니다.

ClientError: An error occurred (AccessDenied) when calling the PutObject operation: Access Denied 
+0

파일.응용 프로그램은 자격 증명을 어떻게 받습니까? 할당 된 역할을 가진 Amazon EC2 인스턴스에서 실행 중이거나 자격 증명을 파일을 통해 전달하고 있습니까? 역할 또는 자격 증명에는 어떤 사용 권한이 부여 되었습니까? 대상 버킷에 대한 버킷 정책이란 무엇입니까? 동일한 시스템에서 [AWS Command-Line Interface (CLI)] (http://aws.amazon.com/cli/)와 함께 aws s3 cp 명령을 실행하여 권한을 테스트 할 수 있습니다. –

+0

안녕하세요, 파일을 사용하여 자격 증명을 전달하는 법을 가르쳐 주실 수 있습니까? 나는 그 일을하는 법을 몰랐다. 나는 그 파일에 모든 접근 권한을 갖게 만들었다. – RStyle

+0

나에게 나의 접근과 비밀 키가있다. – RStyle

답변

2

how your application can access AWS credentials을 이해하는 것이 중요합니다.

AWS에 대한 API 호출을 할 때 AWS에 요청하는 사람이나 애플리케이션을 인증하기위한 자격 증명을 제공해야합니다. 이러한 자격 증명은 식별 할 수

  • 사용자가 AWS ID 및 액세스 관리 (IAM)에 정의 된 정적 자격 증명
  • 자격 증명을 가지고 있지만 하지 않는 AWS IAM에 정의 된 역할을,
AWS 보안 토큰 서비스에 의해 생성 된 사용자 또는 AWS 서비스
  • 임시 권한에 의해 가정

    이 엔티티에는 특정 리소스에 대해 특정 API 호출을 수행 할 수있는 권한이 으로 할당되어 있습니다. 예를 들어 Amazon S3 버킷에서 데이터를 다운로드하고 Amazon EC2 인스턴스를 시작/중지하거나 보안 설정을 수정하는 권한을 부여 할 수 있습니다. 이러한 사용 권한은 정책에 정의되어 있습니다.

    • 출시에 역할 할당 된 아마존 EC2 인스턴스에서 응용 프로그램을 실행하여 :

      는 파이썬 응용 프로그램에 대한 자격 증명을 제공 할 수있는 여러 가지 방법이 있습니다 응용 프로그램은 retrieve credentials via the Instance Metadata service을 할 수 있습니다. 로컬 컴퓨터 (그들은 실수로 체크로 할 수 있기 때문에, 항상 위험 소스 코드 저장소)를 구성 파일에 자격 증명을 제공함으로써 (최선의 선택)

    • 환경 변수를 통해 전달하는 자격 증명으로
    • (좋은 당신이 AccessDenied 오류가 발생하는 경우)

    따라서, 당신은해야합니다

    • 응용 프로그램이 RETR 얼마나 확인 으로 ieving 자격 증명 정책 그 자격 증명을
    • 업데이트를 관련된 정책에서
    • 봐 필요한 액세스 권한을 부여하는

    참조 : Boto documentation: Configuring CredentialsIAM documentation 응용 프로그램을 업로드 할 수있는 권한이하지 않는 것 같습니다