ich das folgende Skript in AWS Lambda leite:„Boto für dieses Modul erforderlich“ Fehler ansible
#!/usr/bin/python
from __future__ import print_function
import json
import os
import ansible.inventory
import ansible.playbook
import ansible.runner
import ansible.constants
from ansible import utils
from ansible import callbacks
print('Loading function')
def run_playbook(**kwargs):
stats = callbacks.AggregateStats()
playbook_cb = callbacks.PlaybookCallbacks(verbose=utils.VERBOSITY)
runner_cb = callbacks.PlaybookRunnerCallbacks(
stats, verbose=utils.VERBOSITY)
# use /tmp instead of $HOME
ansible.constants.DEFAULT_REMOTE_TMP = '/tmp/ansible'
out = ansible.playbook.PlayBook(
callbacks=playbook_cb,
runner_callbacks=runner_cb,
stats=stats,
**kwargs
).run()
return out
def lambda_handler(event, context):
return main()
def main():
out = run_playbook(
playbook='little.yml',
inventory=ansible.inventory.Inventory(['localhost'])
)
return(out)
if __name__ == '__main__':
main()
Allerdings bekomme ich folgende Fehlermeldung: failed=True msg='boto required for this module'
Doch nach diesem Kommentar (https://github.com/ansible/ansible/issues/5734#issuecomment-33135727), Es klappt.
Aber ich verstehe nicht, wie erwähne ich das in meinem Skript? Oder kann ich eine separate hosts
Datei haben und sie in das Skript aufnehmen, so wie ich mein Playbook nenne?
Wenn ja, wie?
[EDIT - 1] ich die Linie inventory=ansible.inventory.Inventory('hosts')
mit Hosts hinzugefügt haben Datei als:
[localhost]
127.0.0.1 ansible_python_interpreter=/usr/local/bin/python
Aber ich diesen Fehler: /bin/sh: /usr/local/bin/python: No such file or directory
Also, wo ist Python innerhalb AWS befindet Lambda?
Ich installierte boto
wie ich andere Pakete in dem Lambda unter Deployment-Paket installiert: pip install boto -t <folder-name>
Warum wird nicht erwähnt, wie Sie Boto installiert haben? Stattdessen verweisen Sie auf einen Artikel über die Standard-Verzeichnisstruktur des Homebrew-Paketmanagers auf macOS. Wie ist die Verbindung zu AWS Lambda hier? – techraf
@techraf Die Antwort wurde aktualisiert. In AWS Lambda sollten sich alle Pakete und Skripts im selben Stammordner befinden. [Das Skript funktioniert gut in meinem lokalen]. Es muss also ein Problem geben, wo Lambda das Boto-Paket abholt. – Dawny33