【问题标题】:GCE Secret Manager display test secret via php applicationGCE Secret Manager 通过 php 应用程序显示测试秘密
【发布时间】:2021-01-02 13:59:56
【问题描述】:

我是 Secret manager 的新手,我正在尝试使用 php 应用程序显示测试密钥。 部署应用程序时我得到的只是错误 500。 根据 gcp 文档(Secret Manager Secret Accessor + Storage Object Admin),我为我的 xxxx@appspot.gserviceaccount.com 服务帐户提供了所需的角色 我还从 Cloud Shell 安装了 composer,所以我真的无法发现我做错了什么。

这是我的 composer.json

{
    "require-dev": {
        "paragonie/random_compat": "^9.0.0"
    },
    "require": {
        "google/cloud-secret-manager": "^1.2"
    }
}

这就是我的代码的样子:

<?php 
    use Google\Cloud\SecretManager\V1\SecretManagerServiceClient;
     
    $projectId = 'myproject';
    $secretId = 'mysecret';
    $versionId = '1';
    $client = new SecretManagerServiceClient();
    $name = $client->secretVersionName($projectId, $secretId, $versionId);
    $response = $client->accessSecretVersion($name);
    $payload = $response->getPayload()->getData();
    printf('Plaintext: %s', $payload);
?>

感谢您的帮助...我不知道该尝试什么了 :-(

【问题讨论】:

  • 日志是怎么说的?
  • 我几乎看不出日志中有什么问题 :-( 我可以看到响应是 500,但没有多大帮助...
  • 没有日志很难调试。你可以看这篇文章来找到你的应用日志:cloud.google.com/appengine/docs/standard/nodejs/building-app/…
  • 非常感谢您尝试帮助我。非常感谢。日志显示:code"textPayload":"[start] 2021/01/02 12:03:59.775036 启动程序失败:由 nginx 退出触发终止"、"insertId":"5ff0612f000bd5d499c4496d"、"resource":{"类型”:“gae_app”,“标签”:{“module_id”:“default”,“version_id”:“20210102t114630”,“project_id”:“myproject”,“zone”:“us12”}code
  • 嗯...最后我相信有些东西不见了...code2021/01/04 11:29:42 [error] 23#23: *4 FastCGI sent in stderr: "PHP消息:PHP 致命错误:未捕获的错误:在 /workspace/form.php:11 中找不到类 'Google\Cloud\SecretManager\V1\SecretManagerServiceClient' 堆栈跟踪:#0 /workspace/index.php(5): require() #1 {main} 在第 11 行的 /workspace/form.php 中抛出”,同时从上游读取响应标头,客户端:169.254.1.1,服务器:,请求:“GET /form.php HTTP/1.1”,上游:“fastcgi ://unix:/tmp/google-config/php-fpm.sock:",主机:"mycompany-training-dev.uc.r.appspot.com"code

标签: php google-app-engine google-secret-manager


【解决方案1】:

好的,所以我设法完成了这项工作。作为一个典型的菜鸟,我说了很多废话^^ 长话短说: 首先,我有(有?)一个从 google shell(不是 sdk)构建我的应用程序的坏习惯。我猜这没什么问题(除了它实际上不太方便),但在这个用例中,您需要将包含访问密钥的 json 文件链接到您的 GOOGLE_APPLICATION_CREDENTIALS 环境变量,以便它有权查询秘密管理器。我不知道如何在没有 SDK 的情况下做到这一点。因此,一旦使用 sdk 和正确分配的 json 文件部署了应用程序,那就更好了。然后我遇到了一个 autoload.php 错误,我设法用这篇法语文章修复了:https://www.journaldunet.fr/web-tech/developpement/1441107-comment-corriger-l-erreur-require-vendor-autoload-php-failed-to-open-stream/ 谢谢你们试图帮助我。我在这个问题上学到了一两个有趣的东西....每天都是上学日^^

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 2020-12-02
    • 2021-08-16
    • 2020-11-06
    • 2021-10-20
    • 2021-12-05
    • 2020-07-07
    相关资源
    最近更新 更多