program story

Amazon S3 권한 문제-모든 파일에 대한 권한을 한 번에 설정하는 방법은 무엇입니까?

inputbox 2020. 10. 19. 08:01
반응형

Amazon S3 권한 문제-모든 파일에 대한 권한을 한 번에 설정하는 방법은 무엇입니까?


Amazon AWS 관리 콘솔을 사용하여 일부 파일을 업로드했습니다.

나는있어 HTTP 403 Access denied오류가 발생했습니다. 권한을에 설정해야한다는 것을 알았습니다 view.

버킷의 모든 파일에 대해 어떻게해야합니까?

각 파일에 대한 권한을 설정할 수 있다는 것을 알고 있지만 모든 사람이 볼 수 있어야하는 파일이 많을 때는 시간이 많이 걸립니다.


퍼블릭 콘텐츠를 저장할 버킷에 버킷 정책 1적용하는 것이 좋습니다 . 이렇게하면 모든 개체에 대해 ACL을 설정할 필요가 없습니다. 다음은 mybucket 버킷의 모든 파일을 공개 하는 정책의 예입니다 .

{
    "Version": "2008-10-17",
    "Id": "http better policy",
    "Statement": [
        {
            "Sid": "readonly policy",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::mybucket/sub/dirs/are/supported/*"
        }
    ]
}

그것은 재귀 *"Resource": "arn:aws:s3:::mybucket/sub/dirs/are/supported/*"허용합니다.


1 버킷 정책은 IAM 정책과 다릅니다. (하나의 경우 PrincipalIAM 정책 에 포함하려고하면 오류가 발생합니다 .) 버킷 정책은 AWS 웹 콘솔에서 버킷의 루트로 이동하고 속성> 권한을 확장하여 편집 할 수 있습니다. 버킷의 하위 디렉터리에도 속성> 권한이 있지만 다음 옵션은 없습니다.Edit bucket policy


공개 할 디렉토리를 선택할 수 있습니다.

"더보기"를 누르고 공개로 표시하십시오. 디렉토리와 모든 파일을 공용으로 액세스 할 수 있습니다.


고유 항목 (버킷 또는 항목)에 대한 ACL 만 수정할 수 있으므로 하나씩 변경해야합니다.

일부 S3 관리 애플리케이션을 사용하면 버킷의 모든 항목에 동일한 ACL을 적용 할 수 있지만 내부적으로는 ACL을 각각 하나씩 적용합니다.

프로그래밍 방식으로 파일을 업로드하는 경우 파일을 업로드 할 때 ACL을 지정하는 것이 중요하므로 나중에 수정할 필요가 없습니다. S3 관리 애플리케이션 (예 : Cloudberry, Transmit 등)을 사용할 때의 문제는 각 파일을 업로드 할 때 대부분이 기본 ACL (개인 읽기 전용)을 사용한다는 것입니다.


나는 Cloudberry Explorer사용 하여 작업을 수행했습니다. :)


프로그램 (java)을 통해 s3 bucket에 파일을 업로드하는 동안 동일한 문제가 발생했습니다.

오류 : 요청 된 리소스에 'Access-Control-Allow-Origin'헤더가 없습니다.
따라서 원본 ' http : // localhost : 9000 '은 액세스가 허용되지 않습니다. 응답에 HTTP 상태 코드 403이 있습니다.

원본 ID를 추가하고 버킷 정책CORS 구성변경 한 다음 모든 것이 제대로 작동했습니다.


사용 S3 브라우저를 당신은 또한 재귀 적으로 GUI를 사용하여 권한을 업데이트 할 수 있습니다. 유용한 도구이며 비상업적 용도로 무료입니다.


대량의 파일을 공개하려면 다음을 수행하십시오.

  1. S3 웹 인터페이스로 이동
  2. 필요한 버킷을 엽니 다.
  3. 목록 왼쪽에있는 확인란을 클릭하여 필요한 파일과 폴더를 선택합니다.
  4. 목록 상단의«More»버튼을 클릭하고«Make public»을 클릭합니다.
  5. «공개»를 클릭하여 확인합니다. "...이 개체 읽기, 읽기 및 쓰기 권한"이라는 경고에도 불구하고 파일에 공용 쓰기 액세스 권한이 없습니다.

aws cli를 사용하여 각 파일에 ACL을 설정할 수 있습니다.

BUCKET_NAME=example
BUCKET_DIR=media
NEW_ACL=public-read

aws s3 ls $BUCKET_NAME/$BUCKET_DIR/ | \
awk '{$1=$2=$3=""; print $0}' | \
xargs -t -I _ \
aws s3api put-object-acl --acl $NEW_ACL --bucket $BUCKET_NAME --key "$BUCKET_DIR/_"

전송 5

I wanted to add this here for potential macOS users that already have the beautifully-crafted FTP app called Transmit by Panic.

I already had Panic and it supports S3 buckets (not sure what version this came in but I think the upgrades were free). It also supports recursively updating Read and Write permissions.

You simply right click the directory you want to update and select the Read and Write permissions you want to set them to.

It doesn't seem terribly fast but you can open up the log file by going Window > Transcript so you at least know that it's doing something.


Use AWS policy generator to generate a policy which fits your need. The principal in the policy generator should be the IAM user/role which you'd be using for accessing the object(s). Resource ARN should be arn:aws:s3:::mybucket/sub/dirs/are/supported/*

다음으로 "명세 추가"를 클릭하고 계속하십시오. 마침내 정책을 나타내는 JSON을 얻게됩니다. "AWS의 s3 버킷 페이지-> 권한-> 버킷 정책"에있는 s3 버킷 정책 관리 섹션에이를 붙여 넣습니다.

참고 URL : https://stackoverflow.com/questions/7420209/amazon-s3-permission-problem-how-to-set-permissions-for-all-files-at-once

반응형