GAE数据存储权限被拒绝?

问题描述 投票:0回答:1

我正在尝试学习如何使用Google App Engine,并且正在使用Python here的快速入门文档。这是一个简单的代码,可将时间戳记写入数据存储,然后将其打印回用户。

我相当严格地遵循代码和步骤,但是我使用的是Cloud Shell和Cloud Console,而不是下载SDK并在本地运行代码。

代码的前半部分可以正常工作,并且我能够部署Web服务。但是,当我开始使用数据存储区时,我的应用程序中会显示500 Internal Server Error。下面提供了完整的main.py。我注释掉了代码的各个部分,并发现写入数据存储区时似乎出现了问题。错误日志显示PERMISSION DENIED错误(下面的日志)。

据我所见,使用Cloud Shell应该意味着我的python脚本和数据存储之间的身份验证应该“有效”,但看起来似乎不可行。我也在使用Google文档中的确切代码,所以我不明白为什么它会出现错误。

关于我可以尝试的任何想法?

这是我的main.py

import datetime

from flask import Flask, render_template

from google.cloud import datastore

datastore_client = datastore.Client()

app = Flask(__name__)


def store_time(dt):
    entity = datastore.Entity(key=datastore_client.key('visit'))
    entity.update({
       'timestamp': dt
    })

    datastore_client.put(entity)


def fetch_times(limit):
    query = datastore_client.query(kind='visit')
    query.order = ['-timestamp']
    times = query.fetch(limit=limit)

    return times


@app.route('/')
def root():
    store_time(datetime.datetime.now())

    times = fetch_times(10)

    return render_template(
        'index.html', times=times)

错误日志显示以下错误:

File“”,第3行,在raise_from中:google.api_core.exceptions.PermissionDenied:403丢失或权限不足。在error_remapped_callable(/env/lib/python3.7/site-packages/google/api_core/grpc_helpers.py:59)在func_with_timeout(/env/lib/python3.7/site-packages/google/api_core/timeout.py:214)在retry_target(/env/lib/python3.7/site-packages/google/api_core/retry.py:184)在retry_wrapped_func(/env/lib/python3.7/site-packages/google/api_core/retry.py:286)在通话(/env/lib/python3.7/site-packages/google/api_core/gapic_v1/method.py:143)提交时(/env/lib/python3.7/site-packages/google/cloud/datastore_v1/gapic/datastore_client.py:571)在_commit(/env/lib/python3.7/site-packages/google/cloud/datastore/batch.py​​:250)提交时(/env/lib/python3.7/site-packages/google/cloud/datastore/batch.py​​:274)在put_multi(/env/lib/python3.7/site-packages/google/cloud/datastore/client.py:490)放在(/env/lib/python3.7/site-packages/google/cloud/datastore/client.py:463)在store_time(/srv/main.py:20)在根目录(/srv/main.py:36)在dispatch_request(/env/lib/python3.7/site-packages/flask/app.py:1935)在full_dispatch_request(/env/lib/python3.7/site-packages/flask/app.py:1949)在提高(/env/lib/python3.7/site-packages/flask/_compat.py:39)在handle_user_exception(/env/lib/python3.7/site-packages/flask/app.py:1820)位于full_dispatch_request(/env/lib/python3.7/site-packages/flask/app.py:1951)位于wsgi_app(/env/lib/python3.7/site-packages/flask/app.py:2446)

python python-3.x google-app-engine google-cloud-datastore gcloud
1个回答
0
投票

我使用了Cloud Shell,将您的代码保持原样。您的代码对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.