web-dev-qa-db-ja.com

Google Cloud SDKを使用したgcloudアプリのデプロイ中に許可が拒否されました

Google Cloud SDKを使用してアプリをGoogle App Engineにデプロイするのは非常に困難です。

私は以下の2つのコマンドを試しました

C:\Users\yccheok\Desktop\jstock-Android-appengine>gcloud config set project jstock-Android
Updated property [core/project].

C:\Users\yccheok\Desktop\jstock-Android-appengine>gcloud app deploy app.yaml --log-http --verbosity=debug
DEBUG: Running [gcloud.app.deploy] with arguments: [--log-http: "true", --verbosity: "debug", DEPLOYABLES:1: "['app.yaml']"]
DEBUG: No staging command found for runtime [python27] and environment [STANDARD].
DEBUG: API endpoint: [https://appengine.googleapis.com/], API version: [v1]
=======================
==== request start ====
uri: https://appengine.googleapis.com/v1/apps/jstock-android?alt=json
method: GET
== headers start ==
Authorization: Bearer ya29.GlxEBb1XVP1JK93-ARiaN_ZgiMbvZmw5KWfvJVfibDJ4FK_ZaMRoU1jVDTiWzsY606GSduJKJd9Nm8zA-_Iql5mGn4AMk4QVl8mPRycfekeZnOOHtbUvpkBMgOLOQA
accept: application/json
accept-encoding: gzip, deflate
content-length: 0
user-agent: google-cloud-sdk x_Tw5K8nnjoRAqULM9PFAC2b gcloud/184.0.0 command/gcloud.app.deploy invocation-id/c9ae232d33b346d787b95a36e28c38c0 environment/None environment-version/None interactive/True python/2.7.13 (Windows NT 10.0.16299)
== headers end ==
== body start ==

== body end ==
==== request end ====
---- response start ----
-- headers start --
-content-encoding: gzip
alt-svc: hq=":443"; ma=2592000; quic=51303431; quic=51303339; quic=51303338; quic=51303337; quic=51303335,quic=":443"; ma=2592000; v="41,39,38,37,35"
cache-control: private
content-length: 335
content-type: application/json; charset=UTF-8
date: Tue, 16 Jan 2018 19:16:21 GMT
server: ESF
status: 403
transfer-encoding: chunked
vary: Origin, X-Origin, Referer
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
-- headers end --
-- body start --
{
  "error": {
    "code": 403,
    "message": "Operation not allowed",
    "status": "PERMISSION_DENIED",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ResourceInfo",
        "resourceType": "gae.api",
        "description": "The \"appengine.applications.get\" permission is required."
      }
    ]
  }
}

-- body end --
total round trip time (request+response): 1.796 secs
---- response end ----
----------------------
DEBUG: (gcloud.app.deploy) Permissions error fetching application [apps/jstock-Android]. Please make sure you are using the correct project ID and that you have permission to view applications on the project.
Traceback (most recent call last):
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\calliope\cli.py", line 797, in Execute
    resources = calliope_command.Run(cli=self, args=args)
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\calliope\backend.py", line 757, in Run
    resources = command_instance.Run(args)
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\lib\surface\app\deploy.py", line 65, in Run
    parallel_build=False)
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\command_lib\app\deploy_util.py", line 543, in RunDeploy
    app = _PossiblyCreateApp(api_client, project)
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\command_lib\app\deploy_util.py", line 703, in _PossiblyCreateApp
    api_client._FormatApp())))  # pylint: disable=protected-access
HttpException: Permissions error fetching application [apps/jstock-Android]. Please make sure you are using the correct project ID and that you have permission to view applications on the project.
ERROR: (gcloud.app.deploy) Permissions error fetching application [apps/jstock-Android]. Please make sure you are using the correct project ID and that you have permission to view applications on the project.

C:\Users\yccheok\Desktop\jstock-Android-appengine>

次に、 https://cloud.google.com/appengine/docs/admin-api/accessing-the-api を使用し、使用する必要があると述べました管理API。だから、私は慎重にステップバイステップでそれを行います。

ステップ1

enter image description here

ステップ2

enter image description here

Admin APIが有効になっていると記載されています。次に、資格情報が必要です。

ステップ3

enter image description here

ステップ4

enter image description here

OK。今、彼らは私が新しい資格情報を作成する必要はないことを述べています。 Application Default Credentialsを使用できますか?!

ステップ5

そこで、 https://developers.google.com/identity/protocols/application-default-credentials?hl=en_GB に行きました。私は走る必要があることを学びます

C:\Users\yccheok\Desktop\jstock-Android-appengine>gcloud auth application-default login
Your browser has been opened to visit:

    https://accounts.google.com/o/oauth2/auth?redirect_uri=http%3A%2F%2Flocalhost%3A8085%2F&Prompt=select_account&response_type=code&client_id=764086051850-6qr4p6gpi6hn506pt8ejuq83di341hur.apps.googleusercontent.com&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform&access_type=offline



Credentials saved to file: [C:\Users\yccheok\AppData\Roaming\gcloud\application_default_credentials.json]

These credentials will be used by any library that requests
Application Default Credentials.

ステップ6

enter image description here

ステップ7

enter image description here


それでも、上記の7つの手順を完了した後、実行しようとすると、まったく同じエラーメッセージが表示されます。

gcloud app deploy app.yaml --log-http --verbosity=debug

Google Cloud SDKを使用してPythonアプリをGoogle App Engineにデプロイするために、まだ必要なステップを教えてください。

8
Cheok Yan Cheng

管理APIは、プログラムによるアプリのデプロイ用であり、gcloud app deployを使用したデプロイではなく、Admin APIを有効にする必要さえありませんアプリ用。

から Deploying a Python App

プログラムを使用してアプリを展開するには、 管理API を使用します。

あなたが始める前に

アプリをデプロイする前に:

(ただし、上記がAdmin APIを使用するための招待として誤って解釈される可能性があることがわかります)

gcloud app deployで実際に使用されているアカウントが見つからないか、必要な権限がありません。

gcloud auth listで使用されるアカウントを確認できます。私の場合、アカウントはサービスアカウントではなく、メールアドレスです(サービスアカウントを使用できるかどうかはわかりません)。

別のアカウントが必要な場合は、gcloud auth login(およびおそらくgcloud auth revoke)を使用します。

そして、あなたは IAMページ でプロジェクト/アプリのアカウントの権限(もしあれば)を確認できます。

10
Dan Cornilescu

これに関する追加の注意事項として、App Engine APIとクラウドビルダーAPIを有効にする場合、Cloud Build Serviceアカウントもプロジェクトにアクセスできることを確認してください。

正しいAPIを有効にした後、その問題に遭遇しました。

これはビルドトリガーを使用していました。自分自身として認証されたため、コマンドラインからローカルに展開できました。ただし、ビルドトリガーを使用している場合は、アクセスを必要とするビルドサービスアカウントを使用します。

お役に立てれば。

6
John Mann

この問題がありました。私の場合、プロジェクト名ではなくプロジェクトIDを使用してプロジェクトを設定することで解決しました。この回答をご覧ください

gcloud app deploy ERROR:Permissions error fetching application [apps/<PROJECT_NAME>]

3
claytronicon