gcsfuse
Google Compute Engine 내부를 사용하고 있습니다 . 클라우드 스토리지 버킷으로 폴더를 마운트했지만 그 안에 파일을 생성할 수 없습니다.
touch t1
오류가 있습니다:
touch: cannot touch 't1': Input/output error
문제에 대한 해결책은 다음과 같습니다.Cloud API 액세스 범위: 저장소: 읽기/쓰기
인스턴스를 중지하지 않고 GCP Compute Engine에서 Cloud API 액세스 범위를 변경하는 방법은 무엇입니까? 이 문제에 대한 해결책을 제공해 주세요.
미리 감사드립니다!
답변1
GCS 권한이 부족한 것 같습니다. 다음을 살펴보세요.선적 서류 비치을 위한 gcsfuse
. GCE VM에서 서비스 계정을 사용하는 경우 액세스 범위로 VM을 설정해야 합니다 storage-full
.
다음과 같은 방법으로 문제를 해결할 수 있습니다.
- 서비스 계정 만들기(자세한 내용은여기)
- 서비스 계정의 키를 만들고 .json 파일을 다운로드하세요.
- 서비스 계정에 적절한 역할 부여
- 버킷의 서비스 계정에 적절한 권한을 부여합니다.
- 서비스 계정의 .json 자격 증명을 VM에 업로드합니다.
gcsfuse
명령줄에서 호출할 때 서비스 계정 자격 증명의 경로가 포함된 환경 변수를 정의합니다 .GOOGLE_APPLICATION_CREDENTIALS = /root/credentials/service_credential_file.json gcsfuse bucket_name /my/mount/point
문서화된 것과
key_file
동일한 목표를 달성하기 위해 옵션을 사용하십시오.fstab
여기.
key_file
또한 다음을 사용하여 VM에서 서비스 계정을 구성한 경우에도 환경 변수 또는 옵션을 사용해야 합니다 .
gcloud auth activate-service-account --key-file /root/credentials/service_credential_file.json
여전히 문제가 있는 경우 단계, 명령 및 전체 출력으로 질문을 업데이트하세요.