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