in src/rpdk/core/invoke.py [0:0]
def invoke(args):
_validate_sam_args(args)
project = Project()
project.load()
client = ResourceClient(
args.function_name,
args.endpoint,
args.region,
project.schema,
{},
executable_entrypoint=project.executable_entrypoint,
docker_image=args.docker_image,
)
action = Action[args.action]
try:
request = json.load(args.request)
except ValueError as e:
raise SysExitRecommendedError(f"Invalid JSON: {e}") from e
payload = client._make_payload(
action,
request["desiredResourceState"],
request["previousResourceState"],
request.get("typeConfiguration"),
)
current_invocation = 0
try:
while _needs_reinvocation(args.max_reinvoke, current_invocation):
print("=== Handler input ===")
payload_to_log = {
"callbackContext": payload["callbackContext"],
"action": payload["action"],
"requestData": {
"resourceProperties": payload["requestData"]["resourceProperties"],
"previousResourceProperties": payload["requestData"][
"previousResourceProperties"
],
},
"region": payload["region"],
"awsAccountId": payload["awsAccountId"],
"bearerToken": payload["bearerToken"],
}
print(json.dumps({**payload_to_log}, indent=2))
response = client._call(payload)
current_invocation = current_invocation + 1
print("=== Handler response ===")
print(json.dumps(response, indent=2))
status = OperationStatus[response["status"]]
if status != OperationStatus.IN_PROGRESS:
break
sleep(response.get("callbackDelaySeconds", 0))
payload["callbackContext"] = response.get("callbackContext")
except KeyboardInterrupt:
pass