1

Nehmen wir an, ich habe Google Cloud-Speicher-Bucket in Projekt X und möchte Objekt in den Bucket hochladen, der in Projekt X von Code (Python) ist, die auf Projekt Y bereitgestellt wird. Sowohl Projekt X als auch Y haben die gleichen Anmeldeinformationen (Login-ID).Zugriff auf Google Cloud Storage Bucket von einem anderen Projekt mit Python

Ist es mit OAuth2.0 oder einem anderen Vorschlag erreichbar? Ich habe versucht mit Dienstkonto, AppAssertionCredentials & OAuth2DecoratorFromClientSecrets aber fehlgeschlagen.

credentials = GoogleCredentials.get_application_default() 
service = discovery.build('storage', 'v1', credentials=credentials) 
req = service.objects().insert(
      bucket=bucket_name, 
      name=fileName, 
      media_body=media) 

Antwort

1

Dies ist ein sehr häufiger Anwendungsfall. Sie müssen in Ihrem Code nichts Spezielles tun, um auf Buckets in anderen Projekten zuzugreifen. Bucket-Namen sind global eindeutig. Daher verweist Ihre App auf einen vorhandenen Bucket in einem anderen Projekt auf dieselbe Weise wie Buckets in einem eigenen Projekt.

Damit dieser Einfügeaufruf erfolgreich ausgeführt werden kann, müssen Sie dem Konto, in dem der Code ausgeführt wird, einen EIGENTÜMER des Buckets erstellen, in den Sie schreiben.

Ist das App-Engine-Code? App Engine-Code wird als ein bestimmtes Dienstkonto ausgeführt. Sie müssen diesem Dienstkonto Berechtigungen erteilen. Gehen Sie zu https://console.developers.google.com/permissions/serviceaccounts?project=_, um den Namen dieses Dienstkontos herauszufinden. Es ist wahrscheinlich so etwas wie Es ist wahrscheinlich [email protected]

nun die GCS UI oder über gsutil geben, die volle Kontrolle über den Eimer Konto:

gsutil acl ch -u [email protected]:FC gs://myBucketName