CommandableLambdaClient

Abstract client that calls commandable AWS Lambda Functions.

Implements: LambdaClient

Description

The CommandableLambdaClient class allows you to create an abstract client that calls commandable AWS Lambda Functions.

Important points

Commandable services are generated automatically for ICommandable. Each command is exposed as an action determined by the “cmd” parameter.

Configuration parameters

  • connections:
    • discovery_key: (optional) key to retrieve the connection from IDiscovery
    • region: (optional) AWS region
  • credentials:
    • store_key: (optional) key to retrieve the credentials from ICredentialStore
    • access_id: AWS access/client id
    • access_key: AWS access/client key
  • options:
    • connect_timeout: (optional) connection timeout in milliseconds (default: 10 sec)

References

  • *:logger:*:*:1.0 - (optional) ILogger components to pass log messages.
  • *:counters:*:*:1.0 - (optional) ICounters components to pass collected measurements.
  • *:discovery:*:*:1.0 - (optional) IDiscovery services to resolve connection.
  • *:credential-store:*:*:1.0 - (optional) Credential stores to resolve credentials.

Constructors

Creates a new instance of this client.

constructor(name: str)

  • name: str - a service name.

Instance methods

call_command

Calls a remote action in AWS Lambda function. The name of the action is added as “cmd” parameter to the action parameters.

call_command(cmd: str, context: Optional[IContext], params: dict): Any

  • cmd: str - action name
  • context: IContext - (optional) a context to trace execution through a call chain.
  • params: dict - command parameters.
  • returns: Any - action result.

Examples

class MyLambdaClient(CommandableLambdaClient, IMyClient):

    ...

    def get_data(self, context: str, id: str) -> Any
        return this.callCommand("get_data", context, { 'id': id })

    ...

client = MyLambdaClient()

client.configure(ConfigParams.from_еuples(
    "connection.region", "us-east-1",
    "connection.access_id", "XXXXXXXXXXX",
    "connection.access_key", "XXXXXXXXXXX",
    "connection.arn", "YYYYYYYYYYYYY"
))

result = client.get_data("123", "1")
...

See also