-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Expand file tree
/
Copy pathcommand.py
More file actions
119 lines (109 loc) · 5.05 KB
/
Copy pathcommand.py
File metadata and controls
119 lines (109 loc) · 5.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
"""
Invoke Command Class.
"""
from click import Context, style
from samcli.cli.core.command import CoreCommand
from samcli.cli.row_modifiers import RowDefinition, ShowcaseRowModifier
from samcli.commands.local.start_lambda.core.formatters import InvokeStartLambdaCommandHelpTextFormatter
from samcli.commands.local.start_lambda.core.options import OPTIONS_INFO
class InvokeLambdaCommand(CoreCommand):
class CustomFormatterContext(Context):
formatter_class = InvokeStartLambdaCommandHelpTextFormatter
context_class = CustomFormatterContext
@staticmethod
def format_examples(ctx: Context, formatter: InvokeStartLambdaCommandHelpTextFormatter):
AWS_SDK_EXAMPLE = """
self.lambda_client = boto3.client('lambda',
endpoint_url="http://127.0.0.1:3001",
use_ssl=False,
verify=False,
config=Config(signature_version=UNSIGNED,
read_timeout=0,
retries={'max_attempts': 0}))
self.lambda_client.invoke(FunctionName="HelloWorldFunction")
"""
with formatter.indented_section(name="Examples", extra_indents=1):
with formatter.indented_section(name="Setup", extra_indents=1):
formatter.write_rd(
[
RowDefinition(
text="\n",
),
RowDefinition(
name="Start the local lambda endpoint for all functions",
),
RowDefinition(
name=style(f"$ {ctx.command_path}"),
extra_row_modifiers=[ShowcaseRowModifier()],
),
]
)
formatter.write_rd(
[
RowDefinition(
text="\n",
),
RowDefinition(
name="Start the local lambda endpoint for one function",
),
RowDefinition(
name=style(f"$ {ctx.command_path} HelloWorldFunction"),
extra_row_modifiers=[ShowcaseRowModifier()],
),
]
)
formatter.write_rd(
[
RowDefinition(
text="\n",
),
RowDefinition(
name="Start the local lambda endpoint for multiple functions",
),
RowDefinition(
name=style(f"$ {ctx.command_path} HelloWorldFunctionOne HelloWorldFunctionTwo"),
extra_row_modifiers=[ShowcaseRowModifier()],
),
]
)
with formatter.indented_section(name="Invoke local Lambda endpoint", extra_indents=1):
formatter.write_rd(
[
RowDefinition(
text="\n",
),
RowDefinition(
name="Use the AWS CLI.",
),
RowDefinition(
name=style(
"$ aws lambda invoke --function-name HelloWorldFunction "
"--endpoint-url http://127.0.0.1:3001 --no-verify-ssl out.txt"
),
extra_row_modifiers=[ShowcaseRowModifier()],
),
]
)
formatter.write_rd(
[
RowDefinition(
text="\n",
),
RowDefinition(
name="Use AWS SDK in automated tests.",
),
RowDefinition(
name=AWS_SDK_EXAMPLE,
extra_row_modifiers=[ShowcaseRowModifier()],
),
]
)
def format_options(self, ctx: Context, formatter: InvokeStartLambdaCommandHelpTextFormatter) -> None: # type:ignore
# NOTE(sriram-mv): `ignore` is put in place here for mypy even though it is the correct behavior,
# as the `formatter_class` can be set in subclass of Command. If ignore is not set,
# mypy raises argument needs to be HelpFormatter as super class defines it.
self.format_description(formatter)
InvokeLambdaCommand.format_examples(ctx, formatter)
CoreCommand._format_options(
ctx=ctx, params=self.get_params(ctx), formatter=formatter, formatting_options=OPTIONS_INFO
)