@ez4/aws-function 0.28.0 → 0.29.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/dist/function/types.d.ts +7 -3
- package/dist/main.cjs +143 -136
- package/dist/main.d.ts +1 -0
- package/dist/main.mjs +136 -132
- package/dist/utils/arn.d.ts +2 -0
- package/package.json +7 -7
package/dist/function/types.d.ts
CHANGED
|
@@ -3,15 +3,19 @@ import type { Arn } from '@ez4/aws-common';
|
|
|
3
3
|
import type { CreateRequest, ImportOrCreateResponse } from './client';
|
|
4
4
|
export declare const FunctionServiceName = "AWS:Lambda/Function";
|
|
5
5
|
export declare const FunctionServiceType = "aws:lambda.function";
|
|
6
|
-
export type GetFunctionBundle = (context: StepContext) => Promise<string> | string;
|
|
7
6
|
export type GetFunctionFiles = () => [string, string[]];
|
|
7
|
+
export type GetFunctionBundle = (context: StepContext) => Promise<string> | string;
|
|
8
|
+
export type GetFunctionHash = () => Promise<string | undefined> | string | undefined;
|
|
8
9
|
export type FunctionParameters = Omit<CreateRequest, 'roleArn' | 'publish'> & {
|
|
9
|
-
getFunctionBundle: GetFunctionBundle;
|
|
10
10
|
getFunctionFiles: GetFunctionFiles;
|
|
11
|
+
getFunctionBundle: GetFunctionBundle;
|
|
12
|
+
getFunctionHash: GetFunctionHash;
|
|
11
13
|
};
|
|
12
14
|
export type FunctionResult = ImportOrCreateResponse & {
|
|
13
|
-
|
|
15
|
+
valuesHash?: string;
|
|
14
16
|
sourceHash: string;
|
|
17
|
+
bundleHash: string;
|
|
18
|
+
logGroup?: string;
|
|
15
19
|
roleArn: Arn;
|
|
16
20
|
};
|
|
17
21
|
export type FunctionState = EntryState & {
|
package/dist/main.cjs
CHANGED
|
@@ -1,149 +1,156 @@
|
|
|
1
|
-
"use strict";var Qe=Object.create;var
|
|
2
|
-
typeof t=="object"||typeof t=="function")for(let i of Ke(t))!Xe.call(e,i)&&i!==
|
|
3
|
-
|
|
4
|
-
enumerable:!0}):
|
|
5
|
-
MappingServiceName:()=>
|
|
6
|
-
createFunction:()=>
|
|
7
|
-
getFunctionName:()=>
|
|
8
|
-
|
|
9
|
-
module.exports=tt(Ut);var
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
t))throw new
|
|
13
|
-
ssertVariables"),
|
|
14
|
-
"protectVariables");var
|
|
15
|
-
t,o),
|
|
16
|
-
|
|
17
|
-
{FunctionName:e,Qualifier:t})),o=
|
|
18
|
-
return{functionVersion:o,functionArn:i}}catch(
|
|
19
|
-
throw
|
|
20
|
-
c.Logger.logCreate(p,t),
|
|
21
|
-
a=await(0,c.waitCreation)(()=>
|
|
1
|
+
"use strict";var Qe=Object.create;var I=Object.defineProperty;var Je=Object.getOwnPropertyDescriptor;var Ke=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,Xe=Object.prototype.hasOwnProperty;var r=(e,t)=>I(e,"name",{value:t,configurable:!0});var Ye=(e,t)=>{for(var n in t)I(e,n,{get:t[n],enumerable:!0})},K=(e,t,n,o)=>{if(t&&
|
|
2
|
+
typeof t=="object"||typeof t=="function")for(let i of Ke(t))!Xe.call(e,i)&&i!==n&&
|
|
3
|
+
I(e,i,{get:()=>t[i],enumerable:!(o=Je(t,i))||o.enumerable});return e};var et=(e,t,n)=>(n=e!=null?Qe(_e(e)):{},K(t||!e||!e.__esModule?I(n,"default",{value:e,
|
|
4
|
+
enumerable:!0}):n,e)),tt=e=>K(I({},"__esModule",{value:!0}),e);var Ut={};Ye(Ut,{FunctionServiceName:()=>p,FunctionServiceType:()=>f,MappingService:()=>j,
|
|
5
|
+
MappingServiceName:()=>y,MappingServiceType:()=>P,PermissionServiceName:()=>C,PermissionServiceType:()=>w,
|
|
6
|
+
buildFunctionArn:()=>Tt,createFunction:()=>Et,createMapping:()=>Nt,createPermission:()=>It,
|
|
7
|
+
getFunctionArn:()=>ft,getFunctionName:()=>b,getFunctionState:()=>gt,getPermission:()=>Mt,
|
|
8
|
+
isFunctionState:()=>k,isMappingState:()=>Ht,registerTriggers:()=>bt,tryGetFunctionArn:()=>ge,
|
|
9
|
+
tryGetFunctionState:()=>lt});module.exports=tt(Ut);var Ge=require("@ez4/aws-common"),Ve=require("@ez4/aws-identity"),Be=require("@ez4/aws-logs"),
|
|
10
|
+
Oe=require("@ez4/project/library");var ue=require("@ez4/aws-common");var d=require("@ez4/aws-common"),R=require("@ez4/utils"),W=require("@ez4/aws-logs"),
|
|
11
|
+
$=require("@ez4/aws-identity");var s=require("@aws-sdk/client-lambda"),c=require("@ez4/aws-common");var _=require("@ez4/aws-common"),X=require("@ez4/utils");var p="AWS:Lambda/Function",f="aws:lambda.function";var nt=/[a-z][\w]+/i,rt=r(e=>nt.test(e),"isValidName"),z=r(e=>{for(let t in e)if(!rt(
|
|
12
|
+
t))throw new _.InvalidParameterError(p,`${t} is an invalid variable name .`)},"a\
|
|
13
|
+
ssertVariables"),N=r(e=>{let t={};for(let n in e)t[n]=(0,X.hashData)(e[n]);return t},
|
|
14
|
+
"protectVariables");var Y=et(require("adm-zip"),1),ee=require("node:fs/promises");var te=r(async(e,t)=>{let n=new Y.default,o=await(0,ee.readFile)(e);return n.addFile(
|
|
15
|
+
t,o),n.toBufferPromise()},"getZipBuffer");var F=new s.LambdaClient({}),H={minDelay:15,maxWaitTime:1800,maxDelay:60,client:F},
|
|
16
|
+
ne=r(async(e,t)=>{c.Logger.logImport(p,e);try{let n=await F.send(new s.GetFunctionCommand(
|
|
17
|
+
{FunctionName:e,Qualifier:t})),o=n.Configuration.Version,i=n.Configuration.FunctionArn;
|
|
18
|
+
return{functionVersion:o,functionArn:i}}catch(n){if(!(n instanceof s.ResourceNotFoundException))
|
|
19
|
+
throw n;return}},"importFunction"),re=r(async e=>{let{functionName:t,variables:n}=e;
|
|
20
|
+
c.Logger.logCreate(p,t),n&&z(n);let o=pe(e.handlerName),i=await ae(e.sourceFile),
|
|
21
|
+
a=await(0,c.waitCreation)(()=>F.send(new s.CreateFunctionCommand({FunctionName:e.
|
|
22
22
|
functionName,Description:e.description,MemorySize:e.memory,Timeout:e.timeout,Role:e.
|
|
23
23
|
roleArn,Handler:o,Runtime:"nodejs22.x",PackageType:"Zip",LoggingConfig:{LogGroup:e.
|
|
24
24
|
logGroup,ApplicationLogLevel:e.debug?s.ApplicationLogLevel.Debug:s.ApplicationLogLevel.
|
|
25
25
|
Warn,SystemLogLevel:s.SystemLogLevel.Warn,LogFormat:s.LogFormat.Json},Code:{ZipFile:i},
|
|
26
|
-
Environment:{Variables:
|
|
27
|
-
p,t),await(0,s.waitUntilFunctionActive)(
|
|
28
|
-
return e.publish?{functionVersion:await
|
|
29
|
-
reateFunction"),
|
|
30
|
-
t.sourceFile),o=await
|
|
31
|
-
publish,ZipFile:
|
|
32
|
-
{FunctionName:e});let i=o.FunctionArn;return t.publish?{functionVersion:await
|
|
33
|
-
e),functionArn:i}:{functionArn:i}},"updateSourceCode"),
|
|
34
|
-
variables:o}=t;c.Logger.logUpdate(p,`${e} configuration`),o&&
|
|
26
|
+
Environment:{Variables:n},Tags:{...e.tags,ManagedBy:"EZ4"}})));c.Logger.logWait(
|
|
27
|
+
p,t),await(0,s.waitUntilFunctionActive)(H,{FunctionName:t});let u=a.FunctionArn;
|
|
28
|
+
return e.publish?{functionVersion:await ie(t),functionArn:u}:{functionArn:u}},"c\
|
|
29
|
+
reateFunction"),G=r(async(e,t)=>{c.Logger.logUpdate(p,`${e} source code`);let n=await ae(
|
|
30
|
+
t.sourceFile),o=await F.send(new s.UpdateFunctionCodeCommand({FunctionName:e,Publish:t.
|
|
31
|
+
publish,ZipFile:n}));c.Logger.logWait(p,e),await(0,s.waitUntilFunctionUpdated)(H,
|
|
32
|
+
{FunctionName:e});let i=o.FunctionArn;return t.publish?{functionVersion:await ie(
|
|
33
|
+
e),functionArn:i}:{functionArn:i}},"updateSourceCode"),V=r(async(e,t)=>{let{handlerName:n,
|
|
34
|
+
variables:o}=t;c.Logger.logUpdate(p,`${e} configuration`),o&&z(o),await F.send(new s.UpdateFunctionConfigurationCommand(
|
|
35
35
|
{FunctionName:e,Description:t.description,MemorySize:t.memory,Timeout:t.timeout,
|
|
36
|
-
Role:t.roleArn,Runtime:"nodejs22.x",...
|
|
36
|
+
Role:t.roleArn,Runtime:"nodejs22.x",...n&&{Handler:pe(n)},LoggingConfig:{LogGroup:t.
|
|
37
37
|
logGroup,ApplicationLogLevel:t.debug?s.ApplicationLogLevel.Debug:s.ApplicationLogLevel.
|
|
38
38
|
Warn,SystemLogLevel:s.SystemLogLevel.Warn,LogFormat:s.LogFormat.Json},Environment:{
|
|
39
|
-
Variables:o}})),c.Logger.logWait(p,e),await(0,s.waitUntilFunctionUpdated)(
|
|
40
|
-
"updateConfiguration"),
|
|
41
|
-
async()=>{try{
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
{FunctionName:e}));c.Logger.logWait(p,e);let
|
|
45
|
-
|
|
46
|
-
e)?.resourceName??e;c.Logger.logTag(p,
|
|
47
|
-
Resource:e,Tags:{...t,ManagedBy:"EZ4"}}))},"tagFunction"),
|
|
48
|
-
e)?.resourceName??e;c.Logger.logUntag(p,
|
|
49
|
-
{Resource:e,TagKeys:t}))},"untagFunction"),
|
|
50
|
-
|
|
51
|
-
getFunctionHandler"),ot=
|
|
52
|
-
"equalsResource"),it=
|
|
53
|
-
{...
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
logGroup:
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
a
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
await
|
|
74
|
-
t.
|
|
75
|
-
...t.
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
39
|
+
Variables:o}})),c.Logger.logWait(p,e),await(0,s.waitUntilFunctionUpdated)(H,{FunctionName:e})},
|
|
40
|
+
"updateConfiguration"),oe=r(async e=>{c.Logger.logDelete(p,e),await(0,c.waitDeletion)(
|
|
41
|
+
async()=>{try{await F.send(new s.DeleteFunctionCommand({FunctionName:e}))}catch(t){
|
|
42
|
+
if(!(t instanceof s.ResourceNotFoundException))throw t}})},"deleteFunction"),ie=r(
|
|
43
|
+
async e=>{c.Logger.logPublish(p,e);let t=await F.send(new s.PublishVersionCommand(
|
|
44
|
+
{FunctionName:e}));c.Logger.logWait(p,e);let n=t.Version;return await(0,s.waitUntilPublishedVersionActive)(
|
|
45
|
+
H,{FunctionName:e,Qualifier:n}),n},"publishFunction"),B=r(async(e,t)=>{let n=(0,c.tryParseArn)(
|
|
46
|
+
e)?.resourceName??e;c.Logger.logTag(p,n),await F.send(new s.TagResourceCommand({
|
|
47
|
+
Resource:e,Tags:{...t,ManagedBy:"EZ4"}}))},"tagFunction"),se=r(async(e,t)=>{let n=(0,c.tryParseArn)(
|
|
48
|
+
e)?.resourceName??e;c.Logger.logUntag(p,n),await F.send(new s.UntagResourceCommand(
|
|
49
|
+
{Resource:e,TagKeys:t}))},"untagFunction"),ae=r(e=>te(e,"main.mjs"),"getSourceZi\
|
|
50
|
+
pFile"),pe=r(e=>`main.${e}`,"getSourceHandlerName");var ce=r(()=>({equals:ot,create:me,replace:st,preview:it,update:at,delete:pt}),"\
|
|
51
|
+
getFunctionHandler"),ot=r((e,t)=>!!e.result&&e.result.functionArn===t.result?.functionArn,
|
|
52
|
+
"equalsResource"),it=r(async(e,t)=>{let n=e.parameters,o=t.parameters,i=(0,R.deepCompare)(
|
|
53
|
+
{...n,connections:e.connections,dependencies:e.dependencies,variables:n.variables&&
|
|
54
|
+
N(n.variables),sourceHash:await(0,d.getBundleHash)(...n.getFunctionFiles()),valuesHash:n.
|
|
55
|
+
getFunctionHash()},{...o,connections:t.connections,dependencies:t.dependencies,sourceHash:t.
|
|
56
|
+
result?.sourceHash,valuesHash:t.result?.valuesHash});if(i.counts)return{...i,name:n.
|
|
57
|
+
functionName}},"previewResource"),st=r(async(e,t,n)=>{if(t.result)throw new d.ReplaceResourceError(
|
|
58
|
+
p,e.entryId,t.entryId);return me(e,n)},"replaceResource"),me=r(async(e,t)=>{let{
|
|
59
|
+
functionName:n,...o}=e.parameters,i=(0,W.getLogGroupName)(p,n,t),a=(0,$.getRoleArn)(
|
|
60
|
+
p,n,t),[u,g,l]=await Promise.all([(0,d.getBundleHash)(...o.getFunctionFiles()),o.
|
|
61
|
+
getFunctionBundle(t),o.getFunctionHash()]),S=await ne(n),A=await(0,R.hashFile)(g);
|
|
62
|
+
if(S)return await V(n,{...o,logGroup:i,roleArn:a}),await G(n,{publish:!1,sourceFile:g}),
|
|
63
|
+
await B(S.functionArn,{...o.tags}),O(e),{functionArn:S.functionArn,functionVersion:S.
|
|
64
|
+
functionVersion,valuesHash:l,sourceHash:u,bundleHash:A,logGroup:i,roleArn:a};let v=await re(
|
|
65
|
+
{...o,publish:!0,functionName:n,sourceFile:g,logGroup:i,roleArn:a});return O(e),
|
|
66
|
+
{functionArn:v.functionArn,functionVersion:v.functionVersion,valuesHash:l,sourceHash:u,
|
|
67
|
+
bundleHash:A,logGroup:i,roleArn:a}},"createResource"),at=r(async(e,t,n)=>{let{parameters:o,
|
|
68
|
+
result:i}=e;if(!i)return;let a=o.functionName,u=(0,$.getRoleArn)(p,a,n),g=t.result?.
|
|
69
|
+
roleArn??u,l=(0,W.getLogGroupName)(p,a,n),S=t.result?.logGroup??l,A={...o,roleArn:u,
|
|
70
|
+
logGroup:l},v={...t.parameters,roleArn:g,logGroup:S};await ct(a,A,v),await mt(i.
|
|
71
|
+
functionArn,o,t.parameters);let je=await ut(a,o,t.result,n);return O(e),{...i,...je,
|
|
72
|
+
logGroup:l,roleArn:u}},"updateResource"),pt=r(async e=>{let{result:t,parameters:n}=e;
|
|
73
|
+
t&&await oe(n.functionName)},"deleteResource"),O=r(e=>{let{parameters:t}=e;return t.
|
|
74
|
+
variables&&(t.variables=N(t.variables)),e},"lockSensitiveData"),ct=r(async(e,t,n)=>{
|
|
75
|
+
let o={...t,...t.variables&&{variables:N(t.variables)}};!(0,R.deepEqual)(o,n,{exclude:{
|
|
76
|
+
sourceFile:!0,functionName:!0,tags:!0}})&&await V(e,t)},"checkConfigurationUpdat\
|
|
77
|
+
es"),mt=r(async(e,t,n)=>{await(0,d.applyTagUpdates)(t.tags,n.tags,o=>B(e,o),o=>se(
|
|
78
|
+
e,o))},"checkTagUpdates"),ut=r(async(e,t,n,o)=>{let[i,a]=await Promise.all([(0,d.getBundleHash)(
|
|
79
|
+
...t.getFunctionFiles()),t.getFunctionHash()]),u=n?.sourceHash,g=n?.valuesHash;if(i!==
|
|
80
|
+
u||a!==g||o.force){let l=await t.getFunctionBundle(o),S=await(0,R.hashFile)(l),A=n?.
|
|
81
|
+
bundleHash;if(S===A)return d.Logger.logSkip(p,`${e} source code`),{valuesHash:a,
|
|
82
|
+
sourceHash:i};let{functionVersion:v}=await G(e,{publish:!n?.functionVersion,sourceFile:l});
|
|
83
|
+
return{valuesHash:a,sourceHash:i,bundleHash:S,...v&&{functionVersion:v}}}},"chec\
|
|
84
|
+
kSourceCodeUpdates");var le=r(()=>{(0,ue.registerProvider)(f,ce())},"registerFunctionProvider");var xe=require("@ez4/aws-common");var Se=require("@ez4/aws-common");var q=require("@ez4/aws-common");var T=class extends Error{static{r(this,"FunctionNotFoundError")}constructor(t){
|
|
85
|
+
super(`Function ${t} wasn't found.`)}};var k=r(e=>e.type===f,"isFunctionState"),lt=r((e,t,n)=>{try{let o=e.getServiceState(
|
|
86
|
+
t,n);if(k(o))return o}catch{}},"tryGetFunctionState"),gt=r((e,t,n)=>{let o=e.getServiceState(
|
|
87
|
+
t,n);if(!k(o))throw new T(t);return o},"getFunctionState"),b=r((e,t,n)=>{let o=n.
|
|
88
|
+
getDependencies(f).at(0)?.parameters;if(!o?.functionName)throw new q.IncompleteResourceError(
|
|
89
|
+
e,t,"functionName");return o.functionName},"getFunctionName"),ge=r(e=>e.getDependencies(
|
|
90
|
+
f)[0]?.result?.functionArn,"tryGetFunctionArn"),ft=r((e,t,n)=>{let o=ge(n);if(!o)
|
|
91
|
+
throw new q.IncompleteResourceError(e,t,"functionArn");return o},"getFunctionArn");var x=require("@aws-sdk/client-lambda"),Z=require("@ez4/aws-common");var C="AWS:Lambda/Permission",w="aws:lambda.permission";var fe=new x.LambdaClient({}),de=r(async e=>{Z.Logger.logCreate(C,e.functionName);
|
|
92
|
+
let t=e.statementId??`ID${Date.now()}`;return await fe.send(new x.AddPermissionCommand(
|
|
87
93
|
{StatementId:t,FunctionName:e.functionName,SourceArn:e.sourceArn,Principal:e.principal,
|
|
88
|
-
Action:e.action})),{statementId:t}},"createPermission"),
|
|
89
|
-
logDelete(
|
|
90
|
-
StatementId:t})),!0}catch(
|
|
91
|
-
return!1}},"deletePermission");var
|
|
92
|
-
getPermissionHandler"),
|
|
93
|
-
functionName,"equalsResource"),
|
|
94
|
-
if(t.result)throw new
|
|
95
|
-
|
|
96
|
-
i=await
|
|
97
|
-
|
|
98
|
-
"createResource"),Ft=
|
|
99
|
-
t&&await
|
|
100
|
-
Queue="sqs",
|
|
101
|
-
send(new m.ListEventSourceMappingsCommand({FunctionName:e,EventSourceArn:t})),[o]=
|
|
102
|
-
EventSourceMappings;return o?{eventId:o.UUID}:void 0},"importMapping"),
|
|
103
|
-
let{sourceArn:t,functionName:
|
|
104
|
-
{FunctionName:
|
|
105
|
-
"createMapping"),
|
|
106
|
-
(${e})`),await
|
|
107
|
-
...
|
|
108
|
-
try{return await
|
|
94
|
+
Action:e.action})),{statementId:t}},"createPermission"),ye=r(async(e,t)=>{Z.Logger.
|
|
95
|
+
logDelete(C,e);try{return await fe.send(new x.RemovePermissionCommand({FunctionName:e,
|
|
96
|
+
StatementId:t})),!0}catch(n){if(!(n instanceof x.ResourceNotFoundException))throw n;
|
|
97
|
+
return!1}},"deletePermission");var Fe=r(()=>({equals:dt,create:we,replace:St,preview:yt,update:Ft,delete:wt}),"\
|
|
98
|
+
getPermissionHandler"),dt=r((e,t)=>!!e.result&&e.result.functionName===t.result?.
|
|
99
|
+
functionName,"equalsResource"),yt=r(async(e,t)=>{},"previewResource"),St=r(async(e,t,n)=>{
|
|
100
|
+
if(t.result)throw new Se.ReplaceResourceError(C,e.entryId,t.entryId);return we(e,
|
|
101
|
+
n)},"replaceResource"),we=r(async(e,t)=>{let n=e.parameters,o=b(C,"permission",t),
|
|
102
|
+
i=await n.getPermission(t);return{statementId:(await de({action:"lambda:InvokeFu\
|
|
103
|
+
nction",sourceArn:i.sourceArn,principal:i.principal,functionName:o})).statementId,
|
|
104
|
+
functionName:o}},"createResource"),Ft=r(async()=>{},"updateResource"),wt=r(async e=>{
|
|
105
|
+
let t=e.result;t&&await ye(t.functionName,t.statementId)},"deleteResource");var Pe=r(()=>{(0,xe.registerProvider)(w,Fe())},"registerPermissionProvider");var Ne=require("@ez4/aws-common");var Ee=require("@ez4/aws-common"),U=require("@ez4/utils");var m=require("@aws-sdk/client-lambda"),h=require("@ez4/aws-common"),Q=require("@ez4/utils");var y="AWS:Lambda/Mapping",P="aws:lambda.mapping",j=(n=>(n.DynamoDB="dynamodb",n.
|
|
106
|
+
Queue="sqs",n))(j||{});var M=new m.LambdaClient({}),ve=r(async(e,t)=>{h.Logger.logImport(y,e);let n=await M.
|
|
107
|
+
send(new m.ListEventSourceMappingsCommand({FunctionName:e,EventSourceArn:t})),[o]=n.
|
|
108
|
+
EventSourceMappings;return o?{eventId:o.UUID}:void 0},"importMapping"),Re=r(async e=>{
|
|
109
|
+
let{sourceArn:t,functionName:n}=e;h.Logger.logCreate(y,n);let i=(await M.send(new m.CreateEventSourceMappingCommand(
|
|
110
|
+
{FunctionName:n,EventSourceArn:t,...be(e)}))).UUID;return await Ae(i),{eventId:i}},
|
|
111
|
+
"createMapping"),Ce=r(async(e,t)=>{let{functionName:n}=t;h.Logger.logUpdate(y,`${n}\
|
|
112
|
+
(${e})`),await M.send(new m.UpdateEventSourceMappingCommand({UUID:e,FunctionName:n,
|
|
113
|
+
...be(t)})),await Ae(e)},"updateMapping"),he=r(async e=>{h.Logger.logDelete(y,e);
|
|
114
|
+
try{return await M.send(new m.DeleteEventSourceMappingCommand({UUID:e})),!0}catch(t){
|
|
109
115
|
if(!(t instanceof m.ResourceNotFoundException))throw t;return!1}},"deleteMapping"),
|
|
110
|
-
xt=
|
|
111
|
-
"getMappingState"),
|
|
112
|
-
async()=>{let
|
|
113
|
-
sourceArn:t,enabled:
|
|
114
|
-
Enabled:
|
|
116
|
+
xt=r(async e=>(await M.send(new m.GetEventSourceMappingCommand({UUID:e}))).State,
|
|
117
|
+
"getMappingState"),Ae=r(async e=>{let t=new Set(["Enabled","Disabled"]);await Q.Wait.
|
|
118
|
+
until(async()=>{let n=await xt(e);return t.has(n)?!0:Q.Wait.RetryAttempt})},"wai\
|
|
119
|
+
tForReadyState"),be=r(e=>{let{sourceArn:t,enabled:n,concurrency:o,batch:i}=e,{service:a}=(0,h.parseArn)(
|
|
120
|
+
t);return{Enabled:n,FunctionResponseTypes:[m.FunctionResponseType.ReportBatchItemFailures],
|
|
115
121
|
MaximumBatchingWindowInSeconds:i?.maxWait,BatchSize:i?.size,...a==="dynamodb"&&{
|
|
116
122
|
StartingPosition:m.EventSourcePosition.LATEST},...a==="sqs"&&{ScalingConfig:{MaximumConcurrency:o}}}},
|
|
117
|
-
"upsertMappingRequest");var
|
|
118
|
-
getMappingHandler"),Pt=
|
|
119
|
-
"equalsResource"),
|
|
120
|
-
o={...t.parameters,dependencies:t.dependencies},i=(0,
|
|
121
|
-
getSourceArn:!0}});if(i.counts)return{...i,name:
|
|
122
|
-
|
|
123
|
-
entryId);return
|
|
124
|
-
o=
|
|
123
|
+
"upsertMappingRequest");var Ie=r(()=>({equals:Pt,create:Me,replace:Rt,preview:vt,update:Ct,delete:ht}),"\
|
|
124
|
+
getMappingHandler"),Pt=r((e,t)=>!!e.result&&e.result.eventId===t.result?.eventId,
|
|
125
|
+
"equalsResource"),vt=r(async(e,t)=>{let n={...e.parameters,dependencies:e.dependencies},
|
|
126
|
+
o={...t.parameters,dependencies:t.dependencies},i=(0,U.deepCompare)(n,o,{exclude:{
|
|
127
|
+
getSourceArn:!0}});if(i.counts)return{...i,name:n.fromService}},"previewResource"),
|
|
128
|
+
Rt=r(async(e,t,n)=>{if(t.result)throw new Ee.ReplaceResourceError(y,e.entryId,t.
|
|
129
|
+
entryId);return Me(e,n)},"replaceResource"),Me=r(async(e,t)=>{let n=e.parameters,
|
|
130
|
+
o=b(y,"mapping",t),i=await n.getSourceArn(t);return{eventId:(await ve(o,i)??await Re(
|
|
125
131
|
{...e.parameters,functionName:o,sourceArn:i})).eventId,functionName:o,sourceArn:i}},
|
|
126
|
-
"createResource"),
|
|
127
|
-
a=
|
|
128
|
-
sourceArn:i},
|
|
129
|
-
l
|
|
130
|
-
t.eventId)},"deleteResource"),
|
|
131
|
-
getSourceArn:!0,fromService:!0}})&&await
|
|
132
|
-
return(0,
|
|
133
|
-
LogEvents"],resourceIds:[`arn:aws:logs:${t}:${
|
|
134
|
-
licyDocument");var De=
|
|
135
|
-
-lambda-policy`;return(0,
|
|
136
|
-
policyDocument:await
|
|
137
|
-
(0,
|
|
138
|
-
ploy:prepareExecutionPolicy":De}),
|
|
139
|
-
t.entryId,i),u=[t.entryId];return
|
|
140
|
-
entryId:a,dependencies:u,parameters:{...o,functionName:i}})},"createFunction");var
|
|
141
|
-
e,{type:
|
|
142
|
-
rmission"),Mt=
|
|
143
|
-
|
|
144
|
-
e,{type:
|
|
145
|
-
pping");var
|
|
146
|
-
MappingServiceType,PermissionServiceName,PermissionServiceType,
|
|
147
|
-
createPermission,getFunctionArn,getFunctionName,getFunctionState,
|
|
148
|
-
isMappingState,registerTriggers,tryGetFunctionArn,
|
|
132
|
+
"createResource"),Ct=r(async(e,t,n)=>{let o=e.result;if(!o)return;let i=o.sourceArn,
|
|
133
|
+
a=b(y,"mapping",n),u=t.result?.functionName??o.functionName,g={...e.parameters,functionName:a,
|
|
134
|
+
sourceArn:i},l={...t.parameters,functionName:u,sourceArn:i};return await At(o.eventId,
|
|
135
|
+
g,l),{...o,functionName:a}},"updateResource"),ht=r(async e=>{let t=e.result;t&&await he(
|
|
136
|
+
t.eventId)},"deleteResource"),At=r(async(e,t,n)=>{!(0,U.deepEqual)(t,n,{exclude:{
|
|
137
|
+
getSourceArn:!0,fromService:!0}})&&await Ce(e,t)},"checkGeneralUpdates");var He=r(()=>{(0,Ne.registerProvider)(P,Ie())},"registerMappingProvider");var Te=r(()=>[{account:"lambda.amazonaws.com"}],"prepareIdentityAccount");var L=require("@ez4/aws-identity"),Le=require("@ez4/project/library");var E=require("@ez4/aws-identity");var Ue=r(async e=>{let[t,n]=await Promise.all([(0,E.getRegion)(),(0,E.getAccountId)()]);
|
|
138
|
+
return(0,E.createPolicyDocument)([{permissions:["logs:CreateLogStream","logs:Put\
|
|
139
|
+
LogEvents"],resourceIds:[`arn:aws:logs:${t}:${n}:log-group:${e}-*:*`]}])},"getPo\
|
|
140
|
+
licyDocument");var De=r(async e=>{let{state:t,options:n}=e,o=(0,Le.getServiceName)("",n),i=`${o}\
|
|
141
|
+
-lambda-policy`;return(0,L.tryGetPolicy)(t,i)??(0,L.createPolicy)(t,{tags:n.tags,
|
|
142
|
+
policyDocument:await Ue(o),policyName:i})},"prepareExecutionPolicy");var ze=!1,bt=r(()=>{ze||((0,Ge.registerTriggers)(),(0,Ve.registerTriggers)(),(0,Be.registerTriggers)(),
|
|
143
|
+
(0,Oe.createTrigger)("@ez4/aws-function",{"deploy:prepareIdentityAccount":Te,"de\
|
|
144
|
+
ploy:prepareExecutionPolicy":De}),le(),Pe(),He(),ze=!0)},"registerTriggers");var D=require("@ez4/utils"),We=require("@ez4/stateful");var Et=r((e,t,n,o)=>{let i=(0,D.toKebabCase)(o.functionName),a=(0,D.hashData)(f,
|
|
145
|
+
t.entryId,i),u=[t.entryId];return n&&u.push(n.entryId),(0,We.attachEntry)(e,{type:f,
|
|
146
|
+
entryId:a,dependencies:u,parameters:{...o,functionName:i}})},"createFunction");var qe=require("@ez4/stateful"),J=require("@ez4/utils");var $e=r(e=>e.type===w,"isPermissionState");var It=r((e,t,n,o)=>{let i=(0,J.hashData)(w,t.entryId,n.entryId);return(0,qe.attachEntry)(
|
|
147
|
+
e,{type:w,entryId:i,dependencies:[t.entryId,n.entryId],parameters:o})},"createPe\
|
|
148
|
+
rmission"),Mt=r((e,t,n)=>{let o=(0,J.hashData)(w,t.entryId,n.entryId),i=e[o];return i&&
|
|
149
|
+
$e(i)?i:null},"getPermission");var ke=require("@ez4/utils"),Ze=require("@ez4/stateful");var Nt=r((e,t,n,o)=>{let i=(0,ke.hashData)(P,t.entryId,n.entryId);return(0,Ze.attachEntry)(
|
|
150
|
+
e,{type:P,entryId:i,dependencies:[t.entryId,n.entryId],parameters:o})},"createMa\
|
|
151
|
+
pping");var Ht=r(e=>e.type===P,"isMappingState");var Tt=r((e,t,n)=>`arn:aws:lambda:${e}:${t}:function:${n}`,"buildFunctionArn");0&&(module.exports={FunctionServiceName,FunctionServiceType,MappingService,MappingServiceName,
|
|
152
|
+
MappingServiceType,PermissionServiceName,PermissionServiceType,buildFunctionArn,
|
|
153
|
+
createFunction,createMapping,createPermission,getFunctionArn,getFunctionName,getFunctionState,
|
|
154
|
+
getPermission,isFunctionState,isMappingState,registerTriggers,tryGetFunctionArn,
|
|
155
|
+
tryGetFunctionState});
|
|
149
156
|
//# sourceMappingURL=main.cjs.map
|
package/dist/main.d.ts
CHANGED
package/dist/main.mjs
CHANGED
|
@@ -1,137 +1,141 @@
|
|
|
1
|
-
var
|
|
2
|
-
import{registerTriggers as
|
|
3
|
-
import{deepCompare as
|
|
4
|
-
import{getRoleArn as
|
|
5
|
-
UpdateFunctionCodeCommand as
|
|
6
|
-
TagResourceCommand as
|
|
7
|
-
waitUntilFunctionUpdated as
|
|
8
|
-
ApplicationLogLevel as
|
|
9
|
-
import{Logger as c,tryParseArn as
|
|
10
|
-
t))throw new
|
|
11
|
-
e=>{let t={};for(let
|
|
12
|
-
"getZipBuffer");var
|
|
13
|
-
c.logImport(a,e);try{let
|
|
14
|
-
Configuration.Version,i=
|
|
15
|
-
if(!(
|
|
16
|
-
variables:
|
|
17
|
-
s=await
|
|
1
|
+
var Ae=Object.defineProperty;var r=(e,t)=>Ae(e,"name",{value:t,configurable:!0});import{registerTriggers as kt}from"@ez4/aws-common";import{registerTriggers as Zt}from"@ez4/aws-identity";
|
|
2
|
+
import{registerTriggers as jt}from"@ez4/aws-logs";import{createTrigger as Qt}from"@ez4/project/library";import{registerProvider as it}from"@ez4/aws-common";import{applyTagUpdates as Ze,getBundleHash as T,Logger as je,ReplaceResourceError as Qe}from"@ez4/aws-common";
|
|
3
|
+
import{deepCompare as Je,deepEqual as Ke,hashFile as j}from"@ez4/utils";import{getLogGroupName as Q}from"@ez4/aws-logs";
|
|
4
|
+
import{getRoleArn as J}from"@ez4/aws-identity";import{LambdaClient as Te,GetFunctionCommand as Ue,CreateFunctionCommand as Le,DeleteFunctionCommand as De,
|
|
5
|
+
UpdateFunctionCodeCommand as ze,UpdateFunctionConfigurationCommand as Ge,PublishVersionCommand as Ve,
|
|
6
|
+
TagResourceCommand as Be,UntagResourceCommand as Oe,waitUntilFunctionActive as We,
|
|
7
|
+
waitUntilFunctionUpdated as L,waitUntilPublishedVersionActive as $e,ResourceNotFoundException as D,
|
|
8
|
+
ApplicationLogLevel as C,SystemLogLevel as z,LogFormat as G}from"@aws-sdk/client-lambda";
|
|
9
|
+
import{Logger as c,tryParseArn as V,waitCreation as qe,waitDeletion as ke}from"@ez4/aws-common";import{InvalidParameterError as be}from"@ez4/aws-common";import{hashData as Ee}from"@ez4/utils";var a="AWS:Lambda/Function",g="aws:lambda.function";var Ie=/[a-z][\w]+/i,Me=r(e=>Ie.test(e),"isValidName"),E=r(e=>{for(let t in e)if(!Me(
|
|
10
|
+
t))throw new be(a,`${t} is an invalid variable name .`)},"assertVariables"),R=r(
|
|
11
|
+
e=>{let t={};for(let n in e)t[n]=Ee(e[n]);return t},"protectVariables");import Ne from"adm-zip";import{readFile as He}from"node:fs/promises";var U=r(async(e,t)=>{let n=new Ne,o=await He(e);return n.addFile(t,o),n.toBufferPromise()},
|
|
12
|
+
"getZipBuffer");var f=new Te({}),h={minDelay:15,maxWaitTime:1800,maxDelay:60,client:f},B=r(async(e,t)=>{
|
|
13
|
+
c.logImport(a,e);try{let n=await f.send(new Ue({FunctionName:e,Qualifier:t})),o=n.
|
|
14
|
+
Configuration.Version,i=n.Configuration.FunctionArn;return{functionVersion:o,functionArn:i}}catch(n){
|
|
15
|
+
if(!(n instanceof D))throw n;return}},"importFunction"),O=r(async e=>{let{functionName:t,
|
|
16
|
+
variables:n}=e;c.logCreate(a,t),n&&E(n);let o=Z(e.handlerName),i=await k(e.sourceFile),
|
|
17
|
+
s=await qe(()=>f.send(new Le({FunctionName:e.functionName,Description:e.description,
|
|
18
18
|
MemorySize:e.memory,Timeout:e.timeout,Role:e.roleArn,Handler:o,Runtime:"nodejs22\
|
|
19
19
|
.x",PackageType:"Zip",LoggingConfig:{LogGroup:e.logGroup,ApplicationLogLevel:e.debug?
|
|
20
|
-
|
|
21
|
-
Variables:
|
|
22
|
-
let p=s.FunctionArn;return e.publish?{functionVersion:await
|
|
23
|
-
{functionArn:p}},"createFunction"),
|
|
24
|
-
ode`);let
|
|
25
|
-
publish,ZipFile:
|
|
26
|
-
return t.publish?{functionVersion:await
|
|
27
|
-
dateSourceCode"),
|
|
28
|
-
`${e} configuration`),o&&
|
|
20
|
+
C.Debug:C.Warn,SystemLogLevel:z.Warn,LogFormat:G.Json},Code:{ZipFile:i},Environment:{
|
|
21
|
+
Variables:n},Tags:{...e.tags,ManagedBy:"EZ4"}})));c.logWait(a,t),await We(h,{FunctionName:t});
|
|
22
|
+
let p=s.FunctionArn;return e.publish?{functionVersion:await $(t),functionArn:p}:
|
|
23
|
+
{functionArn:p}},"createFunction"),I=r(async(e,t)=>{c.logUpdate(a,`${e} source c\
|
|
24
|
+
ode`);let n=await k(t.sourceFile),o=await f.send(new ze({FunctionName:e,Publish:t.
|
|
25
|
+
publish,ZipFile:n}));c.logWait(a,e),await L(h,{FunctionName:e});let i=o.FunctionArn;
|
|
26
|
+
return t.publish?{functionVersion:await $(e),functionArn:i}:{functionArn:i}},"up\
|
|
27
|
+
dateSourceCode"),M=r(async(e,t)=>{let{handlerName:n,variables:o}=t;c.logUpdate(a,
|
|
28
|
+
`${e} configuration`),o&&E(o),await f.send(new Ge({FunctionName:e,Description:t.
|
|
29
29
|
description,MemorySize:t.memory,Timeout:t.timeout,Role:t.roleArn,Runtime:"nodejs\
|
|
30
|
-
22.x",...
|
|
31
|
-
debug?
|
|
32
|
-
c.logWait(a,e),await
|
|
33
|
-
c.logDelete(a,e),await
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
{
|
|
46
|
-
sourceHash});if(i.counts)return{...i,name:
|
|
47
|
-
async(e,t,
|
|
48
|
-
|
|
49
|
-
s=
|
|
50
|
-
t)]),
|
|
51
|
-
publish:!1,sourceFile:
|
|
52
|
-
functionArn
|
|
53
|
-
logGroup:
|
|
54
|
-
roleArn:
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
e,
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
sourceHash
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
30
|
+
22.x",...n&&{Handler:Z(n)},LoggingConfig:{LogGroup:t.logGroup,ApplicationLogLevel:t.
|
|
31
|
+
debug?C.Debug:C.Warn,SystemLogLevel:z.Warn,LogFormat:G.Json},Environment:{Variables:o}})),
|
|
32
|
+
c.logWait(a,e),await L(h,{FunctionName:e})},"updateConfiguration"),W=r(async e=>{
|
|
33
|
+
c.logDelete(a,e),await ke(async()=>{try{await f.send(new De({FunctionName:e}))}catch(t){
|
|
34
|
+
if(!(t instanceof D))throw t}})},"deleteFunction"),$=r(async e=>{c.logPublish(a,
|
|
35
|
+
e);let t=await f.send(new Ve({FunctionName:e}));c.logWait(a,e);let n=t.Version;return await $e(
|
|
36
|
+
h,{FunctionName:e,Qualifier:n}),n},"publishFunction"),N=r(async(e,t)=>{let n=V(e)?.
|
|
37
|
+
resourceName??e;c.logTag(a,n),await f.send(new Be({Resource:e,Tags:{...t,ManagedBy:"\
|
|
38
|
+
EZ4"}}))},"tagFunction"),q=r(async(e,t)=>{let n=V(e)?.resourceName??e;c.logUntag(
|
|
39
|
+
a,n),await f.send(new Oe({Resource:e,TagKeys:t}))},"untagFunction"),k=r(e=>U(e,"\
|
|
40
|
+
main.mjs"),"getSourceZipFile"),Z=r(e=>`main.${e}`,"getSourceHandlerName");var K=r(()=>({equals:_e,create:_,replace:Ye,preview:Xe,update:et,delete:tt}),"ge\
|
|
41
|
+
tFunctionHandler"),_e=r((e,t)=>!!e.result&&e.result.functionArn===t.result?.functionArn,
|
|
42
|
+
"equalsResource"),Xe=r(async(e,t)=>{let n=e.parameters,o=t.parameters,i=Je({...n,
|
|
43
|
+
connections:e.connections,dependencies:e.dependencies,variables:n.variables&&R(n.
|
|
44
|
+
variables),sourceHash:await T(...n.getFunctionFiles()),valuesHash:n.getFunctionHash()},
|
|
45
|
+
{...o,connections:t.connections,dependencies:t.dependencies,sourceHash:t.result?.
|
|
46
|
+
sourceHash,valuesHash:t.result?.valuesHash});if(i.counts)return{...i,name:n.functionName}},
|
|
47
|
+
"previewResource"),Ye=r(async(e,t,n)=>{if(t.result)throw new Qe(a,e.entryId,t.entryId);
|
|
48
|
+
return _(e,n)},"replaceResource"),_=r(async(e,t)=>{let{functionName:n,...o}=e.parameters,
|
|
49
|
+
i=Q(a,n,t),s=J(a,n,t),[p,u,m]=await Promise.all([T(...o.getFunctionFiles()),o.getFunctionBundle(
|
|
50
|
+
t),o.getFunctionHash()]),l=await B(n),w=await j(u);if(l)return await M(n,{...o,logGroup:i,
|
|
51
|
+
roleArn:s}),await I(n,{publish:!1,sourceFile:u}),await N(l.functionArn,{...o.tags}),
|
|
52
|
+
H(e),{functionArn:l.functionArn,functionVersion:l.functionVersion,valuesHash:m,sourceHash:p,
|
|
53
|
+
bundleHash:w,logGroup:i,roleArn:s};let S=await O({...o,publish:!0,functionName:n,
|
|
54
|
+
sourceFile:u,logGroup:i,roleArn:s});return H(e),{functionArn:S.functionArn,functionVersion:S.
|
|
55
|
+
functionVersion,valuesHash:m,sourceHash:p,bundleHash:w,logGroup:i,roleArn:s}},"c\
|
|
56
|
+
reateResource"),et=r(async(e,t,n)=>{let{parameters:o,result:i}=e;if(!i)return;let s=o.
|
|
57
|
+
functionName,p=J(a,s,n),u=t.result?.roleArn??p,m=Q(a,s,n),l=t.result?.logGroup??
|
|
58
|
+
m,w={...o,roleArn:p,logGroup:m},S={...t.parameters,roleArn:u,logGroup:l};await nt(
|
|
59
|
+
s,w,S),await rt(i.functionArn,o,t.parameters);let he=await ot(s,o,t.result,n);return H(
|
|
60
|
+
e),{...i,...he,logGroup:m,roleArn:p}},"updateResource"),tt=r(async e=>{let{result:t,
|
|
61
|
+
parameters:n}=e;t&&await W(n.functionName)},"deleteResource"),H=r(e=>{let{parameters:t}=e;
|
|
62
|
+
return t.variables&&(t.variables=R(t.variables)),e},"lockSensitiveData"),nt=r(async(e,t,n)=>{
|
|
63
|
+
let o={...t,...t.variables&&{variables:R(t.variables)}};!Ke(o,n,{exclude:{sourceFile:!0,
|
|
64
|
+
functionName:!0,tags:!0}})&&await M(e,t)},"checkConfigurationUpdates"),rt=r(async(e,t,n)=>{
|
|
65
|
+
await Ze(t.tags,n.tags,o=>N(e,o),o=>q(e,o))},"checkTagUpdates"),ot=r(async(e,t,n,o)=>{
|
|
66
|
+
let[i,s]=await Promise.all([T(...t.getFunctionFiles()),t.getFunctionHash()]),p=n?.
|
|
67
|
+
sourceHash,u=n?.valuesHash;if(i!==p||s!==u||o.force){let m=await t.getFunctionBundle(
|
|
68
|
+
o),l=await j(m),w=n?.bundleHash;if(l===w)return je.logSkip(a,`${e} source code`),
|
|
69
|
+
{valuesHash:s,sourceHash:i};let{functionVersion:S}=await I(e,{publish:!n?.functionVersion,
|
|
70
|
+
sourceFile:m});return{valuesHash:s,sourceHash:i,bundleHash:l,...S&&{functionVersion:S}}}},
|
|
71
|
+
"checkSourceCodeUpdates");var X=r(()=>{it(g,K())},"registerFunctionProvider");import{registerProvider as St}from"@ez4/aws-common";import{ReplaceResourceError as ut}from"@ez4/aws-common";import{IncompleteResourceError as Y}from"@ez4/aws-common";var A=class extends Error{static{r(this,"FunctionNotFoundError")}constructor(t){
|
|
72
|
+
super(`Function ${t} wasn't found.`)}};var ee=r(e=>e.type===g,"isFunctionState"),Vn=r((e,t,n)=>{try{let o=e.getServiceState(
|
|
73
|
+
t,n);if(ee(o))return o}catch{}},"tryGetFunctionState"),Bn=r((e,t,n)=>{let o=e.getServiceState(
|
|
74
|
+
t,n);if(!ee(o))throw new A(t);return o},"getFunctionState"),P=r((e,t,n)=>{let o=n.
|
|
75
|
+
getDependencies(g).at(0)?.parameters;if(!o?.functionName)throw new Y(e,t,"functi\
|
|
76
|
+
onName");return o.functionName},"getFunctionName"),st=r(e=>e.getDependencies(g)[0]?.
|
|
77
|
+
result?.functionArn,"tryGetFunctionArn"),On=r((e,t,n)=>{let o=st(n);if(!o)throw new Y(
|
|
78
|
+
e,t,"functionArn");return o},"getFunctionArn");import{LambdaClient as at,AddPermissionCommand as pt,RemovePermissionCommand as ct,
|
|
79
|
+
ResourceNotFoundException as mt}from"@aws-sdk/client-lambda";import{Logger as te}from"@ez4/aws-common";var x="AWS:Lambda/Permission",y="aws:lambda.permission";var ne=new at({}),re=r(async e=>{te.logCreate(x,e.functionName);let t=e.statementId??
|
|
80
|
+
`ID${Date.now()}`;return await ne.send(new pt({StatementId:t,FunctionName:e.functionName,
|
|
77
81
|
SourceArn:e.sourceArn,Principal:e.principal,Action:e.action})),{statementId:t}},
|
|
78
|
-
"createPermission"),
|
|
79
|
-
{FunctionName:e,StatementId:t})),!0}catch(
|
|
80
|
-
"deletePermission");var
|
|
81
|
-
getPermissionHandler"),
|
|
82
|
-
functionName,"equalsResource"),
|
|
83
|
-
if(t.result)throw new
|
|
84
|
-
|
|
85
|
-
t);return{statementId:(await
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
t.functionName,t.statementId)},"deleteResource");var
|
|
89
|
-
deepEqual as
|
|
90
|
-
UpdateEventSourceMappingCommand as
|
|
91
|
-
FunctionResponseType as
|
|
92
|
-
import{Logger as
|
|
93
|
-
|
|
94
|
-
EventSourceArn:t})),[o]=
|
|
95
|
-
"importMapping"),
|
|
96
|
-
|
|
97
|
-
return await
|
|
98
|
-
|
|
99
|
-
await
|
|
100
|
-
send(new
|
|
101
|
-
eteMapping"),
|
|
102
|
-
te"),
|
|
103
|
-
e);return t.has(
|
|
104
|
-
batch:i}=e,{service:s}=
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
"upsertMappingRequest");var
|
|
108
|
-
getMappingHandler"),
|
|
109
|
-
"equalsResource"),
|
|
110
|
-
o={...t.parameters,dependencies:t.dependencies},i=
|
|
111
|
-
if(i.counts)return{...i,name:
|
|
112
|
-
if(t.result)throw new
|
|
113
|
-
|
|
114
|
-
return{eventId:(await
|
|
115
|
-
eventId,functionName:o,sourceArn:i}},"createResource"),
|
|
116
|
-
result;if(!o)return;let i=o.sourceArn,s=
|
|
117
|
-
o.functionName,
|
|
118
|
-
functionName:p,sourceArn:i};return await
|
|
119
|
-
"updateResource"),Dt=
|
|
120
|
-
esource"),
|
|
121
|
-
await
|
|
122
|
-
"logs:CreateLogStream","logs:PutLogEvents"],resourceIds:[`arn:aws:logs:${t}:${
|
|
123
|
-
:log-group:${e}-*:*`]}])},"getPolicyDocument");var
|
|
124
|
-
t,i)??
|
|
125
|
-
tionPolicy");var
|
|
126
|
-
dentityAccount":
|
|
127
|
-
egisterTriggers");import{toKebabCase as
|
|
128
|
-
return
|
|
129
|
-
functionName:i}})},"createFunction");import{attachEntry as
|
|
130
|
-
dependencies:[t.entryId,
|
|
131
|
-
let o=
|
|
132
|
-
dependencies:[t.entryId,
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
82
|
+
"createPermission"),oe=r(async(e,t)=>{te.logDelete(x,e);try{return await ne.send(
|
|
83
|
+
new ct({FunctionName:e,StatementId:t})),!0}catch(n){if(!(n instanceof mt))throw n;
|
|
84
|
+
return!1}},"deletePermission");var ie=r(()=>({equals:lt,create:se,replace:ft,preview:gt,update:dt,delete:yt}),"\
|
|
85
|
+
getPermissionHandler"),lt=r((e,t)=>!!e.result&&e.result.functionName===t.result?.
|
|
86
|
+
functionName,"equalsResource"),gt=r(async(e,t)=>{},"previewResource"),ft=r(async(e,t,n)=>{
|
|
87
|
+
if(t.result)throw new ut(x,e.entryId,t.entryId);return se(e,n)},"replaceResource"),
|
|
88
|
+
se=r(async(e,t)=>{let n=e.parameters,o=P(x,"permission",t),i=await n.getPermission(
|
|
89
|
+
t);return{statementId:(await re({action:"lambda:InvokeFunction",sourceArn:i.sourceArn,
|
|
90
|
+
principal:i.principal,functionName:o})).statementId,functionName:o}},"createReso\
|
|
91
|
+
urce"),dt=r(async()=>{},"updateResource"),yt=r(async e=>{let t=e.result;t&&await oe(
|
|
92
|
+
t.functionName,t.statementId)},"deleteResource");var ae=r(()=>{St(y,ie())},"registerPermissionProvider");import{registerProvider as Gt}from"@ez4/aws-common";import{ReplaceResourceError as It}from"@ez4/aws-common";import{deepCompare as Mt,
|
|
93
|
+
deepEqual as Nt}from"@ez4/utils";import{LambdaClient as Ft,GetEventSourceMappingCommand as wt,CreateEventSourceMappingCommand as xt,
|
|
94
|
+
UpdateEventSourceMappingCommand as Pt,DeleteEventSourceMappingCommand as vt,ListEventSourceMappingsCommand as Rt,
|
|
95
|
+
FunctionResponseType as Ct,EventSourcePosition as ht,ResourceNotFoundException as At}from"@aws-sdk/client-lambda";
|
|
96
|
+
import{Logger as b,parseArn as bt}from"@ez4/aws-common";import{Wait as ce}from"@ez4/utils";var d="AWS:Lambda/Mapping",F="aws:lambda.mapping",pe=(n=>(n.DynamoDB="dynamodb",
|
|
97
|
+
n.Queue="sqs",n))(pe||{});var v=new Ft({}),me=r(async(e,t)=>{b.logImport(d,e);let n=await v.send(new Rt({FunctionName:e,
|
|
98
|
+
EventSourceArn:t})),[o]=n.EventSourceMappings;return o?{eventId:o.UUID}:void 0},
|
|
99
|
+
"importMapping"),ue=r(async e=>{let{sourceArn:t,functionName:n}=e;b.logCreate(d,
|
|
100
|
+
n);let i=(await v.send(new xt({FunctionName:n,EventSourceArn:t,...de(e)}))).UUID;
|
|
101
|
+
return await fe(i),{eventId:i}},"createMapping"),le=r(async(e,t)=>{let{functionName:n}=t;
|
|
102
|
+
b.logUpdate(d,`${n} (${e})`),await v.send(new Pt({UUID:e,FunctionName:n,...de(t)})),
|
|
103
|
+
await fe(e)},"updateMapping"),ge=r(async e=>{b.logDelete(d,e);try{return await v.
|
|
104
|
+
send(new vt({UUID:e})),!0}catch(t){if(!(t instanceof At))throw t;return!1}},"del\
|
|
105
|
+
eteMapping"),Et=r(async e=>(await v.send(new wt({UUID:e}))).State,"getMappingSta\
|
|
106
|
+
te"),fe=r(async e=>{let t=new Set(["Enabled","Disabled"]);await ce.until(async()=>{
|
|
107
|
+
let n=await Et(e);return t.has(n)?!0:ce.RetryAttempt})},"waitForReadyState"),de=r(
|
|
108
|
+
e=>{let{sourceArn:t,enabled:n,concurrency:o,batch:i}=e,{service:s}=bt(t);return{
|
|
109
|
+
Enabled:n,FunctionResponseTypes:[Ct.ReportBatchItemFailures],MaximumBatchingWindowInSeconds:i?.
|
|
110
|
+
maxWait,BatchSize:i?.size,...s==="dynamodb"&&{StartingPosition:ht.LATEST},...s===
|
|
111
|
+
"sqs"&&{ScalingConfig:{MaximumConcurrency:o}}}},"upsertMappingRequest");var ye=r(()=>({equals:Ht,create:Se,replace:Ut,preview:Tt,update:Lt,delete:Dt}),"\
|
|
112
|
+
getMappingHandler"),Ht=r((e,t)=>!!e.result&&e.result.eventId===t.result?.eventId,
|
|
113
|
+
"equalsResource"),Tt=r(async(e,t)=>{let n={...e.parameters,dependencies:e.dependencies},
|
|
114
|
+
o={...t.parameters,dependencies:t.dependencies},i=Mt(n,o,{exclude:{getSourceArn:!0}});
|
|
115
|
+
if(i.counts)return{...i,name:n.fromService}},"previewResource"),Ut=r(async(e,t,n)=>{
|
|
116
|
+
if(t.result)throw new It(d,e.entryId,t.entryId);return Se(e,n)},"replaceResource"),
|
|
117
|
+
Se=r(async(e,t)=>{let n=e.parameters,o=P(d,"mapping",t),i=await n.getSourceArn(t);
|
|
118
|
+
return{eventId:(await me(o,i)??await ue({...e.parameters,functionName:o,sourceArn:i})).
|
|
119
|
+
eventId,functionName:o,sourceArn:i}},"createResource"),Lt=r(async(e,t,n)=>{let o=e.
|
|
120
|
+
result;if(!o)return;let i=o.sourceArn,s=P(d,"mapping",n),p=t.result?.functionName??
|
|
121
|
+
o.functionName,u={...e.parameters,functionName:s,sourceArn:i},m={...t.parameters,
|
|
122
|
+
functionName:p,sourceArn:i};return await zt(o.eventId,u,m),{...o,functionName:s}},
|
|
123
|
+
"updateResource"),Dt=r(async e=>{let t=e.result;t&&await ge(t.eventId)},"deleteR\
|
|
124
|
+
esource"),zt=r(async(e,t,n)=>{!Nt(t,n,{exclude:{getSourceArn:!0,fromService:!0}})&&
|
|
125
|
+
await le(e,t)},"checkGeneralUpdates");var Fe=r(()=>{Gt(F,ye())},"registerMappingProvider");var we=r(()=>[{account:"lambda.amazonaws.com"}],"prepareIdentityAccount");import{createPolicy as Wt,tryGetPolicy as $t}from"@ez4/aws-identity";import{getServiceName as qt}from"@ez4/project/library";import{getAccountId as Vt,getRegion as Bt,createPolicyDocument as Ot}from"@ez4/aws-identity";var xe=r(async e=>{let[t,n]=await Promise.all([Bt(),Vt()]);return Ot([{permissions:[
|
|
126
|
+
"logs:CreateLogStream","logs:PutLogEvents"],resourceIds:[`arn:aws:logs:${t}:${n}\
|
|
127
|
+
:log-group:${e}-*:*`]}])},"getPolicyDocument");var Pe=r(async e=>{let{state:t,options:n}=e,o=qt("",n),i=`${o}-lambda-policy`;return $t(
|
|
128
|
+
t,i)??Wt(t,{tags:n.tags,policyDocument:await xe(o),policyName:i})},"prepareExecu\
|
|
129
|
+
tionPolicy");var ve=!1,kr=r(()=>{ve||(kt(),Zt(),jt(),Qt("@ez4/aws-function",{"deploy:prepareI\
|
|
130
|
+
dentityAccount":we,"deploy:prepareExecutionPolicy":Pe}),X(),ae(),Fe(),ve=!0)},"r\
|
|
131
|
+
egisterTriggers");import{toKebabCase as Jt,hashData as Kt}from"@ez4/utils";import{attachEntry as _t}from"@ez4/stateful";var _r=r((e,t,n,o)=>{let i=Jt(o.functionName),s=Kt(g,t.entryId,i),p=[t.entryId];
|
|
132
|
+
return n&&p.push(n.entryId),_t(e,{type:g,entryId:s,dependencies:p,parameters:{...o,
|
|
133
|
+
functionName:i}})},"createFunction");import{attachEntry as Xt}from"@ez4/stateful";import{hashData as Ce}from"@ez4/utils";var Re=r(e=>e.type===y,"isPermissionState");var ao=r((e,t,n,o)=>{let i=Ce(y,t.entryId,n.entryId);return Xt(e,{type:y,entryId:i,
|
|
134
|
+
dependencies:[t.entryId,n.entryId],parameters:o})},"createPermission"),po=r((e,t,n)=>{
|
|
135
|
+
let o=Ce(y,t.entryId,n.entryId),i=e[o];return i&&Re(i)?i:null},"getPermission");import{hashData as Yt}from"@ez4/utils";import{attachEntry as en}from"@ez4/stateful";var fo=r((e,t,n,o)=>{let i=Yt(F,t.entryId,n.entryId);return en(e,{type:F,entryId:i,
|
|
136
|
+
dependencies:[t.entryId,n.entryId],parameters:o})},"createMapping");var wo=r(e=>e.type===F,"isMappingState");var vo=r((e,t,n)=>`arn:aws:lambda:${e}:${t}:function:${n}`,"buildFunctionArn");export{a as FunctionServiceName,g as FunctionServiceType,pe as MappingService,d as MappingServiceName,
|
|
137
|
+
F as MappingServiceType,x as PermissionServiceName,y as PermissionServiceType,vo as buildFunctionArn,
|
|
138
|
+
_r as createFunction,fo as createMapping,ao as createPermission,On as getFunctionArn,
|
|
139
|
+
P as getFunctionName,Bn as getFunctionState,po as getPermission,ee as isFunctionState,
|
|
140
|
+
wo as isMappingState,kr as registerTriggers,st as tryGetFunctionArn,Vn as tryGetFunctionState};
|
|
137
141
|
//# sourceMappingURL=main.mjs.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ez4/aws-function",
|
|
3
3
|
"description": "EZ4: Self-managed AWS lambda function provider",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.29.0",
|
|
5
5
|
"author": "Silas B.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
@@ -39,12 +39,12 @@
|
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@aws-sdk/client-lambda": "^3.758.0",
|
|
42
|
-
"@ez4/aws-common": "^0.
|
|
43
|
-
"@ez4/aws-identity": "^0.
|
|
44
|
-
"@ez4/aws-logs": "^0.
|
|
45
|
-
"@ez4/project": "^0.
|
|
46
|
-
"@ez4/stateful": "^0.
|
|
47
|
-
"@ez4/utils": "^0.
|
|
42
|
+
"@ez4/aws-common": "^0.29.0",
|
|
43
|
+
"@ez4/aws-identity": "^0.29.0",
|
|
44
|
+
"@ez4/aws-logs": "^0.29.0",
|
|
45
|
+
"@ez4/project": "^0.29.0",
|
|
46
|
+
"@ez4/stateful": "^0.29.0",
|
|
47
|
+
"@ez4/utils": "^0.29.0",
|
|
48
48
|
"@types/adm-zip": "^0.5.5",
|
|
49
49
|
"adm-zip": "^0.5.14"
|
|
50
50
|
}
|