BashOperatorでいくつかのタスクを実装しました。 「gsutil rm」および「gsutil cp」を使用したものは正常に機能しました。ただし、「gcloud alpha firestore export」を使用すると、次のエラーが生成されます。
{bash_operator.py:101} INFO - ERROR: (gcloud.alpha.firestore.export) PERMISSION_DENIED: The caller does not have permission
このコマンド自体は、gcloud Shellで正常に機能します。 Composer=で使用されるサービスアカウントにFirestore関連の権限をいくつか与えようとしましたが、それでも機能しません。
必要なFirestore関連の権限を持つ新しいサービスアカウントを作成し、新しく作成した環境でそれを使用してみてください。 https://cloud.google.com/composer/docs/how-to/access-control
その他のデバッグのアイデア:* Composer環境でKubernetesワーカーにssh-ingし、コマンドを実行します。* Firestore APIはプロジェクトで有効になっていますか?
特定のprojectに対する権限がない可能性があります。
私が得ていたエラーは:PERMISSION_DENIED: Caller does not have required permission to use project project:random-id-11111.
私が解決した方法は、gcloud config set project 'the-right-project-id'
その後、実際のgcloud
コマンド。
Firestoreには権限や役割がないため、実際には直感的でも論理的でもありません。
残念ながら、それを理解するのに時間がかかりました。他の人にも役立つことを願っています!
ロイの答えと同様に、私にとっての問題は、gcloud
が別のプロジェクトに設定されていたことです。
gcloud config list
gcloudプロジェクトリスト
gcloud config set project 'foo-project'
所有者であるプロジェクトを最初に設定する必要がありますgcloud config set project project-id gcloud consoleをクリックしてプロジェクトIDを見つけることができます。
Cloud Datastore Import Exportアクセスが必要だと思います。以下は、現在のGoogle Cloudプラットフォームの現在のレイアウトによる手順です。
https://console.cloud.google.com >左の引き出し> IAMと管理者>ユーザーに対して-編集アイコン>別のロールを追加>データストア>クラウドデータストアのインポートとエクスポート>保存