Я пытаюсь настроить лямбду AWS, которая запустит сеанс SSM в моем экземпляре EC2 и запустит команду. Для простоты сейчас я просто пытаюсь запустить ls. Вот моя лямбда-функция:
import json
import boto3
def lambda_handler(commands, context):
"""Runs commands on remote linux instances
:param client: a boto/boto3 ssm client
:param commands: string, each one a command to execute on the instance
:return: the response from the send_command function (check the boto3 docs for ssm client.send_command() )
"""
client = boto3.client('ssm')
print ("Hello world")
resp = client.send_command(
DocumentName="AWS-RunShellScript",
# Would normally pass commands param here but hardcoding it instead for testing
Parameters={"commands":["ls"]},
InstanceIds=["i-01112223333"],
)
return resp
Однако, когда я запускаю «Тест» для этой функции, я получаю следующий вывод журнала:
START RequestId: d028de04-4004-4a0p-c8d2-975755c84777 Version: $LATEST
Hello world
[ERROR] Runtime.MarshalError: Unable to marshal response: datetime.datetime(2020, 5, 12, 19, 34, 36, 349000, tzinfo=tzlocal()) is not JSON serializable
END RequestId: d028de04-4asdd4-4a0f-b8d2-9asd847813
REPORT RequestId: d42asd04-44d4-4a0f-b9d2-275755c6557 Duration: 1447.76 ms Billed Duration: 1500 ms Memory Size: 128 MB Max Memory Used: 76 MB Init Duration: 301.68 ms
Я не знаю, что означает эта ошибка Runtime.MarshalError: Unable to marshal response и как ее исправить.
Полезная нагрузка, которую я передаю для запуска тестовой лямбды, не должна иметь значения, поскольку я не использую параметр команд, но это:
{
"command": "ls"
}
Любая помощь будет оценена