gpt4 book ai didi

python - 元数据中的启动脚本未运行(Python、谷歌计算引擎、云存储触发器)

转载 作者:行者123 更新时间:2023-12-04 09:46:12 24 4
gpt4 key购买 nike

我有一个在 Google App Engine 上运行的应用程序,以及一个在 Google Compute Engine 上运行的 AI。我正在触发 VM 实例在 Google Cloud Storage 存储桶中发生更改时启动,并且有一个启动脚本,我试图将其存储在 GCE 实例的元数据中。我的云函数如下所示:

import os
from googleapiclient.discovery import build


def start(event, context):
file = event
print(file["id"])

string = file["id"]

new_string = string.split('/')
user_id = new_string[1]
payment_id = new_string[2]
name = new_string[3]

print(name)

if name == "uploadcomplete.txt":
startup_script = """ #! /bin/bash
sudo su username
cd directory/directory
python analysis.py -- gs://location/{userId}/{paymentId}
""".format(userId=user_id, paymentId=payment_id)
# initialize compute api
service = build('compute', 'v1', cache_discovery=False)
print('VM Instance starting')
project = 'zephyrd'
zone = 'us-east1-c'
instance = 'zephyr-a'

# get metadata fingerprint in order to set new metadata
metadata = service.instances().get(project=project, zone=zone, instance=instance)
metares = metadata.execute()
fingerprint = metares["metadata"]["fingerprint"]

# set new metadata
bodydata = {"fingerprint": fingerprint,
"items": [{"key": "startup-script", "value": startup_script}]}
meta = service.instances().setMetadata(project=project, zone=zone, instance=instance,
body=bodydata).execute()
print(meta)

# confirm new metdata
instanceget = service.instances().get(project=project, zone=zone, instance=instance).execute()
print("'New Metadata:", instanceget['metadata'])
print(instanceget)

# start VM
request = service.instances().start(project=project, zone=zone, instance=instance)
response = request.execute()
print('VM Instance started')
print(response)

虚拟机启动,但启动脚本没有运行。出于问题的目的,该脚本已被简化,但这只是我要运行的基本命令。我会将脚本直接添加到控制台中的元数据,但我使用云函数触发器中的值在 VM 中运行命令。我错过了什么?

我尝试以两种方式设置元数据:

"items": [{"key": "startup-script", "value": startup_script}]

还有:

"items": [{"startup-script" : startup_script}]

都没有用。如果我在 shell 中手动输入这些命令,它们会运行得很漂亮。

最佳答案

查看您的日志以确定其不执行的原因。

https://cloud.google.com/compute/docs/startupscript#viewing_startup_script_logs

您的问题可能是您正在尝试执行 python 脚本而不是 bash 脚本。

你的启动脚本应该是这样的:

#! /bin/bash

# ...
python3 paht/to/python_script.py

关于python - 元数据中的启动脚本未运行(Python、谷歌计算引擎、云存储触发器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62096826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com