@onivoro/onix 20.0.39 → 20.0.40

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onivoro/onix",
3
- "version": "20.0.39",
3
+ "version": "20.0.40",
4
4
  "type": "commonjs",
5
5
  "main": "./src/index.js",
6
6
  "typings": "./src/index.d.ts",
@@ -8,10 +8,10 @@ const deploy_lambda_function_1 = require("../../functions/deploy-lambda.function
8
8
  const stdio = 'inherit';
9
9
  const executor = (options, context) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
10
10
  try {
11
- const { functionName, region, bucket, profile } = options;
11
+ const { functionName, region, bucket, profile, roleArn, environment, memorySize, delayMs, handler, runtime } = options;
12
12
  const [apiProjectOutput] = (0, extract_project_build_outputs_function_1.extractProjectBuildOutputs)(context, context.projectName);
13
13
  (0, child_process_1.execSync)(`npx nx build ${context.projectName}`, { stdio });
14
- yield (0, deploy_lambda_function_1.deployLambda)({ functionName: functionName || context.projectName, sourcePath: apiProjectOutput, region, bucket });
14
+ yield (0, deploy_lambda_function_1.deployLambda)({ functionName: functionName || context.projectName, sourcePath: apiProjectOutput, region, bucket, roleArn, profile, environment, memorySize, delayMs, handler, runtime });
15
15
  return {
16
16
  success: true,
17
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../onix/src/executors/deploy-lambda/executor.ts"],"names":[],"mappings":";;;AAAA,uCAAsE;AAEtE,iDAAyC;AACzC,mHAAoG;AACpG,mFAAsE;AAEtE,MAAM,KAAK,GAAG,SAAS,CAAC;AAExB,MAAM,QAAQ,GAAoC,CAChD,OAAuB,EACvB,OAAwB,EACxB,EAAE;IACF,IAAI,CAAC;QAEH,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAC1D,MAAM,CAAC,gBAAgB,CAAC,GAAG,IAAA,mEAA0B,EAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAEpF,IAAA,wBAAQ,EAAC,gBAAgB,OAAO,CAAC,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAE3D,MAAM,IAAA,qCAAY,EAAC,EAAE,YAAY,EAAE,YAAY,IAAI,OAAO,CAAC,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAExH,OAAO;YACL,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,CAAC;QAC7B,eAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACxB,OAAO;YACL,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;AACH,CAAC,CAAA,CAAC;AAEF,kBAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../onix/src/executors/deploy-lambda/executor.ts"],"names":[],"mappings":";;;AAAA,uCAAsE;AAEtE,iDAAyC;AACzC,mHAAoG;AACpG,mFAAsE;AAEtE,MAAM,KAAK,GAAG,SAAS,CAAC;AAExB,MAAM,QAAQ,GAAoC,CAChD,OAAuB,EACvB,OAAwB,EACxB,EAAE;IACF,IAAI,CAAC;QAEH,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QACvH,MAAM,CAAC,gBAAgB,CAAC,GAAG,IAAA,mEAA0B,EAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAEpF,IAAA,wBAAQ,EAAC,gBAAgB,OAAO,CAAC,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAE3D,MAAM,IAAA,qCAAY,EAAC,EAAE,YAAY,EAAE,YAAY,IAAI,OAAO,CAAC,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAE9L,OAAO;YACL,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,CAAC;QAC7B,eAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACxB,OAAO;YACL,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;AACH,CAAC,CAAA,CAAC;AAEF,kBAAe,QAAQ,CAAC"}
@@ -1,6 +1,3 @@
1
- export interface ExecutorSchema {
2
- bucket: string;
3
- functionName?: string;
4
- profile?: string;
5
- region: string;
6
- }
1
+ import { DeployLambdaConfig } from "onix/src/functions/deploy-lambda.function";
2
+
3
+ export interface ExecutorSchema extends Omit<DeployLambdaConfig, 'sourcePath'> { }
@@ -20,10 +20,38 @@
20
20
  "region": {
21
21
  "type": "string",
22
22
  "description": "AWS region for identifying the ECS service to redeploy"
23
+ },
24
+ "roleArn": {
25
+ "type": "string",
26
+ "description": "AWS IAM role ARN the Lambda will assume"
27
+ },
28
+ "runtime": {
29
+ "type": "string",
30
+ "description": "NodeJS runtime version"
31
+ },
32
+ "handler": {
33
+ "type": "string",
34
+ "description": "Lambda handler resolution expression. Defaults to main.handler"
35
+ },
36
+ "memorySize": {
37
+ "type": "number",
38
+ "description": "Lambda allocated memory in MB"
39
+ },
40
+ "delayMs": {
41
+ "type": "number",
42
+ "description": "Delay in millis to wait after creating the Lambda (hacky)"
43
+ },
44
+ "environment": {
45
+ "type": "object",
46
+ "additionalProperties": {
47
+ "type": "string"
48
+ },
49
+ "description": "Environment variables structured as an object"
23
50
  }
24
51
  },
25
52
  "required": [
26
53
  "bucket",
27
- "region"
54
+ "region",
55
+ "roleArn"
28
56
  ]
29
57
  }
@@ -1,8 +1,17 @@
1
- export interface IDeployLambdaConfig {
1
+ import { Runtime } from "@aws-sdk/client-lambda";
2
+ export interface DeployLambdaConfig {
3
+ bucket: string;
2
4
  functionName: string;
3
- sourcePath: string;
5
+ profile?: string;
4
6
  region: string;
5
- bucket: string;
6
- profile?: string | undefined;
7
+ sourcePath: string;
8
+ roleArn: string;
9
+ runtime?: Runtime;
10
+ handler?: string;
11
+ memorySize?: number;
12
+ delayMs?: number;
13
+ environment?: {
14
+ [key: string]: string;
15
+ };
7
16
  }
8
- export declare function deployLambda({ functionName, sourcePath, region, bucket, profile }: IDeployLambdaConfig): Promise<void>;
17
+ export declare function deployLambda({ functionName, sourcePath, region, bucket, roleArn, runtime, handler, memorySize, environment, delayMs, profile, }: DeployLambdaConfig): Promise<void>;
@@ -7,33 +7,67 @@ const client_lambda_1 = require("@aws-sdk/client-lambda");
7
7
  const AdmZip = require("adm-zip");
8
8
  const resolve_aws_credentials_function_1 = require("./resolve-aws-credentials.function");
9
9
  function deployLambda(_a) {
10
- return tslib_1.__awaiter(this, arguments, void 0, function* ({ functionName, sourcePath, region, bucket, profile }) {
11
- const s3Client = new client_s3_1.S3Client({ region });
10
+ return tslib_1.__awaiter(this, arguments, void 0, function* ({ functionName, sourcePath, region, bucket, roleArn, runtime = client_lambda_1.Runtime.nodejs22x, handler = 'index.handler', memorySize = 128, environment, delayMs = 5000, profile, }) {
11
+ const s3Client = new client_s3_1.S3Client({ region, credentials: (0, resolve_aws_credentials_function_1.resolveAwsCredentials)(profile) });
12
12
  const lambdaClient = new client_lambda_1.LambdaClient({ region, credentials: (0, resolve_aws_credentials_function_1.resolveAwsCredentials)(profile) });
13
13
  const zip = new AdmZip();
14
14
  zip.addLocalFolder(sourcePath);
15
15
  const zipBuffer = zip.toBuffer();
16
- const Key = `${functionName}-${Date.now()}.zip`;
16
+ const key = `${functionName}.zip`;
17
17
  yield s3Client.send(new client_s3_1.PutObjectCommand({
18
18
  Bucket: bucket,
19
- Key,
19
+ Key: key,
20
20
  Body: zipBuffer
21
21
  }));
22
+ const envVars = environment ? {
23
+ Variables: environment
24
+ } : undefined;
25
+ let functionExists = true;
26
+ let currentConfig;
22
27
  try {
23
- yield lambdaClient.send(new client_lambda_1.GetFunctionCommand({
28
+ const response = yield lambdaClient.send(new client_lambda_1.GetFunctionCommand({
24
29
  FunctionName: functionName
25
30
  }));
26
- yield lambdaClient.send(new client_lambda_1.UpdateFunctionCodeCommand({
27
- FunctionName: functionName,
28
- S3Bucket: bucket,
29
- S3Key: Key
30
- }));
31
+ currentConfig = response.Configuration;
31
32
  }
32
33
  catch (error) {
33
34
  if (error.name === 'ResourceNotFoundException') {
34
- throw new Error(`Lambda function ${functionName} does not exist. Please create it first.`);
35
+ functionExists = false;
35
36
  }
36
- throw error;
37
+ else {
38
+ throw error;
39
+ }
40
+ }
41
+ if (!functionExists) {
42
+ yield lambdaClient.send(new client_lambda_1.CreateFunctionCommand({
43
+ FunctionName: functionName,
44
+ Runtime: runtime,
45
+ Role: roleArn,
46
+ Handler: handler,
47
+ Code: {
48
+ S3Bucket: bucket,
49
+ S3Key: key
50
+ },
51
+ MemorySize: memorySize,
52
+ Environment: envVars
53
+ }));
54
+ }
55
+ else {
56
+ let updatedEnvVars = envVars;
57
+ yield lambdaClient.send(new client_lambda_1.UpdateFunctionConfigurationCommand({
58
+ FunctionName: functionName,
59
+ Role: roleArn,
60
+ Handler: handler,
61
+ Runtime: runtime,
62
+ MemorySize: memorySize,
63
+ Environment: updatedEnvVars,
64
+ }));
65
+ yield new Promise(resolve => setTimeout(resolve, delayMs));
66
+ yield lambdaClient.send(new client_lambda_1.UpdateFunctionCodeCommand({
67
+ FunctionName: functionName,
68
+ S3Bucket: bucket,
69
+ S3Key: key
70
+ }));
37
71
  }
38
72
  });
39
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-lambda.function.js","sourceRoot":"","sources":["../../../../onix/src/functions/deploy-lambda.function.ts"],"names":[],"mappings":";;AAaA,oCAqCC;;AAlDD,kDAAgE;AAChE,0DAAqG;AACrG,kCAAkC;AAClC,yFAA2E;AAU3E,SAAsB,YAAY;iEAAC,EAC/B,YAAY,EACZ,UAAU,EACV,MAAM,EACN,MAAM,EACN,OAAO,EACW;QAClB,MAAM,QAAQ,GAAG,IAAI,oBAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1C,MAAM,YAAY,GAAG,IAAI,4BAAY,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,IAAA,wDAAqB,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAE/F,MAAM,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAEjC,MAAM,GAAG,GAAG,GAAG,YAAY,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;QAChD,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,4BAAgB,CAAC;YACrC,MAAM,EAAE,MAAM;YACd,GAAG;YACH,IAAI,EAAE,SAAS;SAClB,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC;YACD,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,kCAAkB,CAAC;gBAC3C,YAAY,EAAE,YAAY;aAC7B,CAAC,CAAC,CAAC;YAEJ,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,yCAAyB,CAAC;gBAClD,YAAY,EAAE,YAAY;gBAC1B,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,GAAG;aACb,CAAC,CAAC,CAAC;QACR,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,KAAK,CAAC,IAAI,KAAK,2BAA2B,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CAAC,mBAAmB,YAAY,0CAA0C,CAAC,CAAC;YAC/F,CAAC;YACD,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;CAAA"}
1
+ {"version":3,"file":"deploy-lambda.function.js","sourceRoot":"","sources":["../../../../onix/src/functions/deploy-lambda.function.ts"],"names":[],"mappings":"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"}