Dieser Artikel ist eine Fortsetzung von Eine Geschichte über einen GCP-Anfänger, der einen Micra-Server mit GCE erstellt. Wenn Sie das letzte Mal nicht gesehen haben, würde ich es begrüßen, wenn Sie es von dort aus sehen könnten.
Übrigens, seit ich das letzte Mal einen Micra-Server mit GCP gebaut habe, Dieses Mal möchte ich es aus Zwietracht heraus bedienen können.
Gibt es einen Vorteil, die Instanz aus Zwietracht heraus zu betreiben? Ich denke, Bitten Sie jemanden, der mit Ihnen Micra spielt, sich dem Discord-Kanal anzuschließen Da es im Auftrag des Administrators gestartet und gestoppt werden kann, kann die Belastung des Administrators verringert werden.
--Erstellen eines Servers für Bot --Erstellen Sie ein Dienstkonto für die Instanzsteuerung --Erstellen Sie Discord Bot
Der Server, der diesmal für den Bot verwendet wird, ist Google Compute Engine (GCE). GCE verfügt über immer kostenlose Ressourcen, die völlig kostenlos verwendet werden können. Dieses Mal werden wir sie verwenden. Da es immer kostenlos ist, werden Ihnen keine Gebühren berechnet, auch wenn es immer ausgeführt wird. Dieses Mal wird nur der Bot verwendet, sodass diese Ressource für den Betrieb ausreicht.
Weitere Informationen zu Always Free von GCE finden Sie im folgenden offiziellen Dokument.
Die Instanz wurde mit solchen Einstellungen erstellt. Detaillierte Einstellungen werden diesmal weggelassen.
Artikel | Inhalt |
---|---|
Instanzname | botserver |
Region | us-west1 |
Zone | us-west1-a |
Maschinentyp | f1-micro(vCPUx1,Speicher 0.6GB) |
Boot-Diskette | CentOS 7 |
IP Adresse | Erstellen Sie eine statische IP-Adresse |
Sie können in GCP ein Dienstkonto mit nur bestimmten Berechtigungen für den Zugriff auf Projekte und Ressourcen erstellen. Weitere Informationen zu Dienstkonten finden Sie in der folgenden offiziellen Dokumentation.
Geben Sie diesem Dienstkonto dieses Mal die Berechtigung, die Instanz (Micra-Server) zu starten und zu stoppen. Erstellen Sie zunächst eine "Rolle" aus "IAM und Verwaltung".
Wählen Sie IAM & Administration-> Rollen-> Rolle erstellen und konfigurieren Sie wie folgt:
Artikel | Inhalt |
---|---|
Titel | Beliebiger Titelname |
Behörde | compute.instances.get compute.instances.start compute.instances.stop |
** [Beschreibung der Behörde] **
Artikel | Erläuterung |
---|---|
compute.instances.get | Berechtigung zum Anmelden bei einer Compute Engine-Instanz |
compute.instances.start | Berechtigung zum Starten einer Compute Engine-Instanz |
compute.instances.stop | Berechtigung zum Stoppen einer Compute Engine-Instanz |
Zu diesem Zeitpunkt ist die Erstellung der "Rolle" abgeschlossen. Erstellen Sie dann ein "Dienstkonto" aus "IAM und Administration".
Wählen Sie "IAM und Administration" -> "Dienstkonto" -> "Dienstkonto erstellen" und stellen Sie Folgendes ein.
Artikel | Inhalt |
---|---|
Name des Dienstkontos | Beliebiger Name des Dienstkontos |
Dienstkonto-ID | Beliebige Dienstkonto-ID@{ProjectID}.iam.gserviceaccount.com |
Beschreibung des Dienstkontos | Schreiben Sie eine Beschreibung für Ihr eigenes Verständnis |
Rollenauswahl | Die zuvor erstellte "Rolle" |
Schlüssel erstellen | JSON-Typ *Klicken Sie auf Erstellen, um die JSON-Datei herunterzuladen. |
Bitte verlieren Sie die beim Erstellen des Schlüssels heruntergeladene JSON-Datei nicht, da Sie sie später benötigen.
Erstellen Sie zunächst ein Entwicklerkonto für Ihren Bot im Discord Developer Portal.
Ich habe in den folgenden Artikeln nach verschiedenen Einstellungen für die Erstellung des Entwicklerkontos gesucht.
Handbuch zur Initialisierung des Discord Bot-Kontos für Entwickler
Melden Sie sich bei der in 1. erstellten Instanz an und nehmen Sie verschiedene Einstellungen vor.
Installieren Sie zunächst die erforderlichen Pakete.
#In CentOS7 ist Python3 standardmäßig nicht installiert. Installieren Sie daher Python3.
$ yum install python3
# discord.Installieren Sie py
$ python3 -m pip install -U discord.py
Authentifizieren Sie als Nächstes das zuvor erstellte Dienstkonto.
#Laden Sie die beim Erstellen des Dienstkontos heruntergeladene Schlüsseldatei (JSON-Datei) auf den Bot-Server hoch und authentifizieren Sie sich mit dem folgenden Befehl.
$ gcloud auth activate-service-account --key-file "./<projectName>-xxxxxx.json"
#Überprüfen Sie, ob das Dienstkonto aktiv ist.*OK, wenn Ihr Konto aktiv ist
$ gcloud auth list
#Ausführungsbeispiel unten
---------------------------------------------------------------
ACTIVE ACCOUNT
* <Name des Dienstkontos>@<Projektname>.iam.gserviceaccount.com
---------------------------------------------------------------
Ein Bot-Programm erstellen
mineserver-op.py
#Installierte Zwietracht.Laden Sie py
import discord
import os
import time
#Zugriffstoken für Ihren Bot
TOKEN = '<Zugangstoken>'
client = discord.Client()
#Verarbeitung, die beim Start ausgeführt wird
@client.event
async def on_ready():
#Nach dem Start wird im Terminal eine Anmeldemeldung angezeigt
print('Yaho! Ich habe mich angemeldet!')
print('/Sie können den Befehl mit Hilfe überprüfen')
#Verarbeitung, die beim Empfang einer Nachricht ausgeführt wird
@client.event
async def on_message(message):
#Nicht verarbeiten, wenn der Absender der Nachricht Bot ist
if message.author.bot:
return
#Starten Sie den Server
if message.content == '/start':
await message.channel.send('Server starting up...')
await message.channel.send('* Führen Sie keine anderen Befehle aus, bis "Start" angezeigt wird. *')
os.system('gcloud --account=<Name des Dienstkontos>@<Projektname>.iam.gserviceaccount.com compute instances start <Instanzname> --project <Projektname> --zone <Zonenname>')
await message.channel.send('up .minecraft_server starting...')
time.sleep(60)
await message.channel.send('start up')
#Stoppen Sie den Server
if message.content == '/stop':
await message.channel.send('Server is stopping')
await message.channel.send('* Führen Sie keine anderen Befehle aus, bis "down" angezeigt wird. *')
os.system('gcloud --account=<Name des Dienstkontos>@<Projektname>.iam.gserviceaccount.com compute instances stop <Instanzname> --project <Projektname> --zone <Zonenname>')
await message.channel.send('down')
#Hilfe anzeigen
if message.content == '/help':
await message.channel.send('/start :Starten Sie den Server')
await message.channel.send('/stop :Stoppen Sie den Server')
client.run(TOKEN)
Ausführung des erstellten Bot-Programms
#Stellen Sie sicher, dass Sie das Ausführungsprotokoll führen und ausführen
$ nohup python3 mineserver-op.py > ./out.log &
Zu diesem Zeitpunkt können Sie die Instanz aus Zwietracht heraus betreiben. Lassen Sie uns überprüfen, ob Sie die Instanz tatsächlich bedienen können, indem Sie einen Befehl aus Zwietracht eingeben.
Dieses Mal haben wir nur die Mindestfunktionen zum Starten und Stoppen der Instanz implementiert. Es ist möglich, verschiedene Funktionen zu implementieren, indem dem Dienstkonto die gewünschte Berechtigung erteilt wird.
Nebenbei habe ich bei diesem Operationscheck ein wenig Micra gespielt. Seit ich gespielt habe, gab es viele neue Elemente und ich wollte Micra noch einmal machen (lacht).
Recommended Posts