當我嘗試從 Google App Engine Standard 訪問機密管理器時出現錯誤,但如果我從筆記本電腦使用 JSON 密鑰訪問就可以了。
要求.txt:
Flask
google-cloud-storage
google-cloud-secret-manager
psycopg2
應用程式.yaml
runtime: python39
automatic_scaling:
max_instances : 2
max_idle_instances : 1
target_cpu_utilization : 0.9
target_throughput_utilization : 0.9
max_concurrent_requests : 80
代碼:
from flask import Flask,render_template, request
from werkzeug.utils import secure_filename
import os
app = Flask(__name__)
@app.route('/s1',methods=['GET'])
def s1():
from google.cloud import secretmanager
client = secretmanager.SecretManagerServiceClient()
return client.access_secret_version(request={"name": "projects/363745113141/secrets/API_OCR/versions/1"}).payload.data.decode("UTF-8")
if __name__ == '__main__':
app.run()
錯誤1:
grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
at ._end_unary_response_blocking ( /layers/google.python.pip/pip/lib/python3.9/site-packages/grpc/_channel.py:849 )
at .__call__ ( /layers/google.python.pip/pip/lib/python3.9/site-packages/grpc/_channel.py:946 )
at .error_remapped_callable ( /layers/google.python.pip/pip/lib/python3.9/site-packages/google/api_core/grpc_helpers.py:50 )
錯誤2:
google.api_core.exceptions.PermissionDenied: 403 Permission 'secretmanager.versions.access' denied for resource 'projects/363745113141/secrets/API_OCR/versions/1' (or it may not exist).
at .error_remapped_callable ( /layers/google.python.pip/pip/lib/python3.9/site-packages/google/api_core/grpc_helpers.py:52 )
at .retry_target ( /layers/google.python.pip/pip/lib/python3.9/site-packages/google/api_core/retry.py:190 )
at .retry_wrapped_func ( /layers/google.python.pip/pip/lib/python3.9/site-packages/google/api_core/retry.py:283 )
at .__call__ ( /layers/google.python.pip/pip/lib/python3.9/site-packages/google/api_core/gapic_v1/method.py:154 )
at .access_secret_version ( /layers/google.python.pip/pip/lib/python3.9/site-packages/google/cloud/secretmanager_v1/services/secret_manager_service/client.py:1439 )
at .accessSecret ( /srv/lib/secretManager.py:18 )
at .s1 ( /srv/main.py:39 )
at .dispatch_request ( /layers/google.python.pip/pip/lib/python3.9/site-packages/flask/app.py:1509 )
at .full_dispatch_request ( /layers/google.python.pip/pip/lib/python3.9/site-packages/flask/app.py:1523 )
at .full_dispatch_request ( /layers/google.python.pip/pip/lib/python3.9/site-packages/flask/app.py:1525 )
at .wsgi_app ( /layers/google.python.pip/pip/lib/python3.9/site-packages/flask/app.py:2077 )
uj5u.com熱心網友回復:
為了訪問秘密版本,您必須通過添加適當的角色來授予對它的訪問權限。如檔案
在資訊面板中,我們要查看實際權限,我們可以添加新成員:


并且從資訊面板中,我們可以修改訪問權限(僅當角色沒有被繼承時)
在這里,我們添加 App Engine 默認服務帳戶(或您創建的用于運行 App Engine 的帳戶,如果您必須這樣做)。
在查看 App Engine 默認服務帳戶檔案中,您可以查看您的服務帳戶:
在 Cloud 控制臺中,轉到 服務帳戶 頁面。 轉到服務帳戶
選擇您的專案。
在串列中,找到 App Engine 默認服務帳戶的電子郵件地址:
[email protected]
也可以看看:
- 更改服務帳號權限
另一種方法是使用您在筆記本電腦上用于執行測驗的帳戶(用于生成 JSON 密鑰的帳戶)作為在 App Engine 上運行應用程式的帳戶:
- 通過在 app.yaml 檔案中添加帳戶:
service_account: {SERVICE_ACCOUNT_YOU_WANT_TO_USE_TO_ACCESS_APP_ENGINE}
- 通過運行以下命令來部署您的應用程式:
gcloud beta app deploy --service-account=<your_service_account> app.yaml
App Engine 應用的身份不再局限于 AppEngine 默認服務帳戶。您現在可以按照https://cloud.google.com/appengine/docs/standard/python/user-managed-service-accounts#app.yaml為每個 AppEngine 應用程式使用自定義服務帳戶進行部署 。
這些方法取自以下問題:App Engine 的自定義服務帳戶。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/496401.html
標籤:python-3.x 烧瓶 谷歌应用引擎 谷歌秘密经理
