Dies ist ich werde es auch dieses Jahr tun! AWS Lambda Tied Up Adventskalender 2015 ist ein Artikel am 16., der jedoch von Zeit zu Zeit aktualisiert wird (letzte Aktualisierung: 15.07.2016).
Alle bereitgestellten Informationen sind zum 15.07.2015 aktuell. Die Entwicklung ist im Gange und kann sich ändern.
Es wird hier sein https://github.com/marcy-terui/lamvery
Es ist ein Tool, das die Bereitstellung der Lambda-Funktion sowie das Einstellen und Verwalten von Peripheriefunktionen einschließlich der Funktion selbst unterstützt. Es besteht aus Python und ich verwende es hauptsächlich in Python, aber Node.js wird vorerst auch unterstützt, und ich habe die Mindestoperation bestätigt.
Basierend auf dem Konzept des benutzerfreundlichen Bereitstellungs- und Verwaltungstools für die AWS Lambda-Funktion entwickeln wir mit dem Schwerpunkt auf der einfachen und bequemen Handhabung einer Funktion und der Wahrscheinlichkeit eines praktischen Bereitstellungsablaufs. Es ist als Werkzeug positioniert.
Ich denke auch, dass es wertvoll ist, zusätzliche Funktionen hinzuzufügen, die nicht realisiert werden können, ohne sich an die Bereitstellung von Function zu binden, und es ist eine Funktion, die solche Tools aktiv hinzufügen.
Der Autor liest "Ranberi".
Ursprünglich Bereitstellen von Python-Code in der AWS-Dokumentation .html) ist zu lästig und ich dachte, ich könnte etwas dagegen tun, also habe ich "** Lam ** bda + ** v ** irtual ** e ** nv + p ** y ** thon" gemacht. Es fühlt sich an, als hätte ich es aufgenommen und mit [^ 1] verbunden, aber jetzt kann ich nicht anders, als zu denken, dass der kurze und coole Name gut war.
Apex Bitte überprüfen Sie hier. Insbesondere sollten Sie bei den Rollback-Spezifikationen vorsichtig sein, da Sie auf einen Blick erkennen können, dass "Oh, das ist ein Bösewicht". http://qiita.com/marcy-terui/items/db8dae512af3c553fe72
. Py
wird nicht im Archiv gespeichert, nur .pyc
wird gespeichert usw. [^ 4]Ich wollte ein Werkzeug, das in meine Hand passt und praktisch verwendet werden kann, und als ich es benutzte, schien ich verschiedene Dinge zu wollen, also dachte ich, ich sollte es selbst machen.
virtualenv -p <path-to-python2.7> .venv
. .venv/bin/activate
pip install lamvery
echo "deb https://dl.bintray.com/willyworks/deb trusty main" | sudo tee -a /etc/apt/sources.list
sudo apt-get update
sudo apt-get install lamvery
export PATH=/opt/lamvery/bin:$PATH
echo "
[bintraybintray-willyworks-rpm]
name=bintray-willyworks-rpm
baseurl=https://dl.bintray.com/willyworks/rpm/centos/\$releaserver/\$basearch/
gpgcheck=0
enabled=1
" | sudo tee -a /etc/yum.repos.d/bintray-willyworks-rpm.repo
sudo yum install lamvery
export PATH=/opt/lamvery/bin:$PATH
Erstellen Sie zunächst mit dem folgenden Befehl eine Vorlage für die Einstellungsdatei.
lamvery init
Nachdem Sie eine Vorlage für einige Konfigurationsdateien haben, bearbeiten Sie diese. Wie oben erwähnt, wird jinja2 als Vorlage interpretiert. Wenn Sie es also in "{{}}" einschließen, wird die Variable erweitert, und wenn Sie sie in "{%%}" einschließen, wird sie erweitert. Sie können Code einbetten. Außerdem habe ich die Umgebungsvariablen, von denen ich denke, dass sie häufig verwendet werden, in eine Variable namens "env" eingefügt, damit ich sie kurz schreiben kann.
Das Folgende ist ein Einstellungsbeispiel.
yaml:.lamvery.yml
profile: private
region: us-east-1
versioning: true
default_alias: test
clean_build: false
configuration:
name: lamvery-test
runtime: python2.7
role: {{ env['AWS_LAMBDA_ROLE'] }}
handler: lambda_function.lambda_handler
description: This is sample lambda function.
timeout: 10
memory_size: 128
vpc_config:
subnets:
- subnet-cadf2993
security_groups:
- sg-4d095028
yaml:.lamvery.event.yml
rules:
- name: foo
description: bar
schedule: 'rate(5 minutes)'
targets:
- id: test-target-id
input:
this:
- is: a
- sample: input
yaml:.lamvery.secret.yml
key_id: xxxx-yyyy-zzzz
cipher_texts: {}
secret_files: {}
yaml:.lamvery.exclude.yml
- ^\.lamvery\.yml$
- ^\.lamvery\.event\.yml$
- ^\.lamvery\.secret\.yml$
- ^\.lamvery\.exclude\.yml$
yaml:.lamvery.hook.yml
build:
pre:
- pip install -r requirements.txt -t ./
post: []
API Gateway
yaml:.lamvery.api.yml
api_id: myipugal74
stage: dev
cors:
origin: '*'
methods:
- GET
- OPTION
headers:
- Content-Type
- X-Amz-Date
- Authorization
- X-Api-Key
configuration:
swagger: '2.0'
info:
title: Sample API
schemes:
- https
paths:
/:
get:
produces:
- application/json
parameters:
- name: sample
in: query
required: false
type: string
responses:
'200':
description: 200 response
schema:
$ref: '#/definitions/Sample'
definitions:
Sample:
type: object
hoge
, der von aws configure --profile hoge
festgelegt wird.
Dies ist diejenige, die Informationen zu Anmeldeinformationen und Regionseinstellungen enthält.
http://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-getting-started.htmltrue
), deaktiviert ( false
)python2.7
oder nodejs
.event
der Funktion).Zählen Sie einfach die Pfade der Dateien auf, die Sie mit regulären Ausdrücken ausschließen möchten
Derzeit wird nur "Build" unterstützt. build
ist der Prozess zum Erstellen eines Bereitstellungspakets.
Listen Sie die Befehle auf, die Sie vor "vor" und nach "nach" ausführen möchten.
API Gateway
api
Wird verwendet, wenn bei der Ausführung des Befehls keine Option angegeben ist.
https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/stages.htmlBei Befehlszeilenargumenten werden nur häufig verwendete aufgelistet. Wenn Sie alles wissen möchten, überprüfen Sie bitte README.
init
$ lamvery init -h
usage: lamvery init [-h] [-c CONF_FILE]
optional arguments:
-h, --help show this help message and exit
-c CONF_FILE, --conf-file CONF_FILE
Configuration YAML file (default: .lamvery.yml)
Vorlagen für verschiedene Einstellungsdateien erstellen Dies ist der erste Befehl, der nach der Installation ausgeführt wird.
generate
$ lamvery generate -h
usage: lamvery generate [-h] [-c CONF_FILE] -k KIND
optional arguments:
-h, --help show this help message and exit
-c CONF_FILE, --conf-file CONF_FILE
Configuration YAML file (default: .lamvery.yml)
-k KIND, --kind KIND The kind of the file # accepts "function"
Dies ist ein Befehl zum Generieren von Vorlagen für verschiedene Programme. Der zu generierende Dateityp wird durch "-k" angegeben, aber derzeit kann nur die Funktionsvorlage mit "function" generiert werden.
build
$ lamvery build -h
usage: lamvery build [-h] [-c CONF_FILE] [-s] [-l] [-e ENV]
optional arguments:
-h, --help show this help message and exit
-c CONF_FILE, --conf-file CONF_FILE
Configuration YAML file (default: .lamvery.yml)
-s, --single-file Only use the main lambda function file
-l, --no-libs Archiving without all libraries
-e ENV, --env ENV Environment variables that pass to the function
Erstellen Sie eine Archivdatei (ZIP) des Quellcodes und der Bibliothek. Zur Bestätigung oder beim Erstellen eines unregelmäßigen Flusses. Der Dateiname lautet "Funktionsname.zip". Wenn keine Einstellungsdatei vorhanden ist, handelt es sich um das Ausführungsverzeichnis name.zip.
deploy
$ lamvery deploy -h
usage: lamvery deploy [-h] [-a ALIAS] [-c CONF_FILE] [-d] [-s] [-l] [-p]
[-e ENV]
optional arguments:
-h, --help show this help message and exit
-a ALIAS, --alias ALIAS
Alias for a version of the function
-c CONF_FILE, --conf-file CONF_FILE
Configuration YAML file (default: .lamvery.yml)
-d, --dry-run Dry run
-s, --single-file Only use the main lambda function file
-l, --no-libs Archiving without all libraries
-p, --publish Publish the version as an atomic operation
-e ENV, --env ENV Environment variables that pass to the function
Führen Sie alle folgenden Schritte zusammen aus.
--Erstellen Sie ein Archiv mit Quellcode und Bibliotheken
Außerdem habe ich die Option Trockenlauf (nur den Unterschied ohne Aktualisierung anzeigen) hinzugefügt, die in codenize.tools nützlich ist, um die ich mich normalerweise kümmere. Es ist -d
oder --dry-run
.
Sie können Umgebungsvariablen mit -e
oder --env
angeben.
rollback
$ lamvery rollback -h
usage: lamvery rollback [-h] [-a ALIAS] [-c CONF_FILE] [-v VERSION]
optional arguments:
-h, --help show this help message and exit
-a ALIAS, --alias ALIAS
Alias for a version of the function
-c CONF_FILE, --conf-file CONF_FILE
Configuration YAML file (default: .lamvery.yml)
-v VERSION, --version VERSION
Version of the function
Spult "Bereitstellen" zurück. Es unterstützt auch Trockenlauf. Die Rollback-Spezifikationen sind in [hier] beschrieben (http://qiita.com/marcy-terui/items/db8dae512af3c553fe72#deploy--rollback).
configure
$ lamvery configure -h
usage: lamvery configure [-h] [-c CONF_FILE] [-d]
optional arguments:
-h, --help show this help message and exit
-c CONF_FILE, --conf-file CONF_FILE
Configuration YAML file (default: .lamvery.yml)
-d, --dry-run Dry run
Der Quellcode wird nicht aktualisiert, nur die Funktionseinstellungen werden aktualisiert. Natürlich unterstützt es Trockenlauf. Beachten Sie jedoch, dass bei der Versionierung die Einstellungen erst angezeigt werden, wenn Sie eine neue Version veröffentlichen. Es ist ein Befehl, der nur verwendet werden kann, wenn fast keine Versionierung vorhanden ist, da die Einstellungen auch bei der Bereitstellung synchronisiert werden.
set-alias
$ lamvery set-alias -h
usage: lamvery set-alias [-h] [-a ALIAS] [-c CONF_FILE] [-d] [-v VERSION]
[-t TARGET]
optional arguments:
-h, --help show this help message and exit
-a ALIAS, --alias ALIAS
Alias for a version of the function
-c CONF_FILE, --conf-file CONF_FILE
Configuration YAML file (default: .lamvery.yml)
-d, --dry-run Dry run
-v VERSION, --version VERSION
Version of the function
-t TARGET, --target TARGET
The alias of the version that is targeted for setting
alias
Legen Sie einen Alias fest. Dies ist auch mit Trockenlauf kompatibel. Geben Sie den Aliasnamen mit "-a" oder "--alias" an und geben Sie die Version an, die mit "-v" oder "--version" aliasiert werden soll.
encrypt
$ lamvery encrypt -h
usage: lamvery encrypt [-h] [-c CONF_FILE] [-n SECRET_NAME] [-s] text
positional arguments:
text The text value to encrypt
optional arguments:
-h, --help show this help message and exit
-c CONF_FILE, --conf-file CONF_FILE
Configuration YAML file (default: .lamvery.yml)
-n SECRET_NAME, --secret-name SECRET_NAME
The name of the secret value
-s, --store Store encripted value to the configuration file
(default: .lamvery.secret.yml)
Verschlüsseln Sie den angegebenen Wert mit KMS. Geben Sie den Namen an, der beim Abrufen mit "-n" oder "--name" verwendet werden soll, und fügen Sie "-s" oder "--store" hinzu, um die Verschlüsselung in der Einstellungsdatei mit diesem Namen zu registrieren.
encrypt-file
$ lamvery encrypt-file -h
usage: lamvery encrypt-file [-h] [-c CONF_FILE] -p PATH [-s] file
positional arguments:
file The file path to encrypt
optional arguments:
-h, --help show this help message and exit
-c CONF_FILE, --conf-file CONF_FILE
Configuration YAML file (default: .lamvery.yml)
-p PATH, --path PATH The path to put the decrypted file in the function
-s, --store Store encripted value to the configuration file
(default: .lamvery.secret.yml)
Verschlüsseln Sie die angegebene Datei mit KMS.
Geben Sie den Dateinamen an, der bei der Verarbeitung von Function mit -n
oder --name
verwendet werden soll. Wenn Sie -s
oder --store
hinzufügen, werden die Verschlüsselung und der Dateiname in der Einstellungsdatei mit diesem Namen registriert. Getan werden.
decrypt
$ lamvery decrypt -h
usage: lamvery decrypt [-h] [-c CONF_FILE] [-n SECRET_NAME]
optional arguments:
-h, --help show this help message and exit
-c CONF_FILE, --conf-file CONF_FILE
Configuration YAML file (default: .lamvery.yml)
-n SECRET_NAME, --secret-name SECRET_NAME
The name of the secret value
Entschlüsselt die Verschlüsselung in der Konfigurationsdatei.
Geben Sie den zum Zeitpunkt der Verschlüsselung festgelegten Namen mit -n
oder --name
an.
decrypt-file
ist nicht implementiert, da es sich um eine Story handelt, wenn Sie sich die Originaldatei w ansehen
events Richten Sie CloudWatch-Ereignisse ein. Natürlich unterstützt es Trockenlauf. Es handelt sich um eine differenzielle Aktualisierung. Wenn keine Ereigniseinstellung vorhanden ist, wird sie erstellt und, falls vorhanden, aktualisiert. Ereignisse, die nicht im mit der Funktion verknüpften Ereignis beschrieben sind, werden gelöscht, aber diejenigen, die einer anderen Funktion zugeordnet sind, werden nur aus dem Ziel entfernt und nicht gelöscht.
lamvery events [-k]
invoke
$ lamvery invoke -h
usage: lamvery invoke [-h] [-a ALIAS] [-c CONF_FILE] [-v VERSION] json
positional arguments:
json The JSON string or file that pass to the function
optional arguments:
-h, --help show this help message and exit
-a ALIAS, --alias ALIAS
Alias for a version of the function
-c CONF_FILE, --conf-file CONF_FILE
Configuration YAML file (default: .lamvery.yml)
-v VERSION, --version VERSION
Version of the function
Funktion starten.
Das resultierende Protokoll wird an die Standardausgabe ausgegeben.
Geben Sie die Eingabe mit einem Argument an. Wenn Sie es im JSON-Format übergeben, wird es unverändert übergeben. Wenn Sie den Pfad der Datei angeben, in die JSON geschrieben ist, wird der Inhalt übergeben.
Sie können auch die Version (-v
) und den Alias ( -a
) angeben.
logs
$ lamvery logs -h
usage: lamvery logs [-h] [-c CONF_FILE] [-f] [-F FILTER] [-i INTERVAL]
[-s START]
optional arguments:
-h, --help show this help message and exit
-c CONF_FILE, --conf-file CONF_FILE
Configuration YAML file (default: .lamvery.yml)
-f, --follow Watch the log events and updates the display (like
`tail -f`)
-F FILTER, --filter FILTER
Filtering pattern for the log messages
-i INTERVAL, --interval INTERVAL
Intervals(seconds) to watch the log events
-s START, --start START
Time to start the log events watching
Zeigen Sie die in CloudWatch-Protokollen ausgegebenen Funktionsprotokolle an. Sie können "-f" verwenden, um "tail -f" weiterzuspielen, oder "-s" verwenden, um das Startdatum und die Startzeit für das Surfen anzugeben.
api
$ lamvery api -h
usage: lamvery api [-h] [-c CONF_FILE] [-d] [-n] [-r] [-s STAGE] [-w]
optional arguments:
-h, --help show this help message and exit
-c CONF_FILE, --conf-file CONF_FILE
Configuration YAML file (default: .lamvery.yml)
-d, --dry-run Dry run
-n, --no-integrate Without automatic integration
-r, --remove Remove your API
-s STAGE, --stage STAGE
The name of the stage in API Gateway
-w, --write-id Write the id of your API to the configuration file
(default: .lamvery.api.yml)
Stellen Sie die API für das API-Gateway bereit. Fügen Sie -r
hinzu, um es zu entfernen.
Sie können das Verhalten der automatischen Einstellung von "x-amazon-apigateway-Integration" usw. mit "-n" unterdrücken und so bereitstellen, wie es in der Einstellungsdatei geschrieben ist.
https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:Decrypt"
],
"Resource": [
"arn:aws:kms:us-east-1:<your-account-number>:key/<your-key-id>"
]
}
]
}
lamvery init
lamvery generate -k function
yaml:.lamvery.yml
profile: default
region: us-east-1
configuration:
name: sample_lambda_function
runtime: python2.7 # or nodejs
role: arn:aws:iam::000000000000:role/lambda_basic_execution
handler: lambda_function.lambda_handler
description: This is sample lambda function.
timeout: 10
memory_size: 128
yaml:.lamvery.secret.yml
key_id: a5ed61a9-fa57-4ebf-9b3f-457b95de05ce # <-Hier! !! !!
cipher_texts: {}
lamvery encrypt -s -n foo "This is a secret"
lambda_function.py
import lamvery
def lambda_handler(event, context):
print(lamvery.secret.get('foo'))
lambda_function.js
var lamvery = require('./lamvery.js');
exports.lambda_handler = function(event, context) {
lamvery.secret.get('foo', function(err, data) {
console.log(data);
});
}
lamvery deploy
lambery invoke {}
Sie erhalten das entschlüsselte Ergebnis wie folgt.
START RequestId: 13829c9c-9f13-11e5-921b-6f048cff3c2d Version: $LATEST
This is a secret
END RequestId: 13829c9c-9f13-11e5-921b-6f048cff3c2d
Es hat viele Funktionen, aber wir planen, weitere hinzuzufügen! Wenn Sie möchten, probieren Sie es bitte aus und geben Sie uns Ihr Feedback :-)
Klicken Sie hier für Feedback ↓ https://github.com/marcy-terui/lamvery
[^ 1]: Eine Bibliothek, die eine isolierte virtuelle Umgebung für Python-Bibliotheken usw. bereitstellt.
https://pypi.python.org/pypi/virtualenv
[^ 2]: Stand 16. Dezember 2015. Es gibt keine API (obwohl diese möglicherweise intern ist) oder AWS hat das Sprichwort "Mit API sprechen".
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/getting-started-scheduled-events.html
[^ 3]: .py
ist die Rohquelle, .pyc
ist die kompilierte Quelle
[^ 4]: Ich habe keine Bank, also ist es eine Schande, aber da die Kompilierung verkürzt ist, ist die Startzeit sehr kurz, aber kann sie sich verbessern?
[^ 5]: Wenn Sie virtualenv nicht verwenden, funktioniert die Quelle, die zufällig in der Systembibliothek funktioniert hat, nicht, wenn Sie lokal sind. Es gibt also keine Möglichkeit, sie nicht zu verwenden, oder?
Recommended Posts