姜戈 +应用程序引擎 (GAE) - 未检测到本地 .env 或 GOOGLE_CLOUD_PROJECT。没有发现秘密

发布于 2025-01-19 05:08:09 字数 1223 浏览 1 评论 0原文

我想在 App Engine 中部署 Django 应用程序。 我在 GAE 中创建并配置了一个秘密管理器,当我想从 SETTINGS.PY 中获取该秘密时,它显示错误“未检测到本地 .env 或 GOOGLE_CLOUD_PROJECT”。没有发现秘密”。

如果我在本地创建 .env,它可以工作,但我想从 GAE 获取秘密信息。

SETTING.PY

env_file = os.path.join(BASE_DIR, ".env")

if os.path.isfile(env_file):
   # Use a local secret file, if provided

   env.read_env(env_file)
# ...
elif os.environ.get("GOOGLE_CLOUD_PROJECT", None):
   # Pull secrets from Secret Manager
   project_id = os.environ.get("GOOGLE_CLOUD_PROJECT")

   client = secretmanager.SecretManagerServiceClient()
   settings_name = os.environ.get("SETTINGS_NAME", "secret-django-phi")
   name = f"projects/{project_id}/secrets/{settings_name}/versions/latest"
   payload = client.access_secret_version(name=name).payload.data.decode("UTF-8")

   env.read_env(io.StringIO(payload))
else:
   raise Exception("No local .env or GOOGLE_CLOUD_PROJECT detected. No secrets found.")

REQUIREMENTS.txt

google-cloud-secret-manager==1.0.0
django-environ==0.4.5

秘密管理器,我像 .env 文件一样上传到 GAE

db_ip=x
db_name=x
db_user=x
db_pass=x
SECRET_KEY=*a lot of characters*

i want to deploy in App Engine a Django app.
I created and configurate a SECRET MANAGER in GAE and when i want to get that secret from my SETTINGS.PY, it display the error 'No local .env or GOOGLE_CLOUD_PROJECT detected. No secrets found'.

If i create the .env locally it works, but i want to get the secret info from the GAE.

SETTING.PY

env_file = os.path.join(BASE_DIR, ".env")

if os.path.isfile(env_file):
   # Use a local secret file, if provided

   env.read_env(env_file)
# ...
elif os.environ.get("GOOGLE_CLOUD_PROJECT", None):
   # Pull secrets from Secret Manager
   project_id = os.environ.get("GOOGLE_CLOUD_PROJECT")

   client = secretmanager.SecretManagerServiceClient()
   settings_name = os.environ.get("SETTINGS_NAME", "secret-django-phi")
   name = f"projects/{project_id}/secrets/{settings_name}/versions/latest"
   payload = client.access_secret_version(name=name).payload.data.decode("UTF-8")

   env.read_env(io.StringIO(payload))
else:
   raise Exception("No local .env or GOOGLE_CLOUD_PROJECT detected. No secrets found.")

REQUIREMENTS.txt

google-cloud-secret-manager==1.0.0
django-environ==0.4.5

SECRET MANAGER that i upload on GAE like an .env file

db_ip=x
db_name=x
db_user=x
db_pass=x
SECRET_KEY=*a lot of characters*

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

谜兔 2025-01-26 05:08:09

在本地运行时,我遇到了同样的错误。事实证明,我在父目录中有.env,但是Google的示例代码假设它在当前目录中。我刚刚改变了:

env_file = os.path.join(BASE_DIR, ".env")

env_file = os.path.join(BASE_DIR, "../.env")

解决了我的问题。

I was getting this same error, while running locally. Turned out I had my .env in the parent directory, but the example code from Google assumes it's in the current directory. I just changed:

env_file = os.path.join(BASE_DIR, ".env")

to

env_file = os.path.join(BASE_DIR, "../.env")

and that fixed my problem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文