@depup/artillery 2.0.30-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -0
- package/bin/run +29 -0
- package/bin/run.cmd +3 -0
- package/changes.json +138 -0
- package/console-reporter.js +1 -0
- package/lib/artillery-global.js +33 -0
- package/lib/cli/banner.js +8 -0
- package/lib/cli/common-flags.js +80 -0
- package/lib/cli/hooks/version.js +20 -0
- package/lib/cmds/dino.js +109 -0
- package/lib/cmds/quick.js +122 -0
- package/lib/cmds/report.js +34 -0
- package/lib/cmds/run-aci.js +91 -0
- package/lib/cmds/run-fargate.js +192 -0
- package/lib/cmds/run-lambda.js +96 -0
- package/lib/cmds/run.js +671 -0
- package/lib/console-capture.js +92 -0
- package/lib/console-reporter.js +438 -0
- package/lib/create-bom/built-in-plugins.js +12 -0
- package/lib/create-bom/create-bom.js +301 -0
- package/lib/dispatcher.js +9 -0
- package/lib/dist.js +222 -0
- package/lib/index.js +5 -0
- package/lib/launch-platform.js +439 -0
- package/lib/load-plugins.js +113 -0
- package/lib/platform/aws/aws-cloudwatch.js +106 -0
- package/lib/platform/aws/aws-create-sqs-queue.js +58 -0
- package/lib/platform/aws/aws-ensure-s3-bucket-exists.js +78 -0
- package/lib/platform/aws/aws-get-account-id.js +26 -0
- package/lib/platform/aws/aws-get-bucket-region.js +18 -0
- package/lib/platform/aws/aws-get-credentials.js +28 -0
- package/lib/platform/aws/aws-get-default-region.js +26 -0
- package/lib/platform/aws/aws-whoami.js +15 -0
- package/lib/platform/aws/constants.js +7 -0
- package/lib/platform/aws/iam-cf-templates/aws-iam-fargate-cf-template.yml +219 -0
- package/lib/platform/aws/iam-cf-templates/aws-iam-lambda-cf-template.yml +125 -0
- package/lib/platform/aws/iam-cf-templates/gh-oidc-fargate.yml +241 -0
- package/lib/platform/aws/iam-cf-templates/gh-oidc-lambda.yml +153 -0
- package/lib/platform/aws-ecs/ecs.js +247 -0
- package/lib/platform/aws-ecs/legacy/aws-util.js +134 -0
- package/lib/platform/aws-ecs/legacy/bom.js +528 -0
- package/lib/platform/aws-ecs/legacy/constants.js +27 -0
- package/lib/platform/aws-ecs/legacy/create-s3-client.js +24 -0
- package/lib/platform/aws-ecs/legacy/create-test.js +247 -0
- package/lib/platform/aws-ecs/legacy/errors.js +34 -0
- package/lib/platform/aws-ecs/legacy/find-public-subnets.js +149 -0
- package/lib/platform/aws-ecs/legacy/plugins/artillery-plugin-inspect-script/index.js +27 -0
- package/lib/platform/aws-ecs/legacy/plugins/artillery-plugin-sqs-reporter/azure-aqs.js +80 -0
- package/lib/platform/aws-ecs/legacy/plugins/artillery-plugin-sqs-reporter/index.js +202 -0
- package/lib/platform/aws-ecs/legacy/plugins.js +16 -0
- package/lib/platform/aws-ecs/legacy/run-cluster.js +1994 -0
- package/lib/platform/aws-ecs/legacy/sqs-reporter.js +401 -0
- package/lib/platform/aws-ecs/legacy/tags.js +22 -0
- package/lib/platform/aws-ecs/legacy/test-run-status.js +9 -0
- package/lib/platform/aws-ecs/legacy/time.js +67 -0
- package/lib/platform/aws-ecs/legacy/util.js +97 -0
- package/lib/platform/aws-ecs/worker/Dockerfile +64 -0
- package/lib/platform/aws-ecs/worker/helpers.sh +80 -0
- package/lib/platform/aws-ecs/worker/loadgen-worker +656 -0
- package/lib/platform/aws-lambda/dependencies.js +130 -0
- package/lib/platform/aws-lambda/index.js +734 -0
- package/lib/platform/aws-lambda/lambda-handler/a9-handler-dependencies.js +73 -0
- package/lib/platform/aws-lambda/lambda-handler/a9-handler-helpers.js +43 -0
- package/lib/platform/aws-lambda/lambda-handler/a9-handler-index.js +235 -0
- package/lib/platform/aws-lambda/lambda-handler/package.json +15 -0
- package/lib/platform/aws-lambda/prices.js +29 -0
- package/lib/platform/az/aci.js +694 -0
- package/lib/platform/az/aqs-queue-consumer.js +88 -0
- package/lib/platform/az/regions.js +52 -0
- package/lib/platform/cloud/api.js +72 -0
- package/lib/platform/cloud/cloud.js +448 -0
- package/lib/platform/cloud/http-client.js +19 -0
- package/lib/platform/local/artillery-worker-local.js +154 -0
- package/lib/platform/local/index.js +174 -0
- package/lib/platform/local/worker.js +261 -0
- package/lib/platform/worker-states.js +13 -0
- package/lib/queue-consumer/index.js +56 -0
- package/lib/stash.js +41 -0
- package/lib/telemetry.js +78 -0
- package/lib/util/await-on-ee.js +24 -0
- package/lib/util/generate-id.js +9 -0
- package/lib/util/parse-tag-string.js +21 -0
- package/lib/util/prepare-test-execution-plan.js +216 -0
- package/lib/util/sleep.js +7 -0
- package/lib/util/validate-script.js +132 -0
- package/lib/util.js +294 -0
- package/lib/utils-config.js +31 -0
- package/package.json +323 -0
- package/types.d.ts +317 -0
- package/util.js +1 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// Copyright (c) Artillery Software Inc.
|
|
2
|
+
// SPDX-License-Identifier: BUSL-1.1
|
|
3
|
+
//
|
|
4
|
+
// Non-evaluation use of Artillery on Azure requires a commercial license
|
|
5
|
+
|
|
6
|
+
const { Command, Flags, Args } = require('@oclif/core');
|
|
7
|
+
const { CommonRunFlags } = require('../cli/common-flags');
|
|
8
|
+
|
|
9
|
+
const RunCommand = require('./run');
|
|
10
|
+
|
|
11
|
+
class RunACICommand extends Command {
|
|
12
|
+
static aliases = ['run:aci'];
|
|
13
|
+
static strict = false;
|
|
14
|
+
|
|
15
|
+
async run() {
|
|
16
|
+
const { flags, argv, args } = await this.parse(RunACICommand);
|
|
17
|
+
flags.platform = 'az:aci';
|
|
18
|
+
|
|
19
|
+
flags['platform-opt'] = [
|
|
20
|
+
`region=${flags.region}`,
|
|
21
|
+
`count=${flags.count}`,
|
|
22
|
+
`cpu=${flags.cpu}`,
|
|
23
|
+
`memory=${flags.memory}`,
|
|
24
|
+
`tenant-id=${flags['tenant-id']}`,
|
|
25
|
+
`subscription-id=${flags['subscription-id']}`,
|
|
26
|
+
`storage-account=${flags['storage-account']}`,
|
|
27
|
+
`blob-container=${flags['blob-container']}`,
|
|
28
|
+
`resource-group=${flags['resource-group']}`
|
|
29
|
+
];
|
|
30
|
+
|
|
31
|
+
RunCommand.runCommandImplementation(flags, argv, args);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
RunACICommand.description = `launch a test using Azure ACI
|
|
36
|
+
Launch a test on Azure ACI
|
|
37
|
+
|
|
38
|
+
Examples:
|
|
39
|
+
|
|
40
|
+
To run a test script in my-test.yml on Azure ACI in eastus region
|
|
41
|
+
with 10 workers:
|
|
42
|
+
|
|
43
|
+
$ artillery run:aci --region eastus --count 10 my-test.yml
|
|
44
|
+
`;
|
|
45
|
+
RunACICommand.flags = {
|
|
46
|
+
...CommonRunFlags,
|
|
47
|
+
count: Flags.string({
|
|
48
|
+
default: '1'
|
|
49
|
+
}),
|
|
50
|
+
region: Flags.string({
|
|
51
|
+
description: 'Azure region to run the test in',
|
|
52
|
+
default: 'eastus'
|
|
53
|
+
}),
|
|
54
|
+
cpu: Flags.string({
|
|
55
|
+
description:
|
|
56
|
+
'Number of CPU cores per worker (defaults to 4 CPUs). A number between 1-4.'
|
|
57
|
+
}),
|
|
58
|
+
memory: Flags.string({
|
|
59
|
+
description:
|
|
60
|
+
'Memory in GB per worker (defaults to 8 GB). A number between 1-16.'
|
|
61
|
+
}),
|
|
62
|
+
'tenant-id': Flags.string({
|
|
63
|
+
description:
|
|
64
|
+
'Azure tenant ID. May also be set via AZURE_TENANT_ID environment variable.'
|
|
65
|
+
}),
|
|
66
|
+
'subscription-id': Flags.string({
|
|
67
|
+
description:
|
|
68
|
+
'Azure subscription ID. May also be set via AZURE_SUBSCRIPTION_ID environment variable.'
|
|
69
|
+
}),
|
|
70
|
+
'storage-account': Flags.string({
|
|
71
|
+
description:
|
|
72
|
+
'Azure Blob Storage account name. May also be set via AZURE_STORAGE_ACCOUNT environment variable.'
|
|
73
|
+
}),
|
|
74
|
+
'blob-container': Flags.string({
|
|
75
|
+
description:
|
|
76
|
+
'Azure Blob Storage container name. May also be set via AZURE_STORAGE_BLOB_CONTAINER environment variable.'
|
|
77
|
+
}),
|
|
78
|
+
'resource-group': Flags.string({
|
|
79
|
+
description:
|
|
80
|
+
'Azure Resource Group name. May also be set via AZURE_RESOURCE_GROUP environment variable.'
|
|
81
|
+
})
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
RunACICommand.args = {
|
|
85
|
+
script: Args.string({
|
|
86
|
+
name: 'script',
|
|
87
|
+
required: true
|
|
88
|
+
})
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
module.exports = RunACICommand;
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
4
|
+
|
|
5
|
+
const { Command, Flags, Args } = require('@oclif/core');
|
|
6
|
+
const { CommonRunFlags } = require('../cli/common-flags');
|
|
7
|
+
const telemetry = require('../telemetry');
|
|
8
|
+
|
|
9
|
+
const runCluster = require('../platform/aws-ecs/legacy/run-cluster');
|
|
10
|
+
const { supportedRegions } = require('../platform/aws-ecs/legacy/util');
|
|
11
|
+
const PlatformECS = require('../platform/aws-ecs/ecs');
|
|
12
|
+
const { ECS_WORKER_ROLE_NAME } = require('../platform/aws/constants');
|
|
13
|
+
const { Plugin: CloudPlugin } = require('../platform/cloud/cloud');
|
|
14
|
+
const generateId = require('../util/generate-id');
|
|
15
|
+
const dotenv = require('dotenv');
|
|
16
|
+
const path = require('node:path');
|
|
17
|
+
const fs = require('node:fs');
|
|
18
|
+
class RunCommand extends Command {
|
|
19
|
+
static aliases = ['run:fargate', 'run:ecs', 'run-ecs'];
|
|
20
|
+
// Enable multiple args:
|
|
21
|
+
static strict = false;
|
|
22
|
+
|
|
23
|
+
async run() {
|
|
24
|
+
const { flags, _argv, args } = await this.parse(RunCommand);
|
|
25
|
+
flags['platform-opt'] = [`region=${flags.region}`];
|
|
26
|
+
|
|
27
|
+
flags.platform = 'aws:ecs';
|
|
28
|
+
|
|
29
|
+
if (flags.dotenv) {
|
|
30
|
+
const dotEnvPath = path.resolve(process.cwd(), flags.dotenv);
|
|
31
|
+
try {
|
|
32
|
+
fs.statSync(dotEnvPath);
|
|
33
|
+
} catch (_err) {
|
|
34
|
+
console.log(`WARNING: could not read dotenv file: ${flags.dotenv}`);
|
|
35
|
+
}
|
|
36
|
+
dotenv.config({ path: dotEnvPath });
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const testRunId = process.env.ARTILLERY_TEST_RUN_ID || generateId('t');
|
|
40
|
+
global.artillery.testRunId = testRunId;
|
|
41
|
+
|
|
42
|
+
const cloud = new CloudPlugin(null, null, { flags });
|
|
43
|
+
global.artillery.cloudEnabled = cloud.enabled;
|
|
44
|
+
if (cloud.enabled) {
|
|
45
|
+
try {
|
|
46
|
+
await cloud.init();
|
|
47
|
+
} catch (err) {
|
|
48
|
+
if (err.name === 'CloudAPIKeyMissing') {
|
|
49
|
+
console.error(
|
|
50
|
+
'Error: API key is required to record test results to Artillery Cloud'
|
|
51
|
+
);
|
|
52
|
+
console.error(
|
|
53
|
+
'See https://docs.art/get-started-cloud for more information'
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
process.exit(7);
|
|
57
|
+
} else if (err.name === 'APIKeyUnauthorized') {
|
|
58
|
+
console.error(
|
|
59
|
+
'Error: API key is not recognized or is not authorized to record tests'
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
process.exit(7);
|
|
63
|
+
} else if (err.name === 'PingFailed') {
|
|
64
|
+
console.error(
|
|
65
|
+
'Error: unable to reach Artillery Cloud API. This could be due to firewall restrictions on your network'
|
|
66
|
+
);
|
|
67
|
+
console.log('Please see https://docs.art/cloud/err-ping');
|
|
68
|
+
process.exit(7);
|
|
69
|
+
} else {
|
|
70
|
+
console.error(
|
|
71
|
+
'Error: something went wrong connecting to Artillery Cloud'
|
|
72
|
+
);
|
|
73
|
+
console.error('Check https://status.artillery.io for status updates');
|
|
74
|
+
console.error(err);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
flags.taskRoleName = flags['task-role-name'] || ECS_WORKER_ROLE_NAME;
|
|
80
|
+
|
|
81
|
+
const ECS = new PlatformECS(
|
|
82
|
+
null,
|
|
83
|
+
null,
|
|
84
|
+
{},
|
|
85
|
+
{
|
|
86
|
+
testRunId: 'foo',
|
|
87
|
+
region: flags.region,
|
|
88
|
+
taskRoleName: flags.taskRoleName
|
|
89
|
+
}
|
|
90
|
+
);
|
|
91
|
+
await ECS.init();
|
|
92
|
+
|
|
93
|
+
process.env.USE_NOOP_BACKEND_STORE = 'true';
|
|
94
|
+
|
|
95
|
+
telemetry.capture('run:fargate', {
|
|
96
|
+
region: flags.region,
|
|
97
|
+
count: flags.count
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
// Delegate the rest to existing implementation:
|
|
101
|
+
runCluster(args.script, flags);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
RunCommand.description = `launch a test using AWS ECS/Fargate
|
|
106
|
+
|
|
107
|
+
Examples:
|
|
108
|
+
|
|
109
|
+
To launch a test with 10 load generating workers using AWS Fargate in us-east-1:
|
|
110
|
+
|
|
111
|
+
$ artillery run:fargate --count 10 --region us-east-1 my-test.yml
|
|
112
|
+
`;
|
|
113
|
+
|
|
114
|
+
RunCommand.flags = {
|
|
115
|
+
...CommonRunFlags,
|
|
116
|
+
count: Flags.integer({
|
|
117
|
+
description: 'Number of load generator workers to launch'
|
|
118
|
+
}),
|
|
119
|
+
cluster: Flags.string({
|
|
120
|
+
description: 'Name of the Fargate/ECS cluster to run the test on'
|
|
121
|
+
}),
|
|
122
|
+
region: Flags.string({
|
|
123
|
+
char: 'r',
|
|
124
|
+
description: 'The AWS region to run in',
|
|
125
|
+
options: supportedRegions,
|
|
126
|
+
default: 'us-east-1'
|
|
127
|
+
}),
|
|
128
|
+
secret: Flags.string({
|
|
129
|
+
multiple: true,
|
|
130
|
+
description:
|
|
131
|
+
'Make secrets available to workers. The secret must exist in SSM parameter store for the given region, under /artilleryio/<SECRET_NAME>'
|
|
132
|
+
}),
|
|
133
|
+
'launch-type': Flags.string({
|
|
134
|
+
description: 'The launch type to use for the test. Defaults to Fargate.',
|
|
135
|
+
options: ['ecs:fargate', 'ecs:ec2']
|
|
136
|
+
}),
|
|
137
|
+
spot: Flags.boolean({
|
|
138
|
+
description:
|
|
139
|
+
'Use Fargate Spot (https://docs.art/fargate-spot) Ignored when --launch-type is set to ecs:ec2'
|
|
140
|
+
}),
|
|
141
|
+
'launch-config': Flags.string({
|
|
142
|
+
description:
|
|
143
|
+
'JSON to customize launch configuration of ECS/Fargate tasks (see https://www.artillery.io/docs/reference/cli/run-fargate#using---launch-config)'
|
|
144
|
+
}),
|
|
145
|
+
'container-dns-servers': Flags.string({
|
|
146
|
+
description:
|
|
147
|
+
'Comma-separated list of DNS servers for Artillery container. Maps to dnsServers parameter in ECS container definition'
|
|
148
|
+
}),
|
|
149
|
+
'task-ephemeral-storage': Flags.string({
|
|
150
|
+
description:
|
|
151
|
+
'Ephemeral storage in GiB for the worker task. Maps to ephemeralStorage parameter in ECS container definition. Fargate-only.',
|
|
152
|
+
type: 'integer'
|
|
153
|
+
}),
|
|
154
|
+
|
|
155
|
+
'subnet-ids': Flags.string({
|
|
156
|
+
description:
|
|
157
|
+
'Comma-separated list of AWS VPC subnet IDs to launch Fargate tasks in'
|
|
158
|
+
}),
|
|
159
|
+
'security-group-ids': Flags.string({
|
|
160
|
+
description:
|
|
161
|
+
'Comma-separated list of AWS VPC security group IDs to launch Fargate tasks in'
|
|
162
|
+
}),
|
|
163
|
+
'task-role-name': Flags.string({
|
|
164
|
+
description: 'Custom IAM role name for Fargate containers to assume'
|
|
165
|
+
}),
|
|
166
|
+
cpu: Flags.string({
|
|
167
|
+
description:
|
|
168
|
+
'Set task vCPU on Fargate (defaults to 4 vCPU). Value may be set as a number of vCPUs between 1-16 (e.g. 4), or as number of vCPU units (e.g. 4096).'
|
|
169
|
+
}),
|
|
170
|
+
memory: Flags.string({
|
|
171
|
+
description:
|
|
172
|
+
'Set task memory on Fargate (defaults to 8 GB). Value may be set as number of GB between 1-120 (e.g. 8), or as MiB (e.g. 8192)'
|
|
173
|
+
}),
|
|
174
|
+
packages: Flags.string({
|
|
175
|
+
description:
|
|
176
|
+
'Path to package.json file which lists dependencies for the test script'
|
|
177
|
+
}),
|
|
178
|
+
'max-duration': Flags.string({
|
|
179
|
+
description: 'Maximum duration of the test run'
|
|
180
|
+
}),
|
|
181
|
+
'no-assign-public-ip': Flags.boolean({
|
|
182
|
+
description:
|
|
183
|
+
'Turn off the default behavior of assigning public IPs to Fargate worker tasks. When this option is used you must make sure tasks have a route to the internet, i.e. via a NAT gateway attached to a private subnet',
|
|
184
|
+
default: false
|
|
185
|
+
})
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
RunCommand.args = {
|
|
189
|
+
script: Args.string()
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
module.exports = RunCommand;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
const { Command, Flags, Args } = require('@oclif/core');
|
|
2
|
+
const { CommonRunFlags } = require('../cli/common-flags');
|
|
3
|
+
|
|
4
|
+
const RunCommand = require('./run');
|
|
5
|
+
|
|
6
|
+
class RunLambdaCommand extends Command {
|
|
7
|
+
static aliases = ['run:lambda'];
|
|
8
|
+
static strict = false;
|
|
9
|
+
|
|
10
|
+
async run() {
|
|
11
|
+
const { flags, argv, args } = await this.parse(RunLambdaCommand);
|
|
12
|
+
|
|
13
|
+
flags['platform-opt'] = [
|
|
14
|
+
`region=${flags.region}`,
|
|
15
|
+
`memory-size=${flags['memory-size']}`,
|
|
16
|
+
`architecture=${flags.architecture}`
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
delete flags.region;
|
|
20
|
+
delete flags['memory-size'];
|
|
21
|
+
delete flags.architecture;
|
|
22
|
+
|
|
23
|
+
if (flags['lambda-role-arn']) {
|
|
24
|
+
flags['platform-opt'].push(`lambda-role-arn=${flags['lambda-role-arn']}`);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
if (flags['security-group-ids']) {
|
|
28
|
+
flags['platform-opt'].push(
|
|
29
|
+
`security-group-ids=${flags['security-group-ids']}`
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (flags['subnet-ids']) {
|
|
34
|
+
flags['platform-opt'].push(`subnet-ids=${flags['subnet-ids']}`);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
flags.platform = 'aws:lambda';
|
|
38
|
+
|
|
39
|
+
RunCommand.runCommandImplementation(flags, argv, args);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
RunLambdaCommand.description = `launch a test using AWS Lambda
|
|
44
|
+
Launch a test on AWS Lambda
|
|
45
|
+
|
|
46
|
+
Examples:
|
|
47
|
+
|
|
48
|
+
To run a test script in my-test.yml on AWS Lambda in us-east-1 region
|
|
49
|
+
distributed across 10 Lambda functions:
|
|
50
|
+
|
|
51
|
+
$ artillery run:lambda --region us-east-1 --count 10 my-test.yml
|
|
52
|
+
`;
|
|
53
|
+
RunLambdaCommand.flags = {
|
|
54
|
+
...CommonRunFlags,
|
|
55
|
+
payload: Flags.string({
|
|
56
|
+
char: 'p',
|
|
57
|
+
description: 'Specify a CSV file for dynamic data'
|
|
58
|
+
}),
|
|
59
|
+
count: Flags.string({
|
|
60
|
+
// locally defaults to number of CPUs with mode = distribute
|
|
61
|
+
default: '1'
|
|
62
|
+
}),
|
|
63
|
+
architecture: Flags.string({
|
|
64
|
+
description: 'Architecture of the Lambda function',
|
|
65
|
+
default: 'arm64',
|
|
66
|
+
options: ['arm64', 'x86_64']
|
|
67
|
+
}),
|
|
68
|
+
'memory-size': Flags.string({
|
|
69
|
+
description: 'Memory size of the Lambda function',
|
|
70
|
+
default: '4096'
|
|
71
|
+
}),
|
|
72
|
+
region: Flags.string({
|
|
73
|
+
description: 'AWS region to run the test in',
|
|
74
|
+
default: 'us-east-1'
|
|
75
|
+
}),
|
|
76
|
+
'lambda-role-arn': Flags.string({
|
|
77
|
+
description: 'ARN of the IAM role to use for the Lambda function'
|
|
78
|
+
}),
|
|
79
|
+
'security-group-ids': Flags.string({
|
|
80
|
+
description:
|
|
81
|
+
'Comma-separated list of security group IDs to use for the Lambda function'
|
|
82
|
+
}),
|
|
83
|
+
'subnet-ids': Flags.string({
|
|
84
|
+
description:
|
|
85
|
+
'Comma-separated list of subnet IDs to use for the Lambda function'
|
|
86
|
+
})
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
RunLambdaCommand.args = {
|
|
90
|
+
script: Args.string({
|
|
91
|
+
name: 'script',
|
|
92
|
+
required: true
|
|
93
|
+
})
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
module.exports = RunLambdaCommand;
|