【发布时间】:2020-04-12 11:10:12
【问题描述】:
我有一个容器化并在云运行中运行的 API。如何获取正在执行云运行的当前项目 ID?我试过了:
- 我在日志中的 textpayload 中看到它,但我不确定如何在 post 函数中读取 textpayload?我收到的 pub sub 消息缺少此信息。
- 我已经阅读了查询元数据 api 的内容,但是关于如何从 api 中再次执行此操作还不是很清楚。有链接吗?
还有其他方法吗?
编辑:
在下面的一些 cmets 之后,我最终在 Cloud Run 中运行我的 .net API 中的这段代码。
private string GetProjectid()
{
var projectid = string.Empty;
try {
var PATH = "http://metadata.google.internal/computeMetadata/v1/project/project-id";
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Metadata-Flavor", "Google");
projectid = client.GetStringAsync(PATH).Result.ToString();
}
Console.WriteLine("PROJECT: " + projectid);
}
catch (Exception ex) {
Console.WriteLine(ex.Message + " --- " + ex.ToString());
}
return projectid;
}
更新,它有效。我的构建推送失败了,我没有看到。感谢大家。
【问题讨论】:
-
向
http://metadata.google.internal/computeMetadata/v1/project/project-id发出HTTP GET请求 -
我得到(响应状态码不表示成功:403(尝试执行此操作时禁止。
-
您从哪里提出请求?您的 Compute Engine 实例启用了哪些范围?您添加了哪些 HTTP 标头?请参阅 Steren 向元数据服务器发出请求的答案,其中必须包含
Metadata-Flavor:Google标头。 -
我没有!如何获得 ACCESS_TOKEN?
-
我更改了我的评论,因为元数据服务器仅在您的代码在 Compute Engine 实例中运行且不需要访问令牌时才可用。如果您在其他地方(例如 Web 浏览器)运行代码,则无法调用此端点。使用有关如何调用此端点的确切详细信息编辑您的问题并包含错误消息。
标签: google-cloud-platform google-cloud-pubsub google-cloud-run