@ez4/aws-function 0.6.0 → 0.7.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/utils.d.ts +2 -2
- package/dist/main.cjs +22 -22
- package/dist/main.mjs +29 -29
- package/package.json +6 -6
package/dist/function/utils.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { EntryState, StepContext } from '@ez4/stateful';
|
|
2
2
|
import type { FunctionState } from './types.js';
|
|
3
3
|
export declare const isFunctionState: (resource: EntryState) => resource is FunctionState;
|
|
4
|
-
export declare const getFunctionName:
|
|
5
|
-
export declare const getFunctionArn:
|
|
4
|
+
export declare const getFunctionName: (serviceName: string, resourceId: string, context: StepContext) => string;
|
|
5
|
+
export declare const getFunctionArn: (serviceName: string, resourceId: string, context: StepContext) => `arn:aws:${string}:${string}:${string}:${string}`;
|
package/dist/main.cjs
CHANGED
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
typeof t=="object"||typeof t=="function")for(let o of Le(t))!Be.call(e,o)&&o!==r&&
|
|
3
3
|
b(e,o,{get:()=>t[o],enumerable:!(n=Ve(t,o))||n.enumerable});return e};var ke=(e,t,r)=>(r=e!=null?je($e(e)):{},V(t||!e||!e.__esModule?b(r,"default",{value:e,
|
|
4
4
|
enumerable:!0}):r,e)),Ge=e=>V(b({},"__esModule",{value:!0}),e);var Rt={};Ze(Rt,{FunctionServiceName:()=>i,FunctionServiceType:()=>m,MappingServiceName:()=>g,
|
|
5
|
-
MappingServiceType:()=>
|
|
6
|
-
createFunction:()=>
|
|
5
|
+
MappingServiceType:()=>f,PermissionServiceName:()=>w,PermissionServiceType:()=>y,
|
|
6
|
+
createFunction:()=>dt,createMapping:()=>xt,createPermission:()=>Pt,getFunction:()=>St,
|
|
7
7
|
getFunctionArn:()=>rt,getFunctionName:()=>R,getPermission:()=>wt,isFunctionState:()=>D,
|
|
8
|
-
isMappingState:()=>Ft,registerTriggers:()=>
|
|
8
|
+
isMappingState:()=>Ft,registerTriggers:()=>ft});module.exports=Ge(Rt);var Ne=require("@ez4/aws-common"),Ie=require("@ez4/aws-identity"),he=require("@ez4/project/library");var ne=require("@ez4/aws-common");var Y=require("@aws-sdk/client-lambda"),F=require("@ez4/aws-common"),u=require("@ez4/utils"),
|
|
9
9
|
U=require("@ez4/aws-identity");var a=require("@aws-sdk/client-lambda"),S=require("@ez4/aws-common");var L=require("@ez4/aws-common"),$=require("@ez4/utils");var i="AWS:Lambda/Function",m="aws:lambda.function";var We=/[a-z][\w]+/i,Oe=e=>We.test(e),h=e=>{for(let t in e)if(!Oe(t))throw new L.InvalidParameterError(
|
|
10
10
|
i,`${t} is an invalid variable name .`)},M=e=>{let t={};for(let r in e)t[r]=(0,$.hashData)(
|
|
11
11
|
e[r]);return t};var B=ke(require("adm-zip"),1),Z=require("node:fs/promises"),k=async(e,t)=>{let r=new B.default,
|
|
12
12
|
n=await(0,Z.readFile)(e);return r.addFile(t,n),r.toBufferPromise()};var P=new a.LambdaClient({}),T={minDelay:15,maxWaitTime:1800,maxDelay:60,client:P},
|
|
13
13
|
G=async e=>{let{functionName:t,variables:r}=e;S.Logger.logCreate(i,t),r&&h(r);let{
|
|
14
|
-
description:n,memory:o,timeout:s,roleArn:c,handlerName:l,sourceFile:x,tags:
|
|
14
|
+
description:n,memory:o,timeout:s,roleArn:c,handlerName:l,sourceFile:x,tags:d}=e,
|
|
15
15
|
He=(await P.send(new a.CreateFunctionCommand({Publish:!0,FunctionName:t,Description:n,
|
|
16
16
|
MemorySize:o,Timeout:s,Role:c,PackageType:"Zip",Handler:X(l),Runtime:"nodejs20.x",
|
|
17
|
-
Code:{ZipFile:await Q(x)},Environment:{Variables:r},Tags:{...
|
|
17
|
+
Code:{ZipFile:await Q(x)},Environment:{Variables:r},Tags:{...d,ManagedBy:"EZ4"}}))).
|
|
18
18
|
FunctionArn;return await(0,a.waitUntilFunctionActive)(T,{FunctionName:t}),{functionArn:He}},
|
|
19
19
|
W=async(e,t)=>{S.Logger.logTag(i,e),await P.send(new a.TagResourceCommand({Resource:e,
|
|
20
20
|
Tags:{...t,ManagedBy:"EZ4"}}))},O=async(e,t)=>{S.Logger.logUntag(i,e),await P.send(
|
|
@@ -36,11 +36,11 @@ sourceHash:t.result?.sourceHash});if(o.counts)return{...o,name:r.functionName}},
|
|
|
36
36
|
Je=async(e,t,r)=>{if(t.result)throw new F.ReplaceResourceError(i,e.entryId,t.entryId);
|
|
37
37
|
return re(e,r)},re=async(e,t)=>{let r=e.parameters,n=r.functionName,o=(0,U.getRoleArn)(
|
|
38
38
|
i,n,t),s=r.sourceFile,c=await(0,u.hashFile)(s),l,x=await(0,u.waitFor)(async()=>{
|
|
39
|
-
try{return await G({...r,sourceFile:s,roleArn:o})}catch(
|
|
40
|
-
throw
|
|
39
|
+
try{return await G({...r,sourceFile:s,roleArn:o})}catch(d){if(!(d instanceof Y.InvalidParameterValueException))
|
|
40
|
+
throw d;return l=d,null}});if(!x)throw l;return te(e),{functionArn:x.functionArn,
|
|
41
41
|
sourceHash:c,roleArn:o}},Qe=async(e,t,r)=>{let{parameters:n,result:o}=e;if(!o)return;
|
|
42
42
|
let s=n.functionName,c=(0,U.getRoleArn)(i,s,r),l=t.result?.roleArn??c,x={...n,roleArn:c},
|
|
43
|
-
|
|
43
|
+
d={...t.parameters,roleArn:l};await Promise.all([Ye(s,x,d),et(o.functionArn,n,t.
|
|
44
44
|
parameters)]);let j=await tt(s,n,t.result);return te(e),{...o,roleArn:c,sourceHash:j}},
|
|
45
45
|
Xe=async e=>{let{result:t,parameters:r}=e;t&&await(0,F.waitDeletion)(()=>J(r.functionName))},
|
|
46
46
|
Ye=async(e,t,r)=>{let n={...t,...t.variables&&{variables:M(t.variables)}};!(0,u.deepEqual)(
|
|
@@ -59,15 +59,15 @@ if(t.result)throw new pe.ReplaceResourceError(w,e.entryId,t.entryId);return me(e
|
|
|
59
59
|
r)},me=async(e,t)=>{let r=e.parameters,n=R(w,"permission",t),o=await r.getPermission(
|
|
60
60
|
t);return{statementId:(await ae({functionName:n,principal:o.principal,sourceArn:o.
|
|
61
61
|
sourceArn,action:"lambda:InvokeFunction"})).statementId,functionName:n}},at=async()=>{},
|
|
62
|
-
it=async e=>{let t=e.result;t&&await ie(t.functionName,t.statementId)};var le=()=>{(0,ue.registerProvider)(y,ce())};var Re=require("@ez4/aws-common");var we=require("@ez4/aws-common"),I=require("@ez4/utils");var p=require("@aws-sdk/client-lambda"),
|
|
62
|
+
it=async e=>{let t=e.result;t&&await ie(t.functionName,t.statementId)};var le=()=>{(0,ue.registerProvider)(y,ce())};var Re=require("@ez4/aws-common");var we=require("@ez4/aws-common"),I=require("@ez4/utils");var p=require("@aws-sdk/client-lambda"),v=require("@ez4/aws-common"),ye=require("@ez4/utils");var g="AWS:Lambda/Mapping",f="aws:lambda.mapping";var N=new p.LambdaClient({}),ge=async e=>{let{sourceArn:t,functionName:r}=e;v.Logger.
|
|
63
63
|
logCreate(g,r);let o=(await N.send(new p.CreateEventSourceMappingCommand({FunctionName:r,
|
|
64
|
-
EventSourceArn:t,...Pe(e)}))).UUID;return await Se(o),{eventId:o}},
|
|
65
|
-
let{functionName:r}=t;
|
|
66
|
-
{UUID:e,FunctionName:r,...Pe(t)})),await Se(e)},
|
|
64
|
+
EventSourceArn:t,...Pe(e)}))).UUID;return await Se(o),{eventId:o}},fe=async(e,t)=>{
|
|
65
|
+
let{functionName:r}=t;v.Logger.logUpdate(g,`${r} (${e})`),await N.send(new p.UpdateEventSourceMappingCommand(
|
|
66
|
+
{UUID:e,FunctionName:r,...Pe(t)})),await Se(e)},de=async e=>{v.Logger.logDelete(
|
|
67
67
|
g,e),await N.send(new p.DeleteEventSourceMappingCommand({UUID:e}))},pt=async e=>(await N.
|
|
68
68
|
send(new p.GetEventSourceMappingCommand({UUID:e}))).State,Se=async e=>{let t=new Set(
|
|
69
69
|
["Enabled","Disabled"]);await(0,ye.waitFor)(async()=>{let r=await pt(e);return t.
|
|
70
|
-
has(r)})},Pe=e=>{let{sourceArn:t,enabled:r,concurrency:n,batch:o}=e,{service:s}=(0,
|
|
70
|
+
has(r)})},Pe=e=>{let{sourceArn:t,enabled:r,concurrency:n,batch:o}=e,{service:s}=(0,v.parseArn)(
|
|
71
71
|
t);return{Enabled:r,...s==="dynamodb"&&{StartingPosition:p.EventSourcePosition.LATEST},
|
|
72
72
|
...s==="sqs"&&n&&{ScalingConfig:{MaximumConcurrency:n}},...o&&{MaximumBatchingWindowInSeconds:o.
|
|
73
73
|
maxWindow,BatchSize:o.batchSize}}};var xe=()=>({equals:ct,create:Fe,replace:ut,preview:mt,update:lt,delete:yt}),ct=(e,t)=>!!e.
|
|
@@ -80,21 +80,21 @@ functionName:n,sourceArn:o})).eventId,functionName:n,sourceArn:o}},lt=async(e,t,
|
|
|
80
80
|
let n=e.result;if(!n)return;let o=n.sourceArn,s=R(g,"mapping",r),c=t.result?.functionName??
|
|
81
81
|
n.functionName;return await gt(n.eventId,{...e.parameters,functionName:s,sourceArn:o},
|
|
82
82
|
{...t.parameters,functionName:c,sourceArn:o}),{...n,functionName:s}},yt=async e=>{
|
|
83
|
-
let t=e.result;t&&await
|
|
84
|
-
await
|
|
85
|
-
(0,
|
|
83
|
+
let t=e.result;t&&await de(t.eventId)},gt=async(e,t,r)=>{!(0,I.deepEqual)(t,r)&&
|
|
84
|
+
await fe(e,t)};var Ce=()=>{(0,Re.registerProvider)(f,xe())};var ve=()=>[{account:"lambda.amazonaws.com"}];var Ae=require("@ez4/aws-identity");var E=require("@ez4/aws-identity"),Ee=async e=>{let[t,r]=await Promise.all([(0,E.getRegion)(),
|
|
85
|
+
(0,E.getAccountId)()]);return(0,E.createPolicyDocument)([{permissions:["logs:Cre\
|
|
86
86
|
ateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],resourceIds:[`arn:aws:l\
|
|
87
87
|
ogs:${t}:${r}:log-group:/aws/lambda/${e}-*:*`]}])};var be=async e=>{let{state:t,options:r}=e,{resourcePrefix:n,projectName:o}=r,s=`${n}\
|
|
88
|
-
-${o}`;return(0,Ae.createPolicy)(t,{policyName:`${s}-lambda-policy`,policyDocument:await
|
|
89
|
-
s)})};var Me=!1,
|
|
90
|
-
"@ez4/aws-function",{"deploy:prepareIdentityAccount":
|
|
91
|
-
Policy":be}),oe(),le(),Ce(),Me=!0)};var A=require("@ez4/utils"),Te=require("@ez4/stateful");var
|
|
88
|
+
-${o}`;return(0,Ae.createPolicy)(t,{policyName:`${s}-lambda-policy`,policyDocument:await Ee(
|
|
89
|
+
s)})};var Me=!1,ft=()=>{Me||((0,Ne.registerTriggers)(),(0,Ie.registerTriggers)(),(0,he.createTrigger)(
|
|
90
|
+
"@ez4/aws-function",{"deploy:prepareIdentityAccount":ve,"deploy:prepareExecution\
|
|
91
|
+
Policy":be}),oe(),le(),Ce(),Me=!0)};var A=require("@ez4/utils"),Te=require("@ez4/stateful");var dt=(e,t,r)=>{let n=(0,A.toKebabCase)(r.functionName),o=(0,A.hashData)(m,t.entryId,
|
|
92
92
|
n);return(0,Te.attachEntry)(e,{type:m,entryId:o,dependencies:[t.entryId],parameters:{
|
|
93
93
|
...r,functionName:n}})},St=(e,t,r)=>{let n=(0,A.toKebabCase)(r),o=(0,A.hashData)(
|
|
94
94
|
m,t.entryId,n),s=e[o];return s&&D(s)?s:null};var ze=require("@ez4/stateful"),H=require("@ez4/utils");var Ue=e=>e.type===y;var Pt=(e,t,r,n)=>{let o=(0,H.hashData)(y,t.entryId,r.entryId);return(0,ze.attachEntry)(
|
|
95
95
|
e,{type:y,entryId:o,dependencies:[t.entryId,r.entryId],parameters:n})},wt=(e,t,r)=>{
|
|
96
|
-
let n=(0,H.hashData)(y,t.entryId,r.entryId),o=e[n];return o&&Ue(o)?o:null};var De=require("@ez4/utils"),qe=require("@ez4/stateful");var xt=(e,t,r,n)=>{let o=(0,De.hashData)(
|
|
97
|
-
e,{type:
|
|
96
|
+
let n=(0,H.hashData)(y,t.entryId,r.entryId),o=e[n];return o&&Ue(o)?o:null};var De=require("@ez4/utils"),qe=require("@ez4/stateful");var xt=(e,t,r,n)=>{let o=(0,De.hashData)(f,t.entryId,r.entryId);return(0,qe.attachEntry)(
|
|
97
|
+
e,{type:f,entryId:o,dependencies:[t.entryId,r.entryId],parameters:n})};var Ft=e=>e.type===f;0&&(module.exports={FunctionServiceName,FunctionServiceType,MappingServiceName,MappingServiceType,
|
|
98
98
|
PermissionServiceName,PermissionServiceType,createFunction,createMapping,createPermission,
|
|
99
99
|
getFunction,getFunctionArn,getFunctionName,getPermission,isFunctionState,isMappingState,
|
|
100
100
|
registerTriggers});
|
package/dist/main.mjs
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import{registerTriggers as Rt}from"@ez4/aws-common";import{registerTriggers as Ct}from"@ez4/aws-identity";
|
|
2
|
-
import{createTrigger as
|
|
2
|
+
import{createTrigger as vt}from"@ez4/project/library";import{registerProvider as Be}from"@ez4/aws-common";import{InvalidParameterValueException as be}from"@aws-sdk/client-lambda";import{
|
|
3
3
|
applyTagUpdates as Me,ReplaceResourceError as Ne,waitDeletion as Ie}from"@ez4/aws-common";
|
|
4
4
|
import{deepCompare as he,deepEqual as Te,hashFile as C,waitFor as Ue}from"@ez4/utils";
|
|
5
5
|
import{getRoleArn as q}from"@ez4/aws-identity";import{CreateFunctionCommand as we,DeleteFunctionCommand as xe,LambdaClient as Fe,
|
|
6
|
-
TagResourceCommand as Re,UntagResourceCommand as Ce,UpdateFunctionCodeCommand as
|
|
7
|
-
UpdateFunctionConfigurationCommand as
|
|
8
|
-
import{Logger as
|
|
6
|
+
TagResourceCommand as Re,UntagResourceCommand as Ce,UpdateFunctionCodeCommand as ve,
|
|
7
|
+
UpdateFunctionConfigurationCommand as Ee,waitUntilFunctionActive as Ae,waitUntilFunctionUpdated as b}from"@aws-sdk/client-lambda";
|
|
8
|
+
import{Logger as d}from"@ez4/aws-common";import{InvalidParameterError as ye}from"@ez4/aws-common";import{hashData as ge}from"@ez4/utils";var a="AWS:Lambda/Function",p="aws:lambda.function";var fe=/[a-z][\w]+/i,de=e=>fe.test(e),F=e=>{for(let t in e)if(!de(t))throw new ye(
|
|
9
9
|
a,`${t} is an invalid variable name .`)},w=e=>{let t={};for(let r in e)t[r]=ge(e[r]);
|
|
10
10
|
return t};import Se from"adm-zip";import{readFile as Pe}from"node:fs/promises";var A=async(e,t)=>{
|
|
11
11
|
let r=new Se,n=await Pe(e);return r.addFile(t,n),r.toBufferPromise()};var y=new Fe({}),R={minDelay:15,maxWaitTime:1800,maxDelay:60,client:y},M=async e=>{
|
|
12
|
-
let{functionName:t,variables:r}=e;
|
|
13
|
-
timeout:s,roleArn:i,handlerName:c,sourceFile:
|
|
12
|
+
let{functionName:t,variables:r}=e;d.logCreate(a,t),r&&F(r);let{description:n,memory:o,
|
|
13
|
+
timeout:s,roleArn:i,handlerName:c,sourceFile:f,tags:l}=e,le=(await y.send(new we(
|
|
14
14
|
{Publish:!0,FunctionName:t,Description:n,MemorySize:o,Timeout:s,Role:i,PackageType:"\
|
|
15
|
-
Zip",Handler:D(c),Runtime:"nodejs20.x",Code:{ZipFile:await z(
|
|
15
|
+
Zip",Handler:D(c),Runtime:"nodejs20.x",Code:{ZipFile:await z(f)},Environment:{Variables:r},
|
|
16
16
|
Tags:{...l,ManagedBy:"EZ4"}}))).FunctionArn;return await Ae(R,{FunctionName:t}),
|
|
17
|
-
{functionArn:le}},N=async(e,t)=>{
|
|
18
|
-
...t,ManagedBy:"EZ4"}}))},I=async(e,t)=>{
|
|
19
|
-
TagKeys:t}))},h=async(e,t)=>{
|
|
20
|
-
await y.send(new
|
|
21
|
-
FunctionName:e})},T=async(e,t)=>{let{variables:r}=t;
|
|
17
|
+
{functionArn:le}},N=async(e,t)=>{d.logTag(a,e),await y.send(new Re({Resource:e,Tags:{
|
|
18
|
+
...t,ManagedBy:"EZ4"}}))},I=async(e,t)=>{d.logUntag(a,e),await y.send(new Ce({Resource:e,
|
|
19
|
+
TagKeys:t}))},h=async(e,t)=>{d.logUpdate(a,`${e} source code`);let{sourceFile:r}=t;
|
|
20
|
+
await y.send(new ve({FunctionName:e,ZipFile:await z(r),Publish:!0})),await b(R,{
|
|
21
|
+
FunctionName:e})},T=async(e,t)=>{let{variables:r}=t;d.logUpdate(a,`${e} configur\
|
|
22
22
|
ation`),r&&F(r);let{description:n,memory:o,timeout:s,roleArn:i,handlerName:c}=t;
|
|
23
|
-
await y.send(new
|
|
23
|
+
await y.send(new Ee({FunctionName:e,Description:n,MemorySize:o,Timeout:s,Role:i,
|
|
24
24
|
...c&&{Handler:D(c)},Environment:{Variables:r}})),await b(R,{FunctionName:e})},U=async e=>{
|
|
25
|
-
|
|
25
|
+
d.logDelete(a,e),await y.send(new xe({FunctionName:e}))},z=e=>A(e,"main.mjs"),D=e=>`\
|
|
26
26
|
main.${e}`;var H=()=>({equals:ze,create:V,replace:qe,preview:De,update:He,delete:je}),j=e=>{
|
|
27
27
|
let{parameters:t}=e;return t.variables&&(t.variables=w(t.variables)),e},ze=(e,t)=>!!e.
|
|
28
28
|
result&&e.result.functionArn===t.result?.functionArn,De=async(e,t)=>{let r=e.parameters,
|
|
@@ -30,13 +30,13 @@ n=t.parameters,o=he({...r,dependencies:e.dependencies,sourceHash:await C(r.sourc
|
|
|
30
30
|
...r.variables&&{variables:w(r.variables)}},{...n,dependencies:t.dependencies,sourceHash:t.
|
|
31
31
|
result?.sourceHash});if(o.counts)return{...o,name:r.functionName}},qe=async(e,t,r)=>{
|
|
32
32
|
if(t.result)throw new Ne(a,e.entryId,t.entryId);return V(e,r)},V=async(e,t)=>{let r=e.
|
|
33
|
-
parameters,n=r.functionName,o=q(a,n,t),s=r.sourceFile,i=await C(s),c,
|
|
33
|
+
parameters,n=r.functionName,o=q(a,n,t),s=r.sourceFile,i=await C(s),c,f=await Ue(
|
|
34
34
|
async()=>{try{return await M({...r,sourceFile:s,roleArn:o})}catch(l){if(!(l instanceof
|
|
35
|
-
be))throw l;return c=l,null}});if(!
|
|
35
|
+
be))throw l;return c=l,null}});if(!f)throw c;return j(e),{functionArn:f.functionArn,
|
|
36
36
|
sourceHash:i,roleArn:o}},He=async(e,t,r)=>{let{parameters:n,result:o}=e;if(!o)return;
|
|
37
|
-
let s=n.functionName,i=q(a,s,r),c=t.result?.roleArn??i,
|
|
38
|
-
parameters,roleArn:c};await Promise.all([Ve(s,
|
|
39
|
-
let
|
|
37
|
+
let s=n.functionName,i=q(a,s,r),c=t.result?.roleArn??i,f={...n,roleArn:i},l={...t.
|
|
38
|
+
parameters,roleArn:c};await Promise.all([Ve(s,f,l),Le(o.functionArn,n,t.parameters)]);
|
|
39
|
+
let E=await $e(s,n,t.result);return j(e),{...o,roleArn:i,sourceHash:E}},je=async e=>{
|
|
40
40
|
let{result:t,parameters:r}=e;t&&await Ie(()=>U(r.functionName))},Ve=async(e,t,r)=>{
|
|
41
41
|
let n={...t,...t.variables&&{variables:w(t.variables)}};!Te(n,r,{sourceFile:!0,functionName:!0,
|
|
42
42
|
tags:!0})&&await T(e,t)},Le=async(e,t,r)=>{await Me(t.tags,r.tags,n=>N(e,n),n=>I(
|
|
@@ -57,17 +57,17 @@ eFunction"})).statementId,functionName:n}},Je=async()=>{},Qe=async e=>{let t=e.r
|
|
|
57
57
|
t&&await W(t.functionName,t.statementId)};var _=()=>{Xe(m,O())};import{registerProvider as St}from"@ez4/aws-common";import{ReplaceResourceError as pt}from"@ez4/aws-common";import{deepCompare as ct,
|
|
58
58
|
deepEqual as mt}from"@ez4/utils";import{CreateEventSourceMappingCommand as Ye,UpdateEventSourceMappingCommand as et,
|
|
59
59
|
DeleteEventSourceMappingCommand as tt,GetEventSourceMappingCommand as rt,EventSourcePosition as nt,
|
|
60
|
-
LambdaClient as ot}from"@aws-sdk/client-lambda";import{Logger as
|
|
61
|
-
import{waitFor as at}from"@ez4/utils";var u="AWS:Lambda/Mapping",g="aws:lambda.mapping";var x=new ot({}),J=async e=>{let{sourceArn:t,functionName:r}=e;
|
|
60
|
+
LambdaClient as ot}from"@aws-sdk/client-lambda";import{Logger as v,parseArn as st}from"@ez4/aws-common";
|
|
61
|
+
import{waitFor as at}from"@ez4/utils";var u="AWS:Lambda/Mapping",g="aws:lambda.mapping";var x=new ot({}),J=async e=>{let{sourceArn:t,functionName:r}=e;v.logCreate(u,r);
|
|
62
62
|
let o=(await x.send(new Ye({FunctionName:r,EventSourceArn:t,...ee(e)}))).UUID;return await Y(
|
|
63
|
-
o),{eventId:o}},Q=async(e,t)=>{let{functionName:r}=t;
|
|
64
|
-
await x.send(new et({UUID:e,FunctionName:r,...ee(t)})),await Y(e)},X=async e=>{
|
|
63
|
+
o),{eventId:o}},Q=async(e,t)=>{let{functionName:r}=t;v.logUpdate(u,`${r} (${e})`),
|
|
64
|
+
await x.send(new et({UUID:e,FunctionName:r,...ee(t)})),await Y(e)},X=async e=>{v.
|
|
65
65
|
logDelete(u,e),await x.send(new tt({UUID:e}))},it=async e=>(await x.send(new rt(
|
|
66
66
|
{UUID:e}))).State,Y=async e=>{let t=new Set(["Enabled","Disabled"]);await at(async()=>{
|
|
67
67
|
let r=await it(e);return t.has(r)})},ee=e=>{let{sourceArn:t,enabled:r,concurrency:n,
|
|
68
68
|
batch:o}=e,{service:s}=st(t);return{Enabled:r,...s==="dynamodb"&&{StartingPosition:nt.
|
|
69
69
|
LATEST},...s==="sqs"&&n&&{ScalingConfig:{MaximumConcurrency:n}},...o&&{MaximumBatchingWindowInSeconds:o.
|
|
70
|
-
maxWindow,BatchSize:o.batchSize}}};var te=()=>({equals:ut,create:re,replace:yt,preview:lt,update:gt,delete:
|
|
70
|
+
maxWindow,BatchSize:o.batchSize}}};var te=()=>({equals:ut,create:re,replace:yt,preview:lt,update:gt,delete:ft}),ut=(e,t)=>!!e.
|
|
71
71
|
result&&e.result.eventId===t.result?.eventId,lt=async(e,t)=>{let r={...e.parameters,
|
|
72
72
|
dependencies:e.dependencies},n={...t.parameters,dependencies:t.dependencies},o=ct(
|
|
73
73
|
r,n,{getSourceArn:!0});return o.counts?o:void 0},yt=async(e,t,r)=>{if(t.result)throw new pt(
|
|
@@ -75,14 +75,14 @@ u,e.entryId,t.entryId);return re(e,r)},re=async(e,t)=>{let r=e.parameters,n=P(u,
|
|
|
75
75
|
"mapping",t),o=await r.getSourceArn(t);return{eventId:(await J({...e.parameters,
|
|
76
76
|
functionName:n,sourceArn:o})).eventId,functionName:n,sourceArn:o}},gt=async(e,t,r)=>{
|
|
77
77
|
let n=e.result;if(!n)return;let o=n.sourceArn,s=P(u,"mapping",r),i=t.result?.functionName??
|
|
78
|
-
n.functionName;return await
|
|
79
|
-
{...t.parameters,functionName:i,sourceArn:o}),{...n,functionName:s}},
|
|
80
|
-
let t=e.result;t&&await X(t.eventId)},
|
|
78
|
+
n.functionName;return await dt(n.eventId,{...e.parameters,functionName:s,sourceArn:o},
|
|
79
|
+
{...t.parameters,functionName:i,sourceArn:o}),{...n,functionName:s}},ft=async e=>{
|
|
80
|
+
let t=e.result;t&&await X(t.eventId)},dt=async(e,t,r)=>{!mt(t,r)&&await Q(e,t)};var ne=()=>{St(g,te())};var oe=()=>[{account:"lambda.amazonaws.com"}];import{createPolicy as Ft}from"@ez4/aws-identity";import{getAccountId as Pt,getRegion as wt,createPolicyDocument as xt}from"@ez4/aws-identity";
|
|
81
81
|
var se=async e=>{let[t,r]=await Promise.all([wt(),Pt()]);return xt([{permissions:[
|
|
82
82
|
"logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],resourceIds:[`\
|
|
83
83
|
arn:aws:logs:${t}:${r}:log-group:/aws/lambda/${e}-*:*`]}])};var ae=async e=>{let{state:t,options:r}=e,{resourcePrefix:n,projectName:o}=r,s=`${n}\
|
|
84
|
-
-${o}`;return Ft(t,{policyName:`${s}-lambda-policy`,policyDocument:await se(s)})};var ie=!1,_r=()=>{ie||(Rt(),Ct(),
|
|
85
|
-
Account":oe,"deploy:prepareExecutionPolicy":ae}),L(),_(),ne(),ie=!0)};import{toKebabCase as pe,hashData as ce}from"@ez4/utils";import{attachEntry as
|
|
84
|
+
-${o}`;return Ft(t,{policyName:`${s}-lambda-policy`,policyDocument:await se(s)})};var ie=!1,_r=()=>{ie||(Rt(),Ct(),vt("@ez4/aws-function",{"deploy:prepareIdentity\
|
|
85
|
+
Account":oe,"deploy:prepareExecutionPolicy":ae}),L(),_(),ne(),ie=!0)};import{toKebabCase as pe,hashData as ce}from"@ez4/utils";import{attachEntry as Et}from"@ez4/stateful";var tn=(e,t,r)=>{let n=pe(r.functionName),o=ce(p,t.entryId,n);return Et(e,{type:p,
|
|
86
86
|
entryId:o,dependencies:[t.entryId],parameters:{...r,functionName:n}})},rn=(e,t,r)=>{
|
|
87
87
|
let n=pe(r),o=ce(p,t.entryId,n),s=e[o];return s&&B(s)?s:null};import{attachEntry as At}from"@ez4/stateful";import{hashData as ue}from"@ez4/utils";var me=e=>e.type===m;var un=(e,t,r,n)=>{let o=ue(m,t.entryId,r.entryId);return At(e,{type:m,entryId:o,
|
|
88
88
|
dependencies:[t.entryId,r.entryId],parameters:n})},ln=(e,t,r)=>{let n=ue(m,t.entryId,
|
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.7.0",
|
|
5
5
|
"author": "Silas B.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
@@ -37,14 +37,14 @@
|
|
|
37
37
|
"live:publish": "npm run test && npm publish --access public"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
|
-
"@ez4/project": "^0.
|
|
40
|
+
"@ez4/project": "^0.7.0"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@aws-sdk/client-lambda": "^3.614.0",
|
|
44
|
-
"@ez4/aws-common": "^0.
|
|
45
|
-
"@ez4/aws-identity": "^0.
|
|
46
|
-
"@ez4/stateful": "^0.
|
|
47
|
-
"@ez4/utils": "^0.
|
|
44
|
+
"@ez4/aws-common": "^0.7.0",
|
|
45
|
+
"@ez4/aws-identity": "^0.7.0",
|
|
46
|
+
"@ez4/stateful": "^0.7.0",
|
|
47
|
+
"@ez4/utils": "^0.7.0",
|
|
48
48
|
"@types/adm-zip": "^0.5.5",
|
|
49
49
|
"adm-zip": "^0.5.14"
|
|
50
50
|
}
|