Ich versuche, aws Lambda-Funktion mit Terraform zu implementieren.Wie führe ich den Befehl aus, bevor data.archive_file den Ordner in Terraform reißt?
Ich habe einfach null_resource
, die lokalen Provisioner und resource.archive_file
haben, die Quellcode reißt, nachdem alle Vorbereitung erfolgt ist.
resource "null_resource" "deps" {
triggers = {
package_json = "${base64sha256(file("${path.module}/src/package.json"))}"
}
provisioner "local-exec" {
command = "cd ${path.module}/src && npm install"
}
}
resource "archive_file" "function" {
type = "zip"
source_dir = "${path.module}/src"
output_path = "${path.module}/function.zip"
depends_on = [ "null_resource.deps" ]
}
Letzte Änderungen an Terraforming resource.archive_file
veraltet, so data.archive_file
sollte stattdessen verwendet werden. Leider wird data
vor Ressourcen ausgeführt, und daher wird der lokale Provisioner von der abhängigen Ressource so aufgerufen, nachdem die Zip-Datei erstellt wurde. So erzeugt der folgende Code keine Warnung mehr, funktioniert aber überhaupt nicht.
resource "null_resource" "deps" {
triggers = {
package_json = "${base64sha256(file("${path.module}/src/package.json"))}"
}
provisioner "local-exec" {
command = "cd ${path.module}/src && npm install"
}
}
data "archive_file" "function" {
type = "zip"
source_dir = "${path.module}/src"
output_path = "${path.module}/function.zip"
depends_on = [ "null_resource.deps" ]
}
Fehle ich etwas? Was ist der richtige Weg, dies mit den neuesten Versionen zu tun?
Terraforming: v0.7.11 OS: Win10
Ich denke, Sie haben Recht, und es ist nicht möglich, nur Terraform zu verwenden. –