- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用具有域范围授权的服务帐户从 App Engine 使用 Admin SDK API,允许它模拟管理员。
我找到了几个指南来这样做,但没有一个能像我预期的那样工作。
以下代码已部署到 App Engine Standard。
主要.py
from flask import Flask
from google.auth import app_engine
import google.auth
try:
import googleclouddebugger
googleclouddebugger.enable()
except ImportError:
pass
SCOPES = ['https://www.googleapis.com/auth/admin.directory.user']
app = Flask(__name__)
@app.route('/')
def hello():
credentials, project = google.auth.default()
appIdentity = app_engine.app_identity
credentials = app_engine.Credentials(scopes=SCOPES)
ret = "Expired:{}".format(credentials.expired)
ret += "\nvalid:{}".format(credentials.valid)
return 'Hello World!\n'+ret
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8080, debug=True)
应用.yaml
runtime: python37
代码 credentials = app_engine.Credentials(scopes=SCOPES)
将导致应用程序出现 500 错误消息,因为 app_engine.app_identity
始终是 none
.
"Traceback (most recent call last):
File "/env/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "/env/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/env/lib/python3.7/site-packages/flask/app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/env/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/env/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "/env/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/srv/main.py", line 52, in hello
credentials = app_engine.Credentials(scopes=SCOPES)
File "/env/lib/python3.7/site-packages/google/auth/app_engine.py", line 107, in __init__
'The App Engine APIs are not available.')
OSError: The App Engine APIs are not available."
如您所见,错误报告The App Engine APIs are not available
但是 GCP 项目中没有同名的 API。
下面是我在项目中启用的所有 API,试图实现它的要求。当然,错误还是会出现。
这是一个测试环境,如果有人需要访问,请询问,我很乐意为您授予 GCP 项目的查看权限
感谢您的宝贵时间:)
最佳答案
您正在使用与应用引擎 API 不兼容的 python37 运行时(第二代标准环境)(只有 python27/第一代兼容)。来自 Understanding differences between the Python 2 and Python 3 environments :
Proprietary App Engine APIs are not available in Python 3. This section lists recommended replacements.
from google.auth import app_engine
实际上无法使用,因为它们基于 App Identity API ,那些专有的之一。
对于 python37 运行时中的身份验证,请遵循 Granting your app access to Cloud services部分。基本上不同于 App Identity API,您在其中调用 Credentials()
一次,然后使用应用程序身份访问服务,在 python37 中,您使用相应的服务 API Client( )
调用(或等价物):
# If you don't specify credentials when constructing the client, the
# client library will look for credentials in the environment.
storage_client = storage.Client()
如果您要使用的服务帐户不是应用程序的默认服务帐户,那么您需要指定它:
You can override this default flow by doing any of the following:
Set the
GOOGLE_APPLICATION_CREDENTIALS
environment variable. If this variable is set, Cloud services use the credentials specified by the variable instead of the default service account.Specify credentials when you instantiate the
Client
object for a Cloud service. For example, if your app is calling a Cloud service in a different project, you may need to pass credentials manually.
关于python-3.x - GCP-The App Engine APIs are not available, with py 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58039984/
我正在评估 GCP 的 stackdriver 以跨多个微服务进行日志记录。 其中一些服务部署在本地,其中一些在 AWS/GCP 上。 我们的服务是基于 .NET 或 nodejs 的应用程序,我们投
我处于必须与 GCP 服务器建立 rabbitMQ 连接(我是消费者)的情况。我的代码也在 GCP 机器上。因此双方(一个是 MQ 生产者,另一个是我)决定创建一个本地网络连接,而不是进行外部 IP
我是 GCP 的新手。“GCP 服务”和“GCP 资源”之间的差异让我感到困惑。我认为 GCP 资源是物理 Assets ,例如计算机、硬盘驱动器、虚拟资源、CPU 和 RAM 等。但是 GCP 服务
Google 云平台多久更新(刷新)GCP 控制台上显示的结算费用?有固定的延迟还是实时的? 最佳答案 计费费用每天更新,发票每月生成。也可以通过编程方式按需检查使用情况,按照说明-> https:/
我在 GCP 存储桶中有以下格式的数据: gs://bucket/my_table/data_date=2021-03-26/000 gs://bucket/my_table/data_date=20
我使用 Terraform 在 GCP 中创建了一个服务帐户和一个自定义角色。如何将此自定义角色附加到服务帐户?我可以使用 GCP Console 来做到这一点,但这不是这里的需要,因为我必须使用 T
我正在学习 GCP,遇到了 Kuberflow 和 Google Cloud Composer。 据我了解,似乎两者都用于编排工作流,使用户能够在 GCP 中安排和监控管道。 我能弄清楚的唯一区别是
我们在 gcp 中需要 ufw 吗?还是 gcp 提供的防火墙足够好? 最佳答案 根据您想要实现的目标,您可以选择在 VM 实例级别或 GCP 级别使用防火墙。 出于安全原因,Google Cloud
我正在寻找一种方法来了解我为 GCP 虚拟机实例支付了多少费用。我有 4 个实例,当我转到计费帐户 -> 报告时,我通常会看到 Compute Engine 上特定项目的价格。 我的实例有窗口和许可以
我有一个已经发布到 Play 商店的 react-native 应用程序。在上次更新中,我遇到了这个错误,并且在描述中谷歌说 com.--.MainApplication.onCreate 我有一个由
我正在玩 spring gcp 项目。我的first example with GCP bucket工作正常并使用我在属性文件中指出的正确Google帐户: spring.cloud.gcp.cred
场景:存储在 GCP 存储桶中的图像文件需要通过 POST 发送到第三方 REST 端点 问题:这真的是最好的模式吗?有没有更有效、更简洁的方法? 我们有移动应用将图像上传到 GCP 存储桶。当图像上
我正在尝试使用Simba JDBC从本地连接GCP BigQuery,但收到错误。之前我遇到了服务帐户角色权限问题,这些问题已通过为服务帐户添加必要的角色来解决。服务帐户需要角色权限,但我仍收到错误
我的项目有一个依赖项,需要 python v3.6+。因此,它会在通过 pip 在 python 3 内核中安装时抛出错误,因为 AI Platform Notebooks 默认附带 v3.5。如何使
尝试在本地运行“java cloud run hello word sample”Cloud Run:在本地运行 我一直在努力 Enabling GCP auth addon... Failed to
尝试在本地运行“java cloud run hello word sample”Cloud Run:在本地运行 我一直在努力 Enabling GCP auth addon... Failed to
通过在 application.properties 文件中指定文件位置来传递服务帐户 key 文件(从 GCP 控制台生成)似乎很简单。但是,我尝试了以下所有选项: 1. spring.cloud.
我正在尝试从在 Google Cloud 上运行的常规 VM 实例(即 ubuntu-1904)上的私有(private) GCP 容器注册表中提取 docker 容器,但出现以下错误: user@t
我正在使用 zsh,并且我已经安装了 gcloud,以便通过我的 Mac 上的本地终端与 GCP 进行交互。我遇到了这个错误“zsh:找不到匹配项:apache-beam[gcp]”。但是,当我在 G
我有一个 Spring boot 项目,应该使用 spring-cloud-gcp-starter-sql-postgresql 连接 Cloud SQL 实例,以避免在项目中显式使用 IP . 到目
我是一名优秀的程序员,十分优秀!