Ich wollte es auf AWS stellen und ausführen, weil alles in Ordnung ist. Ich habe also LINE Chatbot auf Heroku bereitgestellt Ich beschloss, dies vorerst anzuziehen.
Chalice ist ein von AWS erstelltes Anwendungsframework, das eine API-Umgebung mit Amazon API Gateway und AWS Lambda für Python ermöglicht. (Vom AWS-Beamten)
Zusätzlich zum Erstellen und Bereitstellen von Anwendungen über die Befehlszeile Die Richtlinie der IAM-Rolle, die Lambda zugewiesen wurde, wird automatisch angegeben. Es war sehr praktisch, beispielsweise die API automatisch auszuzahlen.
Vorbereitung ・ Erwerb eines AWS-Kontos ・ Installation von AWS CLI Wenn Sie die AWS CLI nach der Installation zum ersten Mal installieren
aws configure
Drücken Sie den Befehl, um den Kontozugriffsschlüssel oder den geheimen Zugriffsschlüssel einzugeben. Registrieren wir die Region und das Ausgabeformat. Die Anmeldeinformationen werden im Ordner .aws unter Ihrem Home-Verzeichnis gespeichert. Die Ausgabe des Zugriffsschlüssels des Root-Benutzers wird nicht empfohlen. Erstellen Sie daher einen IAM-Benutzer und registrieren Sie seine Anmeldeinformationen.
Kelch
pip install chalice
Sie können es mit installieren.
chalice new-project hello-world
Der Befehl generiert eine Projektdatei. Klicken Sie hier für die Verzeichnisstruktur.
│ .gitignore
│ app.py
│ requirements.txt
│
└─.chalice
config.json
Bearbeiten Sie app.py. Dies ist die Standardeinstellung.
app.py
from chalice import Chalice
app = Chalice(app_name='hello-world')
@app.route('/')
def index():
return {'hello': 'world'}
# The view function above will return {"hello": "world"}
# whenever you make an HTTP GET request to '/'.
#
# Here are a few more examples:
#
# @app.route('/hello/{name}')
# def hello_name(name):
# # '/hello/james' -> {"hello": "james"}
# return {'hello': name}
#
# @app.route('/users', methods=['POST'])
# def create_user():
# # This is the JSON body the user sent in their POST request.
# user_as_json = app.current_request.json_body
# # We'll echo the json body back to the user in a 'user' key.
# return {'user': user_as_json}
#
# See the README documentation for more examples.
#
Sie können den Vorgang lokal mit dem folgenden Befehl überprüfen.
chalice local
Klicken Sie hier, um bereitzustellen.
chalice deploy
Gehen Sie zu der API-URL, die ausgegeben wurde, und überprüfen Sie, ob {'Hallo': 'Welt'} zurückgegeben wird. Hier ist die Bereinigung.
chalice delete
Stellen Sie den App-Namen usw. entsprechend ein und erstellen Sie einen Kanal für die Rückgabe von Papageien. Aktivieren Sie die Verwendung von Webhooks in den Messaging-API-Einstellungen und Messaging-API-Einstellungen ** Kanalzugriffstoken (langfristig) **, Notieren Sie sich das ** Kanalgeheimnis ** in den Kanaleinstellungen.
Örtlich
pip install line-bot-sdk
OK. Löschen Sie die Datei im Whl-Format von PyPI zur Bereitstellung in Lambda. Wenn Sie eine externe Bibliothek mit Lambda verwenden, erstellen Sie einen Lieferantenordner in dem Ordner mit dem Projektnamen und speichern Sie ihn dort im whl-Format. Erstellen Sie außerdem die Datei require.txt und geben Sie die zu verwendende Version an.
requirements.txt
line-bot-sdk==1.17.0
Fügen Sie der Datei config.json im Verzeichnis .chalice Umgebungsvariablen hinzu. Registrieren wir das Kanalgeheimnis und das Kanalzugriffstoken, die wir zuvor wie folgt notiert haben.
config.json
{
"version": "2.0",
"app_name": "line-bot",
"stages": {
"dev": {
"api_gateway_stage": "api",
"environment_variables": {
"LINE_CHANNEL_SECRET": "Kanalgeheimnis",
"LINE_CHANNEL_ACCESS_TOKEN": "Kanalzugriffstoken"
}
}
}
}
Erstellen Sie mit Chalice einen Webhook für LINE Bot auf AWS Lambda Ich habe hier darauf hingewiesen.
Bereitstellen.
Wenn Sie die Konsole überprüfen, werden Lambda und API-Gateway erstellt.
Registrieren Sie die ausgegebene API-URL plus / callback im Webhook der LINE-Entwickler. Wenn nach dem Drücken von "Bestätigen" kein Problem auftritt, ist dies in Ordnung.
Sprechen Sie dann mit dem Bot und prüfen Sie, ob die Papageienrückgabe funktioniert.
Zuerst habe ich Lambda getestet, weil Aum weder Ja noch Nein gesagt hat.
Ein leerer JSON reicht hier für die Testfunktion aus.
Ich habe den Fehler bestätigt und bin zu CloudWatch gegangen.
Fehlerprotokolle werden unter CloudWatch> CloudWatch-Protokolle> Protokollgruppen gespeichert. Wenn ich den Log-Stream von Line-Bot öffne ...
Es wird gesagt, dass es kein Line-Bot-Modul gibt.
Ich überprüfte und stellte fest, dass es in Ordnung war, bis ich die Bibliothek im Hersteller gespeichert hatte, vergaß jedoch, die Datei require.txt zu bearbeiten.
・ Ich hatte es eilig, weil die Konsole nach der Bereitstellung einige Minuten lang nicht funktionierte, aber es scheint, dass die Installation von line-bot-sdk lange gedauert hat. Warten wir geduldig. -Wenn ich mit einem Browser eine Verbindung zu API / Rückruf herstelle, wird {"message": "Missing Authentication Token"}. Die Papageienrendite selbst funktioniert, aber ... -Chalice gewährt Lambda automatisch die IAM-Rollenrichtlinie, aber die Richtlinie des IAM-Benutzers, der über den Zugriffsschlüssel für den Zugriff auf AWS verfügt, muss hier angegeben werden. Selbst wenn ich eine solche Richtlinie gebe, habe ich nicht die Berechtigung. Ich wurde durch einen Fehler abgelehnt, und dieses Mal habe ich die Administratorzugriffsrichtlinie getroffen und sie gepusht (es ist nicht sinnvoll, einen IAM-Benutzer zu erstellen ...).