Manchmal erstellen wir zu Überprüfungszwecken einen Server in der Sakura-Cloud, aber es ist mühsam, ihn jeden Tag manuell zu starten und zu stoppen. Es wäre schön, wenn es jeden Morgen zu Beginn der Arbeit automatisch startet und nach Arbeitsende aufhört. Ich habe nach so etwas gesucht (Timer in Nifukura), aber ich konnte es nicht finden. Sakuras Service ist billig, daher denke ich, dass es ausreicht, einen VPS für die reguläre Ausführung der Verarbeitung zu haben, aber ich möchte ihn trotzdem serverlos machen. Implementieren wir es also mit Lambda + CloudWatch Events unter Verwendung von AWS! Ich dachte. (Ich denke, Sie können dies mit Cloud-Funktionen + Cloud Scheduler mit GCP oder Azure-Funktionen + TimerTrigger mit Azure tun, aber ich habe es nicht ausprobiert.)
Ich möchte das Skript in Python schreiben. Als ich es nachgeschlagen habe, wurde in [hier] eine Bibliothek namens saklient eingeführt (https://manual.sakura.ad.jp/cloud/api/index.html). Als ich es überprüft habe, hat es funktioniert, also werde ich es verwenden. Es gibt eine Beschreibung von Beta, und es scheint, dass es seit einigen Jahren nicht mehr aktualisiert wurde. Ist das also ärgerlich? Ich möchte Slack mit einem eingehenden Webhook über das Ausführungsergebnis informieren.
Aktiviert für die Massenbereitstellung mit Terraform. Es wird unten veröffentlicht.
https://github.com/shztki/lambda-sakuracloud-startstop
Die Verwendung ist in README beschrieben. Dieses Mal werden Informationen wie der Zugriffsschlüssel in die Lambda-Umgebungsvariable eingegeben, daher möchte ich sie trotzdem verschlüsseln. Selbst wenn Sie "kms_key_arn" an "aws_lambda_function" übergeben, wird der Wert von "Variablen" in "Umgebung" nicht verschlüsselt. Normalerweise werden nach der Bereitstellung "Umgebungsvariablen auf der Clientseite" in [hier] angezeigt (https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption). Sie müssen auf die AWS-Konsole zugreifen und manuell "Helfer für die Verschlüsselung während der Übertragung aktivieren" auswählen, um "zu verschlüsseln", wie unter "Verschlüsseln" beschrieben. Dies ist sehr gefährlich, wenn Sie es vergessen, und es kann von jemandem gesehen werden, bevor Sie es manuell verschlüsseln.
Wie auch immer, wenn die Bereitstellung abgeschlossen ist, möchte ich, dass die Umgebungsvariable den verschlüsselten Wert hat ......
data "external" "slack_webhook_url" {
program = ["bash", "kms.sh"]
query = {
key_id = module.kms_key.key_arn
plaintext = var.slack_webhook_url
}
}
#!/bin/bash
set -e
eval "$(jq -r '@sh "KEY_ID=\(.key_id) PLAINTEXT=\(.plaintext)"')"
result=$(aws kms encrypt --key-id $KEY_ID --plaintext $PLAINTEXT --query CiphertextBlob --output text)
jq -n --arg result "$result" '{"result":$result}'
Bild...
von jetzt an
Ich bin mir sicher, dass es einige Skepsis darüber gibt, ob Sakuras Cloud unter AWS betrieben werden soll, aber bitte verzeihen Sie mir, denn es ist eine Multi-Cloud-Ära. Ich denke, die monatlichen Kosten sind billiger als ein VPS (obwohl der genaue Standort unbekannt ist). Hab ein schönes Sakura-Wolkenleben!