我已经在谷歌云中部署了一个 python 3.7 函数。我需要通过代码获取 project-id 以找出它的部署位置。
我写了一个小的python 3.7脚本并通过google shell命令行对其进行测试
import urllib
import urllib.request
url="http://metadata.google.internal/computeMetadata/v1/project/project-id"
x=urllib.request.urlopen(url)
with x as response:
x.read()
Run Code Online (Sandbox Code Playgroud)
不幸的是,这只是b''作为回应。虽然我已经使用了它,但我没有得到项目 ID
gcloud config set project my-project
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮忙,因为我是谷歌云和 python 的新手吗?谢谢。
这是下面的附加问题: 问题 2:
在我的本地系统中,我已经安装了 gcloud,如果我从那里运行上面的 python3.7 脚本
x=urllib.request.urlopen(url) #this line
Run Code Online (Sandbox Code Playgroud)
我从上面的行中收到此异常:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py", line 1350, in do_open
h.request(req.get_method(), req.selector, req.data, headers,
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 1240, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 1286, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line …Run Code Online (Sandbox Code Playgroud) python python-requests google-api-python-client google-cloud-python
我正在尝试使用gcloud基于displayName 的命令来过滤为堆栈驱动程序警报通知创建的现有通道。通道的类型为电子邮件和 webhook,以下是电子邮件通知通道的结构:
creationRecord:
mutateTime: '2021-03-16T14:28:59.926805618Z'
displayName: 'Test Notifications Channel'
enabled: true
labels:
email_address: 1234fcb0.XXXPortal.onmicrosoft.com@ayd.teams.ms
mutationRecords:
- mutateTime: '2021-03-16T14:28:59.926805618Z'
name: projects/xxx/notificationChannels/13657854696054677020
type: email
Run Code Online (Sandbox Code Playgroud)
我正在使用以下 Gcloud 命令列出该频道以查明它是否确实存在。
gcloud alpha monitoring channels list --filter='displayName="Test Notifications Channel"' --format='value(name)' --project=xxx
Run Code Online (Sandbox Code Playgroud)
输出是:
警告:任何资源中都不存在以下过滤器键:displayName
该命令的beta版本也给出了相同的结果。我需要通过displayName查明频道是否存在。
注意:在 --filter='type="email"' 中有效,但我不要求这样做。
我可以使用哪个 gcloud 命令和过滤器来解决此问题?
感谢您在下面的回复,我发现过滤器确实适用于上述代码,正如正确指出的那样,有一些尾随空格。我实际上一直在尝试的是 displayName由Test Notifications Channel Default组成。
但在我只给出的过滤器中,省略了默认值:
gcloud alpha monitoring channels list --filter='displayName="Test Notifications Channel"' --format='value(name)' --project=xxx
Run Code Online (Sandbox Code Playgroud)
但我的要求是打印以displayName测试通知通道开头的所有通道,所以我想要这样的东西:
gcloud alpha monitoring channels …Run Code Online (Sandbox Code Playgroud) google-cloud-platform gcloud google-cloud-monitoring google-cloud-stackdriver