Google Cloud Storage에서 많은 파일을 어떻게 공개합니까?


82

Google Cloud Storage에 공개 할 1000 개의 파일이 있거나 일반적으로 디렉토리 계층 구조가 있습니다.

웹 UI에서는 한 번에 하나씩 만 공개 할 수 있습니다.

이것을 할 방법이 있습니까?


1
찾았어요. gsutil ls를 실행하여 파일 목록을 가져올 수 있습니다. 그런 다음 gsutil setacl public-read *를 사용하여 목록을 xargs로 파이프 할 수 있습니다. gsutil setdefacl public-read를 수행하여 향후 업로드 된 파일이 공개되도록 할 수도 있습니다.
engineerchuan

답변:


107

운영 gsutil -m acl set -R -a public-read gs://bucket

  • 그만큼 -m 동시에 여러 요청을 발행합니다.
  • 그만큼 -R문제는 버킷에있는 모든 객체에 대한 요청합니다.
  • -a문제는 모든 개체의 모든 버전에 대한 요청합니다.

보다 gsutil help acl 내용은를 .

API 레이어에서 gsutil 은 다음 HTTP 요청을 실행합니다.

PUT /bucket/obj?acl HTTP/1.1
Host: storage.googleapis.com
x-goog-acl: public-read

다음 -D과 함께 플래그를 사용하여이를 확인할 수 있습니다 gsutil.

gsutil -D setacl public-read gs://bucket/obj

감사합니다! 현재 문서는 'gsutil acl set public-read gs : // bucket / object'를 표시합니다. 이것은 'setacl'에서 'acl set'로의 업데이트 구문입니까? ( developers.google.com/storage/docs/gsutil/commands/acl#set )
Pierre Broucz 2013

사전 정의 된 ACL 목록 (비공개, 공개 읽기 등) : cloud.google.com/storage/docs/access-control
ruhong

나는 ACL 전술 및 업데이트 된 파일 그냥 :( 공유하지로 복귀 시도
Darian311

59

실행할 때 : gsutil -m acl set -R -a public-read gs://bucket현재 버킷에있는 모든 객체에 대해 공개 읽기를 정의하지만 새 파일을 업로드하면 기본적으로 공개되지 않습니다.

내가 찾은 것은 버킷 기본 ACL을 공개 읽기로 정의 할 가치가 있다는 것입니다. gsutil defacl set public-read gs://bucket


2
좋은 생각. 불행히도 이것은 최상위 버킷에서만 작동하며 버킷 내의 폴더에서는 사용할 수 없습니다. 다른 답변은 폴더에서도 작동합니다.
스티 그 로브

6
gsutil defacl set public-read gs://bucket하위 디렉토리 내의 파일을 포함하여 향후 모든 파일에서 작동합니다. Plastly Grove의 의견을 무시하십시오.
Albin 2016

52

버킷의 모든 객체를 공개 할 수 있습니다. 여기에 링크가 있습니다.

  1. Google Cloud Platform 콘솔에서 Cloud Storage 브라우저를 엽니 다.
  2. 버킷 목록에서 공개하려는 버킷의 이름을 클릭합니다.
  3. 페이지 상단 근처에있는 권한 탭을 선택합니다.
  4. 회원 추가 버튼을 클릭합니다.
    구성원 추가 대화 상자가 나타납니다.
  5. 구성원 필드에 allUsers를 입력하십시오.
  6. 역할 드롭 다운에서 스토리지 하위 메뉴를 선택하고 스토리지 개체 ​​뷰어 옵션을 클릭합니다.
  7. 추가를 클릭하십시오.

공개적으로 공유되면 공개 액세스> 열의 각 개체에 대한 링크 아이콘이 나타납니다. 이 아이콘을 클릭하여 개체의 URL을 가져올 수 있습니다.


1
여러분,이게 답인 것 같습니다. 방금 버킷 권한을 테스트했습니다. 이미지를 변경하고 다시 업로드했는데 Google Storage는 gsutil iam ch allUsers : objectViewer gs : // [BUCKET_NAME] 명령을 실행하기 전처럼 권한을 망치지 않았습니다. 아마존이 여전히 이런 일을 쉽게 만드는 데 앞장서고 있는지 궁금한 경우를 대비하십시오. GS에서 똑같이하기에는 너무 많은 학습 곡선이 있습니다.
Darian311

1
수행중인 작업을 모르는 경우 gsutil을 사용하여 의도하지 않은 결과가 발생할 수 있으므로 정답이어야합니다.
Perniferous

13

이를 수행하는 가장 쉬운 방법은 콘솔을 사용하는 것입니다.

"버킷 권한 편집"을 클릭하십시오.

여기에 이미지 설명 입력

allUsers구성원 추가를 입력합니다 . 그런 다음 Select Role> Storage>Storage Object Viewer

주의! 이렇게하면 인터넷의 모든 사용자에게 선택한 버킷의 모든 객체에 대한 읽기 권한이 부여됩니다.

여기에 이미지 설명 입력


1
스크린 샷을 제공해 주셔서 감사합니다. 정말 도움이되었습니다.
GusDeCooL

12

여기에 있는 정적 웹 사이트 호스팅에 대한 최신 (2017 년 10 월) 문서는 다음을 가리 킵니다.

gsutil acl ch -r -u AllUsers:R gs://bucket-name

어디 -r재귀 트릭을 수행하고 -u AllUsers:R공공 읽기 액세스 할 수 있습니다.


2
이것은 하위 디렉토리에서도 작동합니다. 예gsutil acl ch -r -u AllUsers:R gs://bucket-name/dir-name
Ville

1
이 디렉토리는 많은 파일이있는 경우, 다음이를 부가 -m한 후 그것을 만들 것입니다 -gsutil -m acl ch -r -u AllUsers:R gs://bucket-name/dir-name
MikeHoss

1

Erik을 대신하여 복사하여 붙여 넣으려면 다음과 같이 일관되게 작동했습니다.

개체 그룹을 공개적으로 읽을 수 있도록 만들기

버킷의 모든 객체를 공개적으로 읽을 수 있도록하려면 다음 안내를 따르세요.

CONSOLEGSUTILREST APIs gsutil iam ch 명령어를 사용하여 [VALUES_IN_BRACKETS]를 적절한 값으로 바꿉니다.

 gsutil iam ch allUsers:objectViewer gs://[BUCKET_NAME]
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.