diff --git a/.projen/tasks.json b/.projen/tasks.json
index 4b60ec6..c07da45 100644
--- a/.projen/tasks.json
+++ b/.projen/tasks.json
@@ -191,6 +191,9 @@
"steps": [
{
"spawn": "docgen"
+ },
+ {
+ "exec": "cp src/layer.Dockerfile lib/layer.Dockerfile"
}
]
},
diff --git a/.projenrc.ts b/.projenrc.ts
index 2bd6675..1ddd90b 100644
--- a/.projenrc.ts
+++ b/.projenrc.ts
@@ -42,6 +42,7 @@ const project = new awscdk.AwsCdkConstructLibrary({
},
});
+project.projectBuild.postCompileTask.exec('cp src/layer.Dockerfile lib/layer.Dockerfile');
project.addPackageIgnore('.tmp');
// required to run integ tests
project.projectBuild.testTask.exec('npm ci', { cwd: join('example', 'lambda') });
diff --git a/API.md b/API.md
index 92519e4..10e5031 100644
--- a/API.md
+++ b/API.md
@@ -1231,6 +1231,7 @@ const llrtFunctionProps: LlrtFunctionProps = { ... }
| llrtBinaryPath | string | A custom relative path to use as a local LLRT bootstrap binary. |
| llrtBinaryType | LlrtBinaryType | The type of LLRT bundle to use. |
| llrtVersion | string | The version of LLRT. |
+| useLambdaLayer | boolean | If `true` then the LLRT runtime will be built in a layer that can be shared amongst other `LLrtFunction`s that utilize the same `llrtBinaryType`, `llrtVersion` and `architecture`. |
---
@@ -2203,6 +2204,21 @@ See https://github.com/awslabs/llrt/releases
---
+##### `useLambdaLayer`Optional
+
+```typescript
+public readonly useLambdaLayer: boolean;
+```
+
+- *Type:* boolean
+- *Default:* false
+
+If `true` then the LLRT runtime will be built in a layer that can be shared amongst other `LLrtFunction`s that utilize the same `llrtBinaryType`, `llrtVersion` and `architecture`.
+
+This feature cannot be used with `llrtBinaryPath` and if both are set a ValidationError will be thrown.
+
+---
+
## Enums
diff --git a/README.md b/README.md
index c5ee14a..3b61597 100644
--- a/README.md
+++ b/README.md
@@ -24,7 +24,11 @@ If you are already using `NodejsFunction` construct, you should be able to just
> [!WARNING]
> LLRT is currently experimental and not fully compatible with Node.js. You should expect some trial and errors to use LLRT with your existing code.
-If you want to upgrade the LLRT version, remove the `.tmp` directory, which contains the cache of LLRT binary fetched from GitHub (only applicable when you set `llrtVersion` to `latest` (default)).
+### LLRT version
+
+By default the latest version of LLRT is fetched from GitHub (unless you set `llrtVersion`). This LLRT binary is cached, in a `.tmp` directory or inside a docker image if you set `useLambdaLayer`.
+
+If you want to upgrade the LLRT version you will need to remove the `.tmp` directory or remove the docker images (the images can be identified during the cdk build e.g. `docker.io/library/cdk-926fb3006b78cf5a5efe8e6485491147c08a50b8ada8272a6761a8ddc85b2aec:latest` and can be removed using `docker image rm `).
### Setting platform=browser
@@ -84,5 +88,17 @@ const handler = new LlrtFunction(this, 'Handler', {
});
```
+### LLRT Layer
+
+By default, CDK Lambda LLRT bundles the LLRT bootstrap binary directly in your lambda function.
+If you want to package the binary in a separate layer that can be shared amongst functions then set `llrtLayer` to `true`.
+
+```ts
+const handler = new LlrtFunction(this, 'Handler', {
+ entry: 'lambda/index.ts',
+ llrtLayer: true
+});
+```
+
## Examples
See [example](./example/README.md) for examples to use `LlrtFunction` construct.
diff --git a/example/index.ts b/example/index.ts
index 771d87d..f08c586 100644
--- a/example/index.ts
+++ b/example/index.ts
@@ -98,6 +98,22 @@ class LlrtFunctionTestStack extends Stack {
const resource = api.root.addResource('ssr');
resource.addMethod('GET', new LambdaIntegration(handler));
}
+
+ {
+ // multiple lambda functions using a shared layer
+ new Array(3).fill(0).map((_, i) => {
+ const handler = new LlrtFunction(this, `LayerHandler${i}`, {
+ entry: '../example/lambda/s3.ts',
+ useLambdaLayer: true,
+ });
+ handler.addToRolePolicy(
+ new PolicyStatement({
+ actions: ['s3:ListAllMyBuckets'],
+ resources: ['*'],
+ })
+ );
+ })
+ }
}
}
diff --git a/src/layer.Dockerfile b/src/layer.Dockerfile
new file mode 100644
index 0000000..3d7989f
--- /dev/null
+++ b/src/layer.Dockerfile
@@ -0,0 +1,8 @@
+# Used to build assets when useLambdaLayer is true. Downloads the LLRT runtime
+# specified by the URL argument and expands it to the /assets folder
+FROM alpine
+
+ARG URL=https://github.com/awslabs/llrt/releases/latest/download/llrt-lambda-x64.zip
+
+RUN wget -O llrt_temp.zip ${URL} && \
+ unzip llrt_temp.zip -d /asset
\ No newline at end of file
diff --git a/src/llrt-function.ts b/src/llrt-function.ts
index 3dc07cf..f17e8bb 100644
--- a/src/llrt-function.ts
+++ b/src/llrt-function.ts
@@ -1,6 +1,6 @@
import { posix } from 'path';
-import { CfnResource } from 'aws-cdk-lib';
-import { Architecture, Runtime, RuntimeFamily } from 'aws-cdk-lib/aws-lambda';
+import { CfnResource, Stack } from 'aws-cdk-lib';
+import { Architecture, Code, ILayerVersion, LayerVersion, Runtime, RuntimeFamily } from 'aws-cdk-lib/aws-lambda';
import { ICommandHooks, NodejsFunction, NodejsFunctionProps, OutputFormat } from 'aws-cdk-lib/aws-lambda-nodejs';
import { Construct } from 'constructs';
@@ -46,12 +46,26 @@ export interface LlrtFunctionProps extends NodejsFunctionProps {
* @default - If this option is not provided, the LLRT binary is downloaded from GitHub and cached in the .tmp directory.
*/
readonly llrtBinaryPath?: string;
+
+ /**
+ * If `true` then the LLRT runtime will be built in a layer that can be shared amongst
+ * other `LLrtFunction`s that utilize the same `llrtBinaryType`, `llrtVersion` and `architecture`.
+ *
+ * This feature cannot be used with `llrtBinaryPath` and if both are set a ValidationError will be thrown.
+ *
+ * @default - false
+ */
+ readonly useLambdaLayer?: boolean;
}
export class LlrtFunction extends NodejsFunction {
constructor(scope: Construct, id: string, props: LlrtFunctionProps) {
+ if (props.useLambdaLayer && props.llrtBinaryPath) {
+ throw new Error("useLambdaLayer not supported with llrtBinaryPath");
+ }
+
const version = props.llrtVersion ?? 'latest';
- const arch = props.architecture == Architecture.ARM_64 ? 'arm64' : 'x64';
+ const arch = props.architecture?.name == Architecture.ARM_64.name ? 'arm64' : 'x64';
const binaryType = props.llrtBinaryType ?? LlrtBinaryType.STANDARD;
let binaryName: string;
@@ -117,18 +131,26 @@ export class LlrtFunction extends NodejsFunction {
const cacheDir = `.tmp/llrt/${version}/${arch}/${binaryType}`;
const { commandHooks: originalCommandHooks, ...otherBundlingProps } = props.bundling ?? {};
- const afterBundlingCommandHook: ICommandHooks['afterBundling'] = (i, o) => !props.llrtBinaryPath ? [
+ const afterBundlingCommandHook: ICommandHooks['afterBundling'] = (i, o) => {
+ // If useLambdaLayer then we'll package the llrt binary with docker later
+ if (props.useLambdaLayer) return [];
+ // Copy llrt binary from llrtBinaryPath
+ if (props.llrtBinaryPath) return [
+ `cp ${posix.join(i, props.llrtBinaryPath)} ${posix.join(o, 'bootstrap')}`,
+ ];
// Download llrt binary from GitHub release and cache it
- `if [ ! -e ${posix.join(i, cacheDir, 'bootstrap')} ]; then
- mkdir -p ${posix.join(i, cacheDir)}
- cd ${posix.join(i, cacheDir)}
- curl -L -o llrt_temp.zip ${binaryUrl}
- unzip llrt_temp.zip
- rm -rf llrt_temp.zip
- cd -
- fi`,
- `cp ${posix.join(i, cacheDir, 'bootstrap')} ${o}`,
- ] : [`cp ${posix.join(i, props.llrtBinaryPath)} ${posix.join(o, 'bootstrap')}`];
+ return [
+ `if [ ! -e ${posix.join(i, cacheDir, 'bootstrap')} ]; then
+ mkdir -p ${posix.join(i, cacheDir)}
+ cd ${posix.join(i, cacheDir)}
+ curl -L -o llrt_temp.zip ${binaryUrl}
+ unzip llrt_temp.zip
+ rm -rf llrt_temp.zip
+ cd -
+ fi`,
+ `cp ${posix.join(i, cacheDir, 'bootstrap')} ${o}`,
+ ];
+ }
super(scope, id, {
// set this to remove an unnecessary environment variable.
@@ -154,6 +176,32 @@ export class LlrtFunction extends NodejsFunction {
},
});
+ if (props.useLambdaLayer) {
+ this.ensureLayer(binaryUrl, binaryName, version);
+ }
+
(this.node.defaultChild as CfnResource).addPropertyOverride('Runtime', 'provided.al2023');
}
+
+ private ensureLayer(binaryUrl: string, binaryName: string, version: string) {
+ const id = `${binaryName.replace("lambda", "layer")}-${version}`;
+
+ let layer = Stack.of(this).node.tryFindChild(id) as ILayerVersion;
+
+ if (!layer) {
+ layer = new LayerVersion(Stack.of(this), id, {
+ code: Code.fromDockerBuild(__dirname, {
+ buildArgs: {
+ URL: binaryUrl,
+ },
+ file: "layer.Dockerfile",
+ }),
+ compatibleArchitectures: [
+ this.architecture,
+ ],
+ });
+ }
+
+ this.addLayers(layer);
+ }
}
diff --git a/test/integ.llrt-function.js.snapshot/LlrtFunctionIntegTestDefaultTestDeployAssertF3D2B976.assets.json b/test/integ.llrt-function.js.snapshot/LlrtFunctionIntegTestDefaultTestDeployAssertF3D2B976.assets.json
index 456f80f..1dd9026 100644
--- a/test/integ.llrt-function.js.snapshot/LlrtFunctionIntegTestDefaultTestDeployAssertF3D2B976.assets.json
+++ b/test/integ.llrt-function.js.snapshot/LlrtFunctionIntegTestDefaultTestDeployAssertF3D2B976.assets.json
@@ -14,16 +14,16 @@
}
}
},
- "286c6bf5a2eda8d84fa67fd1004371db925b13e33838d7fc46026ffaad295c90": {
+ "5ab45ed51a21459ad67b9118a974fd3fbff643528f51f4fefc0ea1d472a8ec23": {
"displayName": "LlrtFunctionIntegTestDefaultTestDeployAssertF3D2B976 Template",
"source": {
"path": "LlrtFunctionIntegTestDefaultTestDeployAssertF3D2B976.template.json",
"packaging": "file"
},
"destinations": {
- "current_account-current_region-734aaede": {
+ "current_account-current_region-d4e8dd96": {
"bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
- "objectKey": "286c6bf5a2eda8d84fa67fd1004371db925b13e33838d7fc46026ffaad295c90.json",
+ "objectKey": "5ab45ed51a21459ad67b9118a974fd3fbff643528f51f4fefc0ea1d472a8ec23.json",
"assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
}
}
diff --git a/test/integ.llrt-function.js.snapshot/LlrtFunctionIntegTestDefaultTestDeployAssertF3D2B976.template.json b/test/integ.llrt-function.js.snapshot/LlrtFunctionIntegTestDefaultTestDeployAssertF3D2B976.template.json
index 64edb0c..0244bec 100644
--- a/test/integ.llrt-function.js.snapshot/LlrtFunctionIntegTestDefaultTestDeployAssertF3D2B976.template.json
+++ b/test/integ.llrt-function.js.snapshot/LlrtFunctionIntegTestDefaultTestDeployAssertF3D2B976.template.json
@@ -27,7 +27,7 @@
}
},
"flattenResponse": "false",
- "salt": "1758002050156"
+ "salt": "1764777304507"
},
"UpdateReplacePolicy": "Delete",
"DeletionPolicy": "Delete"
@@ -272,6 +272,86 @@
]
}
]
+ },
+ {
+ "Action": [
+ "lambda:Invoke"
+ ],
+ "Effect": "Allow",
+ "Resource": [
+ "*"
+ ]
+ },
+ {
+ "Action": [
+ "lambda:InvokeFunction"
+ ],
+ "Effect": "Allow",
+ "Resource": [
+ {
+ "Fn::Join": [
+ "",
+ [
+ "arn:",
+ {
+ "Ref": "AWS::Partition"
+ },
+ ":lambda:",
+ {
+ "Ref": "AWS::Region"
+ },
+ ":",
+ {
+ "Ref": "AWS::AccountId"
+ },
+ ":function:",
+ {
+ "Fn::ImportValue": "LlrtFunctionIntegTestTarget:ExportsOutputRefLayerHandler66021063E725CB82"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ {
+ "Action": [
+ "lambda:Invoke"
+ ],
+ "Effect": "Allow",
+ "Resource": [
+ "*"
+ ]
+ },
+ {
+ "Action": [
+ "lambda:InvokeFunction"
+ ],
+ "Effect": "Allow",
+ "Resource": [
+ {
+ "Fn::Join": [
+ "",
+ [
+ "arn:",
+ {
+ "Ref": "AWS::Partition"
+ },
+ ":lambda:",
+ {
+ "Ref": "AWS::Region"
+ },
+ ":",
+ {
+ "Ref": "AWS::AccountId"
+ },
+ ":function:",
+ {
+ "Fn::ImportValue": "LlrtFunctionIntegTestTarget:ExportsOutputRefLayerArmHandler9147865BF5CAED2B"
+ }
+ ]
+ ]
+ }
+ ]
}
]
}
@@ -334,7 +414,7 @@
}
},
"flattenResponse": "false",
- "salt": "1758002050157"
+ "salt": "1764777304507"
},
"UpdateReplacePolicy": "Delete",
"DeletionPolicy": "Delete"
@@ -381,7 +461,7 @@
}
},
"flattenResponse": "false",
- "salt": "1758002050158"
+ "salt": "1764777304507"
},
"UpdateReplacePolicy": "Delete",
"DeletionPolicy": "Delete"
@@ -428,7 +508,7 @@
}
},
"flattenResponse": "false",
- "salt": "1758002050158"
+ "salt": "1764777304508"
},
"UpdateReplacePolicy": "Delete",
"DeletionPolicy": "Delete"
@@ -475,7 +555,7 @@
}
},
"flattenResponse": "false",
- "salt": "1758002050158"
+ "salt": "1764777304508"
},
"UpdateReplacePolicy": "Delete",
"DeletionPolicy": "Delete"
@@ -494,6 +574,100 @@
]
}
}
+ },
+ "LambdaInvoke805b2b3b09077c2b42bb6bec7de55543": {
+ "Type": "Custom::DeployAssert@SdkCallLambdainvoke",
+ "Properties": {
+ "ServiceToken": {
+ "Fn::GetAtt": [
+ "SingletonFunction1488541a7b23466481b69b4408076b81HandlerCD40AE9F",
+ "Arn"
+ ]
+ },
+ "service": "Lambda",
+ "api": "invoke",
+ "expected": "{\"$ObjectLike\":{\"StatusCode\":200}}",
+ "parameters": {
+ "FunctionName": {
+ "Fn::Join": [
+ "",
+ [
+ "\"",
+ {
+ "Fn::ImportValue": "LlrtFunctionIntegTestTarget:ExportsOutputRefLayerHandler66021063E725CB82"
+ },
+ "\""
+ ]
+ ]
+ }
+ },
+ "flattenResponse": "false",
+ "salt": "1764777304508"
+ },
+ "UpdateReplacePolicy": "Delete",
+ "DeletionPolicy": "Delete"
+ },
+ "LambdaInvoke805b2b3b09077c2b42bb6bec7de55543Invoke51E422E0": {
+ "Type": "AWS::Lambda::Permission",
+ "Properties": {
+ "Action": "lambda:InvokeFunction",
+ "FunctionName": {
+ "Fn::ImportValue": "LlrtFunctionIntegTestTarget:ExportsOutputRefLayerHandler66021063E725CB82"
+ },
+ "Principal": {
+ "Fn::GetAtt": [
+ "SingletonFunction1488541a7b23466481b69b4408076b81Role37ABCE73",
+ "Arn"
+ ]
+ }
+ }
+ },
+ "LambdaInvoke622289161fa9b53fc725450a74439357": {
+ "Type": "Custom::DeployAssert@SdkCallLambdainvoke",
+ "Properties": {
+ "ServiceToken": {
+ "Fn::GetAtt": [
+ "SingletonFunction1488541a7b23466481b69b4408076b81HandlerCD40AE9F",
+ "Arn"
+ ]
+ },
+ "service": "Lambda",
+ "api": "invoke",
+ "expected": "{\"$ObjectLike\":{\"StatusCode\":200}}",
+ "parameters": {
+ "FunctionName": {
+ "Fn::Join": [
+ "",
+ [
+ "\"",
+ {
+ "Fn::ImportValue": "LlrtFunctionIntegTestTarget:ExportsOutputRefLayerArmHandler9147865BF5CAED2B"
+ },
+ "\""
+ ]
+ ]
+ }
+ },
+ "flattenResponse": "false",
+ "salt": "1764777304508"
+ },
+ "UpdateReplacePolicy": "Delete",
+ "DeletionPolicy": "Delete"
+ },
+ "LambdaInvoke622289161fa9b53fc725450a74439357InvokeC4A55C37": {
+ "Type": "AWS::Lambda::Permission",
+ "Properties": {
+ "Action": "lambda:InvokeFunction",
+ "FunctionName": {
+ "Fn::ImportValue": "LlrtFunctionIntegTestTarget:ExportsOutputRefLayerArmHandler9147865BF5CAED2B"
+ },
+ "Principal": {
+ "Fn::GetAtt": [
+ "SingletonFunction1488541a7b23466481b69b4408076b81Role37ABCE73",
+ "Arn"
+ ]
+ }
+ }
}
},
"Outputs": {
@@ -536,6 +710,22 @@
"assertion"
]
}
+ },
+ "AssertionResultsLambdaInvoke805b2b3b09077c2b42bb6bec7de55543": {
+ "Value": {
+ "Fn::GetAtt": [
+ "LambdaInvoke805b2b3b09077c2b42bb6bec7de55543",
+ "assertion"
+ ]
+ }
+ },
+ "AssertionResultsLambdaInvoke622289161fa9b53fc725450a74439357": {
+ "Value": {
+ "Fn::GetAtt": [
+ "LambdaInvoke622289161fa9b53fc725450a74439357",
+ "assertion"
+ ]
+ }
}
},
"Mappings": {
diff --git a/test/integ.llrt-function.js.snapshot/LlrtFunctionIntegTestTarget.assets.json b/test/integ.llrt-function.js.snapshot/LlrtFunctionIntegTestTarget.assets.json
index 66a5de4..2553136 100644
--- a/test/integ.llrt-function.js.snapshot/LlrtFunctionIntegTestTarget.assets.json
+++ b/test/integ.llrt-function.js.snapshot/LlrtFunctionIntegTestTarget.assets.json
@@ -71,16 +71,58 @@
}
}
},
- "05bb58bcc960462b09fcbf4131babbd603268ca596c6aa408003857ffa68a93e": {
+ "531eb4a72df0dad25daeaccc31c78c676a5616a85798d42e05d8aaa5df5d3399": {
+ "displayName": "LayerHandler/Code",
+ "source": {
+ "path": "asset.531eb4a72df0dad25daeaccc31c78c676a5616a85798d42e05d8aaa5df5d3399",
+ "packaging": "zip"
+ },
+ "destinations": {
+ "current_account-current_region-2e040283": {
+ "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
+ "objectKey": "531eb4a72df0dad25daeaccc31c78c676a5616a85798d42e05d8aaa5df5d3399.zip",
+ "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
+ }
+ }
+ },
+ "9a3fcb668160409d2849f5a3c82a6e8bed06831e6b89970752ad53e82fdd565f": {
+ "displayName": "llrt-layer-x64-latest/Code",
+ "source": {
+ "path": "asset.9a3fcb668160409d2849f5a3c82a6e8bed06831e6b89970752ad53e82fdd565f",
+ "packaging": "zip"
+ },
+ "destinations": {
+ "current_account-current_region-b7f9d7e7": {
+ "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
+ "objectKey": "9a3fcb668160409d2849f5a3c82a6e8bed06831e6b89970752ad53e82fdd565f.zip",
+ "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
+ }
+ }
+ },
+ "52d6a9bf141495dafa8797c991df4839adf1e5780f14bfa263ff6a7c8312e4f8": {
+ "displayName": "llrt-layer-arm64-latest/Code",
+ "source": {
+ "path": "asset.52d6a9bf141495dafa8797c991df4839adf1e5780f14bfa263ff6a7c8312e4f8",
+ "packaging": "zip"
+ },
+ "destinations": {
+ "current_account-current_region-2a1898f7": {
+ "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
+ "objectKey": "52d6a9bf141495dafa8797c991df4839adf1e5780f14bfa263ff6a7c8312e4f8.zip",
+ "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
+ }
+ }
+ },
+ "8a89c38ae4a66b4ffedc3afd04a4fa563e7a69ea4840f03a68756a9367f366e8": {
"displayName": "LlrtFunctionIntegTestTarget Template",
"source": {
"path": "LlrtFunctionIntegTestTarget.template.json",
"packaging": "file"
},
"destinations": {
- "current_account-current_region-368e1903": {
+ "current_account-current_region-175984d9": {
"bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
- "objectKey": "05bb58bcc960462b09fcbf4131babbd603268ca596c6aa408003857ffa68a93e.json",
+ "objectKey": "8a89c38ae4a66b4ffedc3afd04a4fa563e7a69ea4840f03a68756a9367f366e8.json",
"assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
}
}
diff --git a/test/integ.llrt-function.js.snapshot/LlrtFunctionIntegTestTarget.template.json b/test/integ.llrt-function.js.snapshot/LlrtFunctionIntegTestTarget.template.json
index ce7fb41..5c645bb 100644
--- a/test/integ.llrt-function.js.snapshot/LlrtFunctionIntegTestTarget.template.json
+++ b/test/integ.llrt-function.js.snapshot/LlrtFunctionIntegTestTarget.template.json
@@ -472,6 +472,235 @@
},
"UpdateReplacePolicy": "Retain",
"DeletionPolicy": "Retain"
+ },
+ "LayerHandlerServiceRoleCB6A82DD": {
+ "Type": "AWS::IAM::Role",
+ "Properties": {
+ "AssumeRolePolicyDocument": {
+ "Statement": [
+ {
+ "Action": "sts:AssumeRole",
+ "Effect": "Allow",
+ "Principal": {
+ "Service": "lambda.amazonaws.com"
+ }
+ }
+ ],
+ "Version": "2012-10-17"
+ },
+ "ManagedPolicyArns": [
+ {
+ "Fn::Join": [
+ "",
+ [
+ "arn:",
+ {
+ "Ref": "AWS::Partition"
+ },
+ ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
+ ]
+ ]
+ }
+ ]
+ }
+ },
+ "LayerHandlerServiceRoleDefaultPolicy17846BDC": {
+ "Type": "AWS::IAM::Policy",
+ "Properties": {
+ "PolicyDocument": {
+ "Statement": [
+ {
+ "Action": "s3:ListAllMyBuckets",
+ "Effect": "Allow",
+ "Resource": "*"
+ }
+ ],
+ "Version": "2012-10-17"
+ },
+ "PolicyName": "LayerHandlerServiceRoleDefaultPolicy17846BDC",
+ "Roles": [
+ {
+ "Ref": "LayerHandlerServiceRoleCB6A82DD"
+ }
+ ]
+ }
+ },
+ "LayerHandler66021063": {
+ "Type": "AWS::Lambda::Function",
+ "Properties": {
+ "Code": {
+ "S3Bucket": {
+ "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
+ },
+ "S3Key": "531eb4a72df0dad25daeaccc31c78c676a5616a85798d42e05d8aaa5df5d3399.zip"
+ },
+ "Handler": "index.handler",
+ "Layers": [
+ {
+ "Ref": "llrtlayerx64latest9C10C861"
+ }
+ ],
+ "Role": {
+ "Fn::GetAtt": [
+ "LayerHandlerServiceRoleCB6A82DD",
+ "Arn"
+ ]
+ },
+ "Runtime": "provided.al2023"
+ },
+ "DependsOn": [
+ "LayerHandlerServiceRoleDefaultPolicy17846BDC",
+ "LayerHandlerServiceRoleCB6A82DD"
+ ]
+ },
+ "LayerHandlerLogGroupAEFCA328": {
+ "Type": "AWS::Logs::LogGroup",
+ "Properties": {
+ "LogGroupName": {
+ "Fn::Join": [
+ "",
+ [
+ "/aws/lambda/",
+ {
+ "Ref": "LayerHandler66021063"
+ }
+ ]
+ ]
+ },
+ "RetentionInDays": 731
+ },
+ "UpdateReplacePolicy": "Retain",
+ "DeletionPolicy": "Retain"
+ },
+ "llrtlayerx64latest9C10C861": {
+ "Type": "AWS::Lambda::LayerVersion",
+ "Properties": {
+ "CompatibleArchitectures": [
+ "x86_64"
+ ],
+ "Content": {
+ "S3Bucket": {
+ "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
+ },
+ "S3Key": "9a3fcb668160409d2849f5a3c82a6e8bed06831e6b89970752ad53e82fdd565f.zip"
+ }
+ }
+ },
+ "LayerArmHandlerServiceRole78659E75": {
+ "Type": "AWS::IAM::Role",
+ "Properties": {
+ "AssumeRolePolicyDocument": {
+ "Statement": [
+ {
+ "Action": "sts:AssumeRole",
+ "Effect": "Allow",
+ "Principal": {
+ "Service": "lambda.amazonaws.com"
+ }
+ }
+ ],
+ "Version": "2012-10-17"
+ },
+ "ManagedPolicyArns": [
+ {
+ "Fn::Join": [
+ "",
+ [
+ "arn:",
+ {
+ "Ref": "AWS::Partition"
+ },
+ ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
+ ]
+ ]
+ }
+ ]
+ }
+ },
+ "LayerArmHandlerServiceRoleDefaultPolicy4B1C6409": {
+ "Type": "AWS::IAM::Policy",
+ "Properties": {
+ "PolicyDocument": {
+ "Statement": [
+ {
+ "Action": "s3:ListAllMyBuckets",
+ "Effect": "Allow",
+ "Resource": "*"
+ }
+ ],
+ "Version": "2012-10-17"
+ },
+ "PolicyName": "LayerArmHandlerServiceRoleDefaultPolicy4B1C6409",
+ "Roles": [
+ {
+ "Ref": "LayerArmHandlerServiceRole78659E75"
+ }
+ ]
+ }
+ },
+ "LayerArmHandler9147865B": {
+ "Type": "AWS::Lambda::Function",
+ "Properties": {
+ "Architectures": [
+ "arm64"
+ ],
+ "Code": {
+ "S3Bucket": {
+ "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
+ },
+ "S3Key": "531eb4a72df0dad25daeaccc31c78c676a5616a85798d42e05d8aaa5df5d3399.zip"
+ },
+ "Handler": "index.handler",
+ "Layers": [
+ {
+ "Ref": "llrtlayerarm64latest0E433E1F"
+ }
+ ],
+ "Role": {
+ "Fn::GetAtt": [
+ "LayerArmHandlerServiceRole78659E75",
+ "Arn"
+ ]
+ },
+ "Runtime": "provided.al2023"
+ },
+ "DependsOn": [
+ "LayerArmHandlerServiceRoleDefaultPolicy4B1C6409",
+ "LayerArmHandlerServiceRole78659E75"
+ ]
+ },
+ "LayerArmHandlerLogGroupB4C9642E": {
+ "Type": "AWS::Logs::LogGroup",
+ "Properties": {
+ "LogGroupName": {
+ "Fn::Join": [
+ "",
+ [
+ "/aws/lambda/",
+ {
+ "Ref": "LayerArmHandler9147865B"
+ }
+ ]
+ ]
+ },
+ "RetentionInDays": 731
+ },
+ "UpdateReplacePolicy": "Retain",
+ "DeletionPolicy": "Retain"
+ },
+ "llrtlayerarm64latest0E433E1F": {
+ "Type": "AWS::Lambda::LayerVersion",
+ "Properties": {
+ "CompatibleArchitectures": [
+ "arm64"
+ ],
+ "Content": {
+ "S3Bucket": {
+ "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
+ },
+ "S3Key": "52d6a9bf141495dafa8797c991df4839adf1e5780f14bfa263ff6a7c8312e4f8.zip"
+ }
+ }
}
},
"Outputs": {
@@ -514,6 +743,22 @@
"Export": {
"Name": "LlrtFunctionIntegTestTarget:ExportsOutputRefCustomBinaryHandler641A933E54DF1A2A"
}
+ },
+ "ExportsOutputRefLayerHandler66021063E725CB82": {
+ "Value": {
+ "Ref": "LayerHandler66021063"
+ },
+ "Export": {
+ "Name": "LlrtFunctionIntegTestTarget:ExportsOutputRefLayerHandler66021063E725CB82"
+ }
+ },
+ "ExportsOutputRefLayerArmHandler9147865BF5CAED2B": {
+ "Value": {
+ "Ref": "LayerArmHandler9147865B"
+ },
+ "Export": {
+ "Name": "LlrtFunctionIntegTestTarget:ExportsOutputRefLayerArmHandler9147865BF5CAED2B"
+ }
}
},
"Parameters": {
diff --git a/test/integ.llrt-function.js.snapshot/asset.52d6a9bf141495dafa8797c991df4839adf1e5780f14bfa263ff6a7c8312e4f8/bootstrap b/test/integ.llrt-function.js.snapshot/asset.52d6a9bf141495dafa8797c991df4839adf1e5780f14bfa263ff6a7c8312e4f8/bootstrap
new file mode 100755
index 0000000..a261b89
Binary files /dev/null and b/test/integ.llrt-function.js.snapshot/asset.52d6a9bf141495dafa8797c991df4839adf1e5780f14bfa263ff6a7c8312e4f8/bootstrap differ
diff --git a/test/integ.llrt-function.js.snapshot/asset.531eb4a72df0dad25daeaccc31c78c676a5616a85798d42e05d8aaa5df5d3399/index.mjs b/test/integ.llrt-function.js.snapshot/asset.531eb4a72df0dad25daeaccc31c78c676a5616a85798d42e05d8aaa5df5d3399/index.mjs
new file mode 100644
index 0000000..604f484
--- /dev/null
+++ b/test/integ.llrt-function.js.snapshot/asset.531eb4a72df0dad25daeaccc31c78c676a5616a85798d42e05d8aaa5df5d3399/index.mjs
@@ -0,0 +1 @@
+import{ListBucketsCommand as t,S3Client as e}from"@aws-sdk/client-s3";var o=new e({}),c=async(s,r)=>{let n=await o.send(new t({}));console.log(n)};export{c as handler};
diff --git a/test/integ.llrt-function.js.snapshot/asset.9a3fcb668160409d2849f5a3c82a6e8bed06831e6b89970752ad53e82fdd565f/bootstrap b/test/integ.llrt-function.js.snapshot/asset.9a3fcb668160409d2849f5a3c82a6e8bed06831e6b89970752ad53e82fdd565f/bootstrap
new file mode 100755
index 0000000..47e6ca1
Binary files /dev/null and b/test/integ.llrt-function.js.snapshot/asset.9a3fcb668160409d2849f5a3c82a6e8bed06831e6b89970752ad53e82fdd565f/bootstrap differ
diff --git a/test/integ.llrt-function.js.snapshot/manifest.json b/test/integ.llrt-function.js.snapshot/manifest.json
index 16f422c..8eeb929 100644
--- a/test/integ.llrt-function.js.snapshot/manifest.json
+++ b/test/integ.llrt-function.js.snapshot/manifest.json
@@ -18,7 +18,7 @@
"validateOnSynth": false,
"assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}",
"cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}",
- "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/05bb58bcc960462b09fcbf4131babbd603268ca596c6aa408003857ffa68a93e.json",
+ "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/8a89c38ae4a66b4ffedc3afd04a4fa563e7a69ea4840f03a68756a9367f366e8.json",
"requiresBootstrapStackVersion": 6,
"bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version",
"additionalDependencies": [
@@ -758,6 +758,341 @@
"data": "CustomBinaryHandlerLogGroupE89296DF"
}
],
+ "/LlrtFunctionIntegTestTarget/LayerHandler": [
+ {
+ "type": "aws:cdk:analytics:construct",
+ "data": {
+ "awsSdkConnectionReuse": false,
+ "runtime": "*",
+ "entry": "*",
+ "depsLockFilePath": "*",
+ "bundling": {
+ "target": "*",
+ "format": "esm",
+ "minify": true,
+ "commandHooks": "*",
+ "forceDockerBundling": "*",
+ "externalModules": "*"
+ },
+ "code": "*",
+ "handler": "*"
+ }
+ },
+ {
+ "type": "aws:cdk:analytics:construct",
+ "data": {
+ "awsSdkConnectionReuse": false,
+ "runtime": "*",
+ "entry": "*",
+ "depsLockFilePath": "*",
+ "bundling": {
+ "target": "*",
+ "format": "esm",
+ "minify": true,
+ "commandHooks": "*",
+ "forceDockerBundling": "*",
+ "externalModules": "*"
+ }
+ }
+ },
+ {
+ "type": "aws:cdk:analytics:method",
+ "data": {}
+ }
+ ],
+ "/LlrtFunctionIntegTestTarget/LayerHandler/ServiceRole": [
+ {
+ "type": "aws:cdk:analytics:construct",
+ "data": {
+ "assumedBy": {
+ "principalAccount": "*",
+ "assumeRoleAction": "*"
+ },
+ "managedPolicies": [
+ {
+ "managedPolicyArn": "*"
+ }
+ ]
+ }
+ },
+ {
+ "type": "aws:cdk:analytics:method",
+ "data": {
+ "addToPrincipalPolicy": [
+ {}
+ ]
+ }
+ },
+ {
+ "type": "aws:cdk:analytics:method",
+ "data": {
+ "attachInlinePolicy": [
+ "*"
+ ]
+ }
+ },
+ {
+ "type": "aws:cdk:analytics:method",
+ "data": {
+ "attachInlinePolicy": [
+ "*"
+ ]
+ }
+ }
+ ],
+ "/LlrtFunctionIntegTestTarget/LayerHandler/ServiceRole/ImportServiceRole": [
+ {
+ "type": "aws:cdk:analytics:construct",
+ "data": "*"
+ }
+ ],
+ "/LlrtFunctionIntegTestTarget/LayerHandler/ServiceRole/Resource": [
+ {
+ "type": "aws:cdk:logicalId",
+ "data": "LayerHandlerServiceRoleCB6A82DD"
+ }
+ ],
+ "/LlrtFunctionIntegTestTarget/LayerHandler/ServiceRole/DefaultPolicy": [
+ {
+ "type": "aws:cdk:analytics:construct",
+ "data": "*"
+ },
+ {
+ "type": "aws:cdk:analytics:method",
+ "data": {
+ "attachToRole": [
+ "*"
+ ]
+ }
+ },
+ {
+ "type": "aws:cdk:analytics:method",
+ "data": {
+ "attachToRole": [
+ "*"
+ ]
+ }
+ },
+ {
+ "type": "aws:cdk:analytics:method",
+ "data": {
+ "addStatements": [
+ {}
+ ]
+ }
+ }
+ ],
+ "/LlrtFunctionIntegTestTarget/LayerHandler/ServiceRole/DefaultPolicy/Resource": [
+ {
+ "type": "aws:cdk:logicalId",
+ "data": "LayerHandlerServiceRoleDefaultPolicy17846BDC"
+ }
+ ],
+ "/LlrtFunctionIntegTestTarget/LayerHandler/Resource": [
+ {
+ "type": "aws:cdk:logicalId",
+ "data": "LayerHandler66021063"
+ }
+ ],
+ "/LlrtFunctionIntegTestTarget/LayerHandler/LogGroup": [
+ {
+ "type": "aws:cdk:analytics:construct",
+ "data": {
+ "logGroupName": "*"
+ }
+ }
+ ],
+ "/LlrtFunctionIntegTestTarget/LayerHandler/LogGroup/Resource": [
+ {
+ "type": "aws:cdk:logicalId",
+ "data": "LayerHandlerLogGroupAEFCA328"
+ }
+ ],
+ "/LlrtFunctionIntegTestTarget/llrt-layer-x64-latest": [
+ {
+ "type": "aws:cdk:analytics:construct",
+ "data": {
+ "code": "*",
+ "compatibleArchitectures": "*"
+ }
+ }
+ ],
+ "/LlrtFunctionIntegTestTarget/llrt-layer-x64-latest/Resource": [
+ {
+ "type": "aws:cdk:logicalId",
+ "data": "llrtlayerx64latest9C10C861",
+ "trace": [
+ "!!DESTRUCTIVE_CHANGES: WILL_REPLACE"
+ ]
+ }
+ ],
+ "/LlrtFunctionIntegTestTarget/LayerArmHandler": [
+ {
+ "type": "aws:cdk:analytics:construct",
+ "data": {
+ "awsSdkConnectionReuse": false,
+ "runtime": "*",
+ "architecture": "*",
+ "entry": "*",
+ "depsLockFilePath": "*",
+ "bundling": {
+ "target": "*",
+ "format": "esm",
+ "minify": true,
+ "commandHooks": "*",
+ "forceDockerBundling": "*",
+ "externalModules": "*"
+ },
+ "code": "*",
+ "handler": "*"
+ }
+ },
+ {
+ "type": "aws:cdk:analytics:construct",
+ "data": {
+ "awsSdkConnectionReuse": false,
+ "runtime": "*",
+ "architecture": "*",
+ "entry": "*",
+ "depsLockFilePath": "*",
+ "bundling": {
+ "target": "*",
+ "format": "esm",
+ "minify": true,
+ "commandHooks": "*",
+ "forceDockerBundling": "*",
+ "externalModules": "*"
+ }
+ }
+ },
+ {
+ "type": "aws:cdk:analytics:method",
+ "data": {}
+ }
+ ],
+ "/LlrtFunctionIntegTestTarget/LayerArmHandler/ServiceRole": [
+ {
+ "type": "aws:cdk:analytics:construct",
+ "data": {
+ "assumedBy": {
+ "principalAccount": "*",
+ "assumeRoleAction": "*"
+ },
+ "managedPolicies": [
+ {
+ "managedPolicyArn": "*"
+ }
+ ]
+ }
+ },
+ {
+ "type": "aws:cdk:analytics:method",
+ "data": {
+ "addToPrincipalPolicy": [
+ {}
+ ]
+ }
+ },
+ {
+ "type": "aws:cdk:analytics:method",
+ "data": {
+ "attachInlinePolicy": [
+ "*"
+ ]
+ }
+ },
+ {
+ "type": "aws:cdk:analytics:method",
+ "data": {
+ "attachInlinePolicy": [
+ "*"
+ ]
+ }
+ }
+ ],
+ "/LlrtFunctionIntegTestTarget/LayerArmHandler/ServiceRole/ImportServiceRole": [
+ {
+ "type": "aws:cdk:analytics:construct",
+ "data": "*"
+ }
+ ],
+ "/LlrtFunctionIntegTestTarget/LayerArmHandler/ServiceRole/Resource": [
+ {
+ "type": "aws:cdk:logicalId",
+ "data": "LayerArmHandlerServiceRole78659E75"
+ }
+ ],
+ "/LlrtFunctionIntegTestTarget/LayerArmHandler/ServiceRole/DefaultPolicy": [
+ {
+ "type": "aws:cdk:analytics:construct",
+ "data": "*"
+ },
+ {
+ "type": "aws:cdk:analytics:method",
+ "data": {
+ "attachToRole": [
+ "*"
+ ]
+ }
+ },
+ {
+ "type": "aws:cdk:analytics:method",
+ "data": {
+ "attachToRole": [
+ "*"
+ ]
+ }
+ },
+ {
+ "type": "aws:cdk:analytics:method",
+ "data": {
+ "addStatements": [
+ {}
+ ]
+ }
+ }
+ ],
+ "/LlrtFunctionIntegTestTarget/LayerArmHandler/ServiceRole/DefaultPolicy/Resource": [
+ {
+ "type": "aws:cdk:logicalId",
+ "data": "LayerArmHandlerServiceRoleDefaultPolicy4B1C6409"
+ }
+ ],
+ "/LlrtFunctionIntegTestTarget/LayerArmHandler/Resource": [
+ {
+ "type": "aws:cdk:logicalId",
+ "data": "LayerArmHandler9147865B"
+ }
+ ],
+ "/LlrtFunctionIntegTestTarget/LayerArmHandler/LogGroup": [
+ {
+ "type": "aws:cdk:analytics:construct",
+ "data": {
+ "logGroupName": "*"
+ }
+ }
+ ],
+ "/LlrtFunctionIntegTestTarget/LayerArmHandler/LogGroup/Resource": [
+ {
+ "type": "aws:cdk:logicalId",
+ "data": "LayerArmHandlerLogGroupB4C9642E"
+ }
+ ],
+ "/LlrtFunctionIntegTestTarget/llrt-layer-arm64-latest": [
+ {
+ "type": "aws:cdk:analytics:construct",
+ "data": {
+ "code": "*",
+ "compatibleArchitectures": "*"
+ }
+ }
+ ],
+ "/LlrtFunctionIntegTestTarget/llrt-layer-arm64-latest/Resource": [
+ {
+ "type": "aws:cdk:logicalId",
+ "data": "llrtlayerarm64latest0E433E1F"
+ }
+ ],
"/LlrtFunctionIntegTestTarget/Exports/Output{\"Ref\":\"Handler886CB40B\"}": [
{
"type": "aws:cdk:logicalId",
@@ -788,6 +1123,18 @@
"data": "ExportsOutputRefCustomBinaryHandler641A933E54DF1A2A"
}
],
+ "/LlrtFunctionIntegTestTarget/Exports/Output{\"Ref\":\"LayerHandler66021063\"}": [
+ {
+ "type": "aws:cdk:logicalId",
+ "data": "ExportsOutputRefLayerHandler66021063E725CB82"
+ }
+ ],
+ "/LlrtFunctionIntegTestTarget/Exports/Output{\"Ref\":\"LayerArmHandler9147865B\"}": [
+ {
+ "type": "aws:cdk:logicalId",
+ "data": "ExportsOutputRefLayerArmHandler9147865BF5CAED2B"
+ }
+ ],
"/LlrtFunctionIntegTestTarget/BootstrapVersion": [
{
"type": "aws:cdk:logicalId",
@@ -820,7 +1167,7 @@
"validateOnSynth": false,
"assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}",
"cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}",
- "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/286c6bf5a2eda8d84fa67fd1004371db925b13e33838d7fc46026ffaad295c90.json",
+ "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/5ab45ed51a21459ad67b9118a974fd3fbff643528f51f4fefc0ea1d472a8ec23.json",
"requiresBootstrapStackVersion": 6,
"bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version",
"additionalDependencies": [
@@ -1015,6 +1362,70 @@
"data": "AssertionResultsLambdaInvoke69a3388d6e311c7b828bebf747d408cc"
}
],
+ "/LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke805b2b3b09077c2b42bb6bec7de55543/Default": [
+ {
+ "type": "aws:cdk:analytics:construct",
+ "data": "*"
+ },
+ {
+ "type": "aws:cdk:analytics:method",
+ "data": "*"
+ },
+ {
+ "type": "aws:cdk:analytics:method",
+ "data": "*"
+ }
+ ],
+ "/LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke805b2b3b09077c2b42bb6bec7de55543/Default/Default": [
+ {
+ "type": "aws:cdk:logicalId",
+ "data": "LambdaInvoke805b2b3b09077c2b42bb6bec7de55543"
+ }
+ ],
+ "/LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke805b2b3b09077c2b42bb6bec7de55543/Invoke": [
+ {
+ "type": "aws:cdk:logicalId",
+ "data": "LambdaInvoke805b2b3b09077c2b42bb6bec7de55543Invoke51E422E0"
+ }
+ ],
+ "/LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke805b2b3b09077c2b42bb6bec7de55543/AssertionResults": [
+ {
+ "type": "aws:cdk:logicalId",
+ "data": "AssertionResultsLambdaInvoke805b2b3b09077c2b42bb6bec7de55543"
+ }
+ ],
+ "/LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke622289161fa9b53fc725450a74439357/Default": [
+ {
+ "type": "aws:cdk:analytics:construct",
+ "data": "*"
+ },
+ {
+ "type": "aws:cdk:analytics:method",
+ "data": "*"
+ },
+ {
+ "type": "aws:cdk:analytics:method",
+ "data": "*"
+ }
+ ],
+ "/LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke622289161fa9b53fc725450a74439357/Default/Default": [
+ {
+ "type": "aws:cdk:logicalId",
+ "data": "LambdaInvoke622289161fa9b53fc725450a74439357"
+ }
+ ],
+ "/LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke622289161fa9b53fc725450a74439357/Invoke": [
+ {
+ "type": "aws:cdk:logicalId",
+ "data": "LambdaInvoke622289161fa9b53fc725450a74439357InvokeC4A55C37"
+ }
+ ],
+ "/LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke622289161fa9b53fc725450a74439357/AssertionResults": [
+ {
+ "type": "aws:cdk:logicalId",
+ "data": "AssertionResultsLambdaInvoke622289161fa9b53fc725450a74439357"
+ }
+ ],
"/LlrtFunctionIntegTest/DefaultTest/DeployAssert/BootstrapVersion": [
{
"type": "aws:cdk:logicalId",
diff --git a/test/integ.llrt-function.js.snapshot/tree.json b/test/integ.llrt-function.js.snapshot/tree.json
index 25dd6b6..015476d 100644
--- a/test/integ.llrt-function.js.snapshot/tree.json
+++ b/test/integ.llrt-function.js.snapshot/tree.json
@@ -1 +1 @@
-{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"2.215.0"},"children":{"LlrtFunctionIntegTestTarget":{"id":"LlrtFunctionIntegTestTarget","path":"LlrtFunctionIntegTestTarget","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"2.215.0"},"children":{"Handler":{"id":"Handler","path":"LlrtFunctionIntegTestTarget/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda_nodejs.NodejsFunction","version":"2.215.0","metadata":[{"awsSdkConnectionReuse":false,"runtime":"*","entry":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"},"code":"*","handler":"*"},{"awsSdkConnectionReuse":false,"runtime":"*","entry":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"}}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"LlrtFunctionIntegTestTarget/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"2.215.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"LlrtFunctionIntegTestTarget/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.215.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/Handler/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"LlrtFunctionIntegTestTarget/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"2.215.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/Handler/ServiceRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"s3:ListAllMyBuckets","Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"HandlerServiceRoleDefaultPolicyCBD0CC91","roles":[{"Ref":"HandlerServiceRoleFCDC14AE"}]}}}}}}},"Code":{"id":"Code","path":"LlrtFunctionIntegTestTarget/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"2.215.0"},"children":{"Stage":{"id":"Stage","path":"LlrtFunctionIntegTestTarget/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"2.215.0"}},"AssetBucket":{"id":"AssetBucket","path":"LlrtFunctionIntegTestTarget/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"2.215.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/Handler/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"0d077c4f0f614ee0dabf2c844841f52bd406132de209b3a3b8770cb0cbece261.zip"},"handler":"index.handler","role":{"Fn::GetAtt":["HandlerServiceRoleFCDC14AE","Arn"]},"runtime":"nodejs20.x"}}},"LogGroup":{"id":"LogGroup","path":"LlrtFunctionIntegTestTarget/Handler/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"2.215.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/Handler/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"Handler886CB40B"}]]},"retentionInDays":731}}}}}}},"ArmHandler":{"id":"ArmHandler","path":"LlrtFunctionIntegTestTarget/ArmHandler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda_nodejs.NodejsFunction","version":"2.215.0","metadata":[{"awsSdkConnectionReuse":false,"runtime":"*","entry":"*","architecture":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"},"code":"*","handler":"*"},{"awsSdkConnectionReuse":false,"runtime":"*","entry":"*","architecture":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"}}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"LlrtFunctionIntegTestTarget/ArmHandler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"2.215.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"LlrtFunctionIntegTestTarget/ArmHandler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.215.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/ArmHandler/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"LlrtFunctionIntegTestTarget/ArmHandler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"2.215.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/ArmHandler/ServiceRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"s3:ListAllMyBuckets","Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"ArmHandlerServiceRoleDefaultPolicyB9B1C47C","roles":[{"Ref":"ArmHandlerServiceRole413AC94A"}]}}}}}}},"Code":{"id":"Code","path":"LlrtFunctionIntegTestTarget/ArmHandler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"2.215.0"},"children":{"Stage":{"id":"Stage","path":"LlrtFunctionIntegTestTarget/ArmHandler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"2.215.0"}},"AssetBucket":{"id":"AssetBucket","path":"LlrtFunctionIntegTestTarget/ArmHandler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"2.215.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/ArmHandler/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"architectures":["arm64"],"code":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"3f0df07c5f0a1a9557efff2713b8a732630ff0c9c6bc561edf6fd42d2777d26d.zip"},"handler":"index.handler","role":{"Fn::GetAtt":["ArmHandlerServiceRole413AC94A","Arn"]},"runtime":"nodejs20.x"}}},"LogGroup":{"id":"LogGroup","path":"LlrtFunctionIntegTestTarget/ArmHandler/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"2.215.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/ArmHandler/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"ArmHandler7C85DE11"}]]},"retentionInDays":731}}}}}}},"FullBinaryHandler":{"id":"FullBinaryHandler","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda_nodejs.NodejsFunction","version":"2.215.0","metadata":[{"awsSdkConnectionReuse":false,"runtime":"*","entry":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"},"code":"*","handler":"*"},{"awsSdkConnectionReuse":false,"runtime":"*","entry":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"}}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"2.215.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.215.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"2.215.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler/ServiceRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"s3:ListAllMyBuckets","Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"FullBinaryHandlerServiceRoleDefaultPolicy6A254230","roles":[{"Ref":"FullBinaryHandlerServiceRole27DAC75C"}]}}}}}}},"Code":{"id":"Code","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"2.215.0"},"children":{"Stage":{"id":"Stage","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"2.215.0"}},"AssetBucket":{"id":"AssetBucket","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"2.215.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c9fcdd092984e282b07b3ddcf6becfb1a639caa786e54270dac65ba7f97fdce2.zip"},"handler":"index.handler","role":{"Fn::GetAtt":["FullBinaryHandlerServiceRole27DAC75C","Arn"]},"runtime":"nodejs20.x"}}},"LogGroup":{"id":"LogGroup","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"2.215.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"FullBinaryHandler1600ED15"}]]},"retentionInDays":731}}}}}}},"NoSdkBinaryHandler":{"id":"NoSdkBinaryHandler","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda_nodejs.NodejsFunction","version":"2.215.0","metadata":[{"awsSdkConnectionReuse":false,"runtime":"*","entry":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"},"code":"*","handler":"*"},{"awsSdkConnectionReuse":false,"runtime":"*","entry":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"}}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"2.215.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.215.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"2.215.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler/ServiceRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"s3:ListAllMyBuckets","Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"NoSdkBinaryHandlerServiceRoleDefaultPolicyDC9BBD8B","roles":[{"Ref":"NoSdkBinaryHandlerServiceRole8CABE201"}]}}}}}}},"Code":{"id":"Code","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"2.215.0"},"children":{"Stage":{"id":"Stage","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"2.215.0"}},"AssetBucket":{"id":"AssetBucket","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"2.215.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"2c91bb8cca67d923aaf45645a9b893320a3af82f20d0b0264bcc743dd5a641c9.zip"},"handler":"index.handler","role":{"Fn::GetAtt":["NoSdkBinaryHandlerServiceRole8CABE201","Arn"]},"runtime":"nodejs20.x"}}},"LogGroup":{"id":"LogGroup","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"2.215.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"NoSdkBinaryHandler3ED82436"}]]},"retentionInDays":731}}}}}}},"CustomBinaryHandler":{"id":"CustomBinaryHandler","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda_nodejs.NodejsFunction","version":"2.215.0","metadata":[{"awsSdkConnectionReuse":false,"runtime":"*","entry":"*","depsLockFilePath":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"},"code":"*","handler":"*"},{"awsSdkConnectionReuse":false,"runtime":"*","entry":"*","depsLockFilePath":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"}}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"2.215.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.215.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"2.215.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler/ServiceRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"s3:ListAllMyBuckets","Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"CustomBinaryHandlerServiceRoleDefaultPolicyED2FBAA6","roles":[{"Ref":"CustomBinaryHandlerServiceRoleCF90F487"}]}}}}}}},"Code":{"id":"Code","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"2.215.0"},"children":{"Stage":{"id":"Stage","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"2.215.0"}},"AssetBucket":{"id":"AssetBucket","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"2.215.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"ca6b96daba04d69ad843da425b485f310a2ac068a6864b4892995ebdcadabecf.zip"},"handler":"index.handler","role":{"Fn::GetAtt":["CustomBinaryHandlerServiceRoleCF90F487","Arn"]},"runtime":"nodejs20.x"}}},"LogGroup":{"id":"LogGroup","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"2.215.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"CustomBinaryHandler641A933E"}]]},"retentionInDays":731}}}}}}},"Exports":{"id":"Exports","path":"LlrtFunctionIntegTestTarget/Exports","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"Output{\"Ref\":\"Handler886CB40B\"}":{"id":"Output{\"Ref\":\"Handler886CB40B\"}","path":"LlrtFunctionIntegTestTarget/Exports/Output{\"Ref\":\"Handler886CB40B\"}","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}},"Output{\"Ref\":\"ArmHandler7C85DE11\"}":{"id":"Output{\"Ref\":\"ArmHandler7C85DE11\"}","path":"LlrtFunctionIntegTestTarget/Exports/Output{\"Ref\":\"ArmHandler7C85DE11\"}","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}},"Output{\"Ref\":\"FullBinaryHandler1600ED15\"}":{"id":"Output{\"Ref\":\"FullBinaryHandler1600ED15\"}","path":"LlrtFunctionIntegTestTarget/Exports/Output{\"Ref\":\"FullBinaryHandler1600ED15\"}","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}},"Output{\"Ref\":\"NoSdkBinaryHandler3ED82436\"}":{"id":"Output{\"Ref\":\"NoSdkBinaryHandler3ED82436\"}","path":"LlrtFunctionIntegTestTarget/Exports/Output{\"Ref\":\"NoSdkBinaryHandler3ED82436\"}","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}},"Output{\"Ref\":\"CustomBinaryHandler641A933E\"}":{"id":"Output{\"Ref\":\"CustomBinaryHandler641A933E\"}","path":"LlrtFunctionIntegTestTarget/Exports/Output{\"Ref\":\"CustomBinaryHandler641A933E\"}","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"LlrtFunctionIntegTestTarget/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"2.215.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"LlrtFunctionIntegTestTarget/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"2.215.0"}}}},"LlrtFunctionIntegTest":{"id":"LlrtFunctionIntegTest","path":"LlrtFunctionIntegTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"2.159.0-alpha.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"LlrtFunctionIntegTest/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"2.159.0-alpha.0"},"children":{"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"2.215.0"},"children":{"LambdaInvoke35ae3a38b93bc81e7b95e90f43eeaec5":{"id":"LambdaInvoke35ae3a38b93bc81e7b95e90f43eeaec5","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke35ae3a38b93bc81e7b95e90f43eeaec5","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.LambdaInvokeFunction","version":"2.159.0-alpha.0"},"children":{"SdkProvider":{"id":"SdkProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke35ae3a38b93bc81e7b95e90f43eeaec5/SdkProvider","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.AssertionsProvider","version":"2.159.0-alpha.0"},"children":{"AssertionsProvider":{"id":"AssertionsProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke35ae3a38b93bc81e7b95e90f43eeaec5/SdkProvider/AssertionsProvider","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke35ae3a38b93bc81e7b95e90f43eeaec5/Default","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"2.215.0","metadata":["*","*","*"]},"children":{"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke35ae3a38b93bc81e7b95e90f43eeaec5/Default/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}}}},"Invoke":{"id":"Invoke","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke35ae3a38b93bc81e7b95e90f43eeaec5/Invoke","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}},"AssertionResults":{"id":"AssertionResults","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke35ae3a38b93bc81e7b95e90f43eeaec5/AssertionResults","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}}}},"SingletonFunction1488541a7b23466481b69b4408076b81":{"id":"SingletonFunction1488541a7b23466481b69b4408076b81","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/SingletonFunction1488541a7b23466481b69b4408076b81","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"Staging":{"id":"Staging","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/SingletonFunction1488541a7b23466481b69b4408076b81/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"2.215.0"}},"Role":{"id":"Role","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/SingletonFunction1488541a7b23466481b69b4408076b81/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}},"Handler":{"id":"Handler","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/SingletonFunction1488541a7b23466481b69b4408076b81/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"2.215.0"}},"LambdaInvoke997059d943474e43661f387022a21092":{"id":"LambdaInvoke997059d943474e43661f387022a21092","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke997059d943474e43661f387022a21092","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.LambdaInvokeFunction","version":"2.159.0-alpha.0"},"children":{"SdkProvider":{"id":"SdkProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke997059d943474e43661f387022a21092/SdkProvider","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.AssertionsProvider","version":"2.159.0-alpha.0"},"children":{"AssertionsProvider":{"id":"AssertionsProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke997059d943474e43661f387022a21092/SdkProvider/AssertionsProvider","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke997059d943474e43661f387022a21092/Default","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"2.215.0","metadata":["*","*","*"]},"children":{"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke997059d943474e43661f387022a21092/Default/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}}}},"Invoke":{"id":"Invoke","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke997059d943474e43661f387022a21092/Invoke","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}},"AssertionResults":{"id":"AssertionResults","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke997059d943474e43661f387022a21092/AssertionResults","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}}}},"LambdaInvoke240c9f0a69de9952748e2df8d156da40":{"id":"LambdaInvoke240c9f0a69de9952748e2df8d156da40","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke240c9f0a69de9952748e2df8d156da40","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.LambdaInvokeFunction","version":"2.159.0-alpha.0"},"children":{"SdkProvider":{"id":"SdkProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke240c9f0a69de9952748e2df8d156da40/SdkProvider","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.AssertionsProvider","version":"2.159.0-alpha.0"},"children":{"AssertionsProvider":{"id":"AssertionsProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke240c9f0a69de9952748e2df8d156da40/SdkProvider/AssertionsProvider","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke240c9f0a69de9952748e2df8d156da40/Default","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"2.215.0","metadata":["*","*","*"]},"children":{"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke240c9f0a69de9952748e2df8d156da40/Default/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}}}},"Invoke":{"id":"Invoke","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke240c9f0a69de9952748e2df8d156da40/Invoke","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}},"AssertionResults":{"id":"AssertionResults","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke240c9f0a69de9952748e2df8d156da40/AssertionResults","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}}}},"LambdaInvokebff0124bbd4116de1f88fc631eeb9a9c":{"id":"LambdaInvokebff0124bbd4116de1f88fc631eeb9a9c","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvokebff0124bbd4116de1f88fc631eeb9a9c","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.LambdaInvokeFunction","version":"2.159.0-alpha.0"},"children":{"SdkProvider":{"id":"SdkProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvokebff0124bbd4116de1f88fc631eeb9a9c/SdkProvider","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.AssertionsProvider","version":"2.159.0-alpha.0"},"children":{"AssertionsProvider":{"id":"AssertionsProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvokebff0124bbd4116de1f88fc631eeb9a9c/SdkProvider/AssertionsProvider","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvokebff0124bbd4116de1f88fc631eeb9a9c/Default","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"2.215.0","metadata":["*","*","*"]},"children":{"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvokebff0124bbd4116de1f88fc631eeb9a9c/Default/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}}}},"Invoke":{"id":"Invoke","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvokebff0124bbd4116de1f88fc631eeb9a9c/Invoke","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}},"AssertionResults":{"id":"AssertionResults","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvokebff0124bbd4116de1f88fc631eeb9a9c/AssertionResults","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}}}},"LambdaInvoke69a3388d6e311c7b828bebf747d408cc":{"id":"LambdaInvoke69a3388d6e311c7b828bebf747d408cc","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke69a3388d6e311c7b828bebf747d408cc","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.LambdaInvokeFunction","version":"2.159.0-alpha.0"},"children":{"SdkProvider":{"id":"SdkProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke69a3388d6e311c7b828bebf747d408cc/SdkProvider","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.AssertionsProvider","version":"2.159.0-alpha.0"},"children":{"AssertionsProvider":{"id":"AssertionsProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke69a3388d6e311c7b828bebf747d408cc/SdkProvider/AssertionsProvider","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke69a3388d6e311c7b828bebf747d408cc/Default","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"2.215.0","metadata":["*","*","*"]},"children":{"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke69a3388d6e311c7b828bebf747d408cc/Default/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}}}},"Invoke":{"id":"Invoke","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke69a3388d6e311c7b828bebf747d408cc/Invoke","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}},"AssertionResults":{"id":"AssertionResults","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke69a3388d6e311c7b828bebf747d408cc/AssertionResults","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"2.215.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"2.215.0"}}}}}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}}
\ No newline at end of file
+{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"2.215.0"},"children":{"LlrtFunctionIntegTestTarget":{"id":"LlrtFunctionIntegTestTarget","path":"LlrtFunctionIntegTestTarget","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"2.215.0"},"children":{"Handler":{"id":"Handler","path":"LlrtFunctionIntegTestTarget/Handler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda_nodejs.NodejsFunction","version":"2.215.0","metadata":[{"awsSdkConnectionReuse":false,"runtime":"*","entry":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"},"code":"*","handler":"*"},{"awsSdkConnectionReuse":false,"runtime":"*","entry":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"}}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"LlrtFunctionIntegTestTarget/Handler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"2.215.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"LlrtFunctionIntegTestTarget/Handler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.215.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/Handler/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"LlrtFunctionIntegTestTarget/Handler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"2.215.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/Handler/ServiceRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"s3:ListAllMyBuckets","Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"HandlerServiceRoleDefaultPolicyCBD0CC91","roles":[{"Ref":"HandlerServiceRoleFCDC14AE"}]}}}}}}},"Code":{"id":"Code","path":"LlrtFunctionIntegTestTarget/Handler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"2.215.0"},"children":{"Stage":{"id":"Stage","path":"LlrtFunctionIntegTestTarget/Handler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"2.215.0"}},"AssetBucket":{"id":"AssetBucket","path":"LlrtFunctionIntegTestTarget/Handler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"2.215.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/Handler/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"0d077c4f0f614ee0dabf2c844841f52bd406132de209b3a3b8770cb0cbece261.zip"},"handler":"index.handler","role":{"Fn::GetAtt":["HandlerServiceRoleFCDC14AE","Arn"]},"runtime":"nodejs20.x"}}},"LogGroup":{"id":"LogGroup","path":"LlrtFunctionIntegTestTarget/Handler/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"2.215.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/Handler/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"Handler886CB40B"}]]},"retentionInDays":731}}}}}}},"ArmHandler":{"id":"ArmHandler","path":"LlrtFunctionIntegTestTarget/ArmHandler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda_nodejs.NodejsFunction","version":"2.215.0","metadata":[{"awsSdkConnectionReuse":false,"runtime":"*","entry":"*","architecture":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"},"code":"*","handler":"*"},{"awsSdkConnectionReuse":false,"runtime":"*","entry":"*","architecture":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"}}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"LlrtFunctionIntegTestTarget/ArmHandler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"2.215.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"LlrtFunctionIntegTestTarget/ArmHandler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.215.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/ArmHandler/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"LlrtFunctionIntegTestTarget/ArmHandler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"2.215.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/ArmHandler/ServiceRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"s3:ListAllMyBuckets","Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"ArmHandlerServiceRoleDefaultPolicyB9B1C47C","roles":[{"Ref":"ArmHandlerServiceRole413AC94A"}]}}}}}}},"Code":{"id":"Code","path":"LlrtFunctionIntegTestTarget/ArmHandler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"2.215.0"},"children":{"Stage":{"id":"Stage","path":"LlrtFunctionIntegTestTarget/ArmHandler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"2.215.0"}},"AssetBucket":{"id":"AssetBucket","path":"LlrtFunctionIntegTestTarget/ArmHandler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"2.215.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/ArmHandler/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"architectures":["arm64"],"code":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"3f0df07c5f0a1a9557efff2713b8a732630ff0c9c6bc561edf6fd42d2777d26d.zip"},"handler":"index.handler","role":{"Fn::GetAtt":["ArmHandlerServiceRole413AC94A","Arn"]},"runtime":"nodejs20.x"}}},"LogGroup":{"id":"LogGroup","path":"LlrtFunctionIntegTestTarget/ArmHandler/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"2.215.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/ArmHandler/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"ArmHandler7C85DE11"}]]},"retentionInDays":731}}}}}}},"FullBinaryHandler":{"id":"FullBinaryHandler","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda_nodejs.NodejsFunction","version":"2.215.0","metadata":[{"awsSdkConnectionReuse":false,"runtime":"*","entry":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"},"code":"*","handler":"*"},{"awsSdkConnectionReuse":false,"runtime":"*","entry":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"}}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"2.215.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.215.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"2.215.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler/ServiceRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"s3:ListAllMyBuckets","Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"FullBinaryHandlerServiceRoleDefaultPolicy6A254230","roles":[{"Ref":"FullBinaryHandlerServiceRole27DAC75C"}]}}}}}}},"Code":{"id":"Code","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"2.215.0"},"children":{"Stage":{"id":"Stage","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"2.215.0"}},"AssetBucket":{"id":"AssetBucket","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"2.215.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"c9fcdd092984e282b07b3ddcf6becfb1a639caa786e54270dac65ba7f97fdce2.zip"},"handler":"index.handler","role":{"Fn::GetAtt":["FullBinaryHandlerServiceRole27DAC75C","Arn"]},"runtime":"nodejs20.x"}}},"LogGroup":{"id":"LogGroup","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"2.215.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/FullBinaryHandler/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"FullBinaryHandler1600ED15"}]]},"retentionInDays":731}}}}}}},"NoSdkBinaryHandler":{"id":"NoSdkBinaryHandler","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda_nodejs.NodejsFunction","version":"2.215.0","metadata":[{"awsSdkConnectionReuse":false,"runtime":"*","entry":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"},"code":"*","handler":"*"},{"awsSdkConnectionReuse":false,"runtime":"*","entry":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"}}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"2.215.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.215.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"2.215.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler/ServiceRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"s3:ListAllMyBuckets","Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"NoSdkBinaryHandlerServiceRoleDefaultPolicyDC9BBD8B","roles":[{"Ref":"NoSdkBinaryHandlerServiceRole8CABE201"}]}}}}}}},"Code":{"id":"Code","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"2.215.0"},"children":{"Stage":{"id":"Stage","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"2.215.0"}},"AssetBucket":{"id":"AssetBucket","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"2.215.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"2c91bb8cca67d923aaf45645a9b893320a3af82f20d0b0264bcc743dd5a641c9.zip"},"handler":"index.handler","role":{"Fn::GetAtt":["NoSdkBinaryHandlerServiceRole8CABE201","Arn"]},"runtime":"nodejs20.x"}}},"LogGroup":{"id":"LogGroup","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"2.215.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/NoSdkBinaryHandler/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"NoSdkBinaryHandler3ED82436"}]]},"retentionInDays":731}}}}}}},"CustomBinaryHandler":{"id":"CustomBinaryHandler","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda_nodejs.NodejsFunction","version":"2.215.0","metadata":[{"awsSdkConnectionReuse":false,"runtime":"*","entry":"*","depsLockFilePath":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"},"code":"*","handler":"*"},{"awsSdkConnectionReuse":false,"runtime":"*","entry":"*","depsLockFilePath":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"}}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"2.215.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.215.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"2.215.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler/ServiceRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"s3:ListAllMyBuckets","Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"CustomBinaryHandlerServiceRoleDefaultPolicyED2FBAA6","roles":[{"Ref":"CustomBinaryHandlerServiceRoleCF90F487"}]}}}}}}},"Code":{"id":"Code","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"2.215.0"},"children":{"Stage":{"id":"Stage","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"2.215.0"}},"AssetBucket":{"id":"AssetBucket","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"2.215.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"ca6b96daba04d69ad843da425b485f310a2ac068a6864b4892995ebdcadabecf.zip"},"handler":"index.handler","role":{"Fn::GetAtt":["CustomBinaryHandlerServiceRoleCF90F487","Arn"]},"runtime":"nodejs20.x"}}},"LogGroup":{"id":"LogGroup","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"2.215.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/CustomBinaryHandler/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"CustomBinaryHandler641A933E"}]]},"retentionInDays":731}}}}}}},"LayerHandler":{"id":"LayerHandler","path":"LlrtFunctionIntegTestTarget/LayerHandler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda_nodejs.NodejsFunction","version":"2.215.0","metadata":[{"awsSdkConnectionReuse":false,"runtime":"*","entry":"*","depsLockFilePath":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"},"code":"*","handler":"*"},{"awsSdkConnectionReuse":false,"runtime":"*","entry":"*","depsLockFilePath":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"}},{}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"LlrtFunctionIntegTestTarget/LayerHandler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"2.215.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"LlrtFunctionIntegTestTarget/LayerHandler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.215.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/LayerHandler/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"LlrtFunctionIntegTestTarget/LayerHandler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"2.215.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/LayerHandler/ServiceRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"s3:ListAllMyBuckets","Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"LayerHandlerServiceRoleDefaultPolicy17846BDC","roles":[{"Ref":"LayerHandlerServiceRoleCB6A82DD"}]}}}}}}},"Code":{"id":"Code","path":"LlrtFunctionIntegTestTarget/LayerHandler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"2.215.0"},"children":{"Stage":{"id":"Stage","path":"LlrtFunctionIntegTestTarget/LayerHandler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"2.215.0"}},"AssetBucket":{"id":"AssetBucket","path":"LlrtFunctionIntegTestTarget/LayerHandler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"2.215.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/LayerHandler/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"531eb4a72df0dad25daeaccc31c78c676a5616a85798d42e05d8aaa5df5d3399.zip"},"handler":"index.handler","layers":[{"Ref":"llrtlayerx64latest9C10C861"}],"role":{"Fn::GetAtt":["LayerHandlerServiceRoleCB6A82DD","Arn"]},"runtime":"nodejs20.x"}}},"LogGroup":{"id":"LogGroup","path":"LlrtFunctionIntegTestTarget/LayerHandler/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"2.215.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/LayerHandler/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"LayerHandler66021063"}]]},"retentionInDays":731}}}}}}},"llrt-layer-x64-latest":{"id":"llrt-layer-x64-latest","path":"LlrtFunctionIntegTestTarget/llrt-layer-x64-latest","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.LayerVersion","version":"2.215.0","metadata":[{"code":"*","compatibleArchitectures":"*"}]},"children":{"Code":{"id":"Code","path":"LlrtFunctionIntegTestTarget/llrt-layer-x64-latest/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"2.215.0"},"children":{"Stage":{"id":"Stage","path":"LlrtFunctionIntegTestTarget/llrt-layer-x64-latest/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"2.215.0"}},"AssetBucket":{"id":"AssetBucket","path":"LlrtFunctionIntegTestTarget/llrt-layer-x64-latest/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"2.215.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/llrt-layer-x64-latest/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"compatibleArchitectures":["x86_64"],"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"9a3fcb668160409d2849f5a3c82a6e8bed06831e6b89970752ad53e82fdd565f.zip"}}}}}},"LayerArmHandler":{"id":"LayerArmHandler","path":"LlrtFunctionIntegTestTarget/LayerArmHandler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda_nodejs.NodejsFunction","version":"2.215.0","metadata":[{"awsSdkConnectionReuse":false,"runtime":"*","architecture":"*","entry":"*","depsLockFilePath":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"},"code":"*","handler":"*"},{"awsSdkConnectionReuse":false,"runtime":"*","architecture":"*","entry":"*","depsLockFilePath":"*","bundling":{"target":"*","format":"esm","minify":true,"commandHooks":"*","forceDockerBundling":"*","externalModules":"*"}},{}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"LlrtFunctionIntegTestTarget/LayerArmHandler/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"2.215.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"LlrtFunctionIntegTestTarget/LayerArmHandler/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.215.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/LayerArmHandler/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"LlrtFunctionIntegTestTarget/LayerArmHandler/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"2.215.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/LayerArmHandler/ServiceRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"s3:ListAllMyBuckets","Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"policyName":"LayerArmHandlerServiceRoleDefaultPolicy4B1C6409","roles":[{"Ref":"LayerArmHandlerServiceRole78659E75"}]}}}}}}},"Code":{"id":"Code","path":"LlrtFunctionIntegTestTarget/LayerArmHandler/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"2.215.0"},"children":{"Stage":{"id":"Stage","path":"LlrtFunctionIntegTestTarget/LayerArmHandler/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"2.215.0"}},"AssetBucket":{"id":"AssetBucket","path":"LlrtFunctionIntegTestTarget/LayerArmHandler/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"2.215.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/LayerArmHandler/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"architectures":["arm64"],"code":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"531eb4a72df0dad25daeaccc31c78c676a5616a85798d42e05d8aaa5df5d3399.zip"},"handler":"index.handler","layers":[{"Ref":"llrtlayerarm64latest0E433E1F"}],"role":{"Fn::GetAtt":["LayerArmHandlerServiceRole78659E75","Arn"]},"runtime":"nodejs20.x"}}},"LogGroup":{"id":"LogGroup","path":"LlrtFunctionIntegTestTarget/LayerArmHandler/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"2.215.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/LayerArmHandler/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"LayerArmHandler9147865B"}]]},"retentionInDays":731}}}}}}},"llrt-layer-arm64-latest":{"id":"llrt-layer-arm64-latest","path":"LlrtFunctionIntegTestTarget/llrt-layer-arm64-latest","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.LayerVersion","version":"2.215.0","metadata":[{"code":"*","compatibleArchitectures":"*"}]},"children":{"Code":{"id":"Code","path":"LlrtFunctionIntegTestTarget/llrt-layer-arm64-latest/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"2.215.0"},"children":{"Stage":{"id":"Stage","path":"LlrtFunctionIntegTestTarget/llrt-layer-arm64-latest/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"2.215.0"}},"AssetBucket":{"id":"AssetBucket","path":"LlrtFunctionIntegTestTarget/llrt-layer-arm64-latest/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"2.215.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"LlrtFunctionIntegTestTarget/llrt-layer-arm64-latest/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"2.215.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"compatibleArchitectures":["arm64"],"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"52d6a9bf141495dafa8797c991df4839adf1e5780f14bfa263ff6a7c8312e4f8.zip"}}}}}},"Exports":{"id":"Exports","path":"LlrtFunctionIntegTestTarget/Exports","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"Output{\"Ref\":\"Handler886CB40B\"}":{"id":"Output{\"Ref\":\"Handler886CB40B\"}","path":"LlrtFunctionIntegTestTarget/Exports/Output{\"Ref\":\"Handler886CB40B\"}","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}},"Output{\"Ref\":\"ArmHandler7C85DE11\"}":{"id":"Output{\"Ref\":\"ArmHandler7C85DE11\"}","path":"LlrtFunctionIntegTestTarget/Exports/Output{\"Ref\":\"ArmHandler7C85DE11\"}","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}},"Output{\"Ref\":\"FullBinaryHandler1600ED15\"}":{"id":"Output{\"Ref\":\"FullBinaryHandler1600ED15\"}","path":"LlrtFunctionIntegTestTarget/Exports/Output{\"Ref\":\"FullBinaryHandler1600ED15\"}","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}},"Output{\"Ref\":\"NoSdkBinaryHandler3ED82436\"}":{"id":"Output{\"Ref\":\"NoSdkBinaryHandler3ED82436\"}","path":"LlrtFunctionIntegTestTarget/Exports/Output{\"Ref\":\"NoSdkBinaryHandler3ED82436\"}","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}},"Output{\"Ref\":\"CustomBinaryHandler641A933E\"}":{"id":"Output{\"Ref\":\"CustomBinaryHandler641A933E\"}","path":"LlrtFunctionIntegTestTarget/Exports/Output{\"Ref\":\"CustomBinaryHandler641A933E\"}","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}},"Output{\"Ref\":\"LayerHandler66021063\"}":{"id":"Output{\"Ref\":\"LayerHandler66021063\"}","path":"LlrtFunctionIntegTestTarget/Exports/Output{\"Ref\":\"LayerHandler66021063\"}","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}},"Output{\"Ref\":\"LayerArmHandler9147865B\"}":{"id":"Output{\"Ref\":\"LayerArmHandler9147865B\"}","path":"LlrtFunctionIntegTestTarget/Exports/Output{\"Ref\":\"LayerArmHandler9147865B\"}","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"LlrtFunctionIntegTestTarget/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"2.215.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"LlrtFunctionIntegTestTarget/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"2.215.0"}}}},"LlrtFunctionIntegTest":{"id":"LlrtFunctionIntegTest","path":"LlrtFunctionIntegTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"2.159.0-alpha.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"LlrtFunctionIntegTest/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"2.159.0-alpha.0"},"children":{"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"2.215.0"},"children":{"LambdaInvoke35ae3a38b93bc81e7b95e90f43eeaec5":{"id":"LambdaInvoke35ae3a38b93bc81e7b95e90f43eeaec5","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke35ae3a38b93bc81e7b95e90f43eeaec5","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.LambdaInvokeFunction","version":"2.159.0-alpha.0"},"children":{"SdkProvider":{"id":"SdkProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke35ae3a38b93bc81e7b95e90f43eeaec5/SdkProvider","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.AssertionsProvider","version":"2.159.0-alpha.0"},"children":{"AssertionsProvider":{"id":"AssertionsProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke35ae3a38b93bc81e7b95e90f43eeaec5/SdkProvider/AssertionsProvider","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke35ae3a38b93bc81e7b95e90f43eeaec5/Default","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"2.215.0","metadata":["*","*","*"]},"children":{"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke35ae3a38b93bc81e7b95e90f43eeaec5/Default/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}}}},"Invoke":{"id":"Invoke","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke35ae3a38b93bc81e7b95e90f43eeaec5/Invoke","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}},"AssertionResults":{"id":"AssertionResults","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke35ae3a38b93bc81e7b95e90f43eeaec5/AssertionResults","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}}}},"SingletonFunction1488541a7b23466481b69b4408076b81":{"id":"SingletonFunction1488541a7b23466481b69b4408076b81","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/SingletonFunction1488541a7b23466481b69b4408076b81","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"},"children":{"Staging":{"id":"Staging","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/SingletonFunction1488541a7b23466481b69b4408076b81/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"2.215.0"}},"Role":{"id":"Role","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/SingletonFunction1488541a7b23466481b69b4408076b81/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}},"Handler":{"id":"Handler","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/SingletonFunction1488541a7b23466481b69b4408076b81/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"2.215.0"}},"LambdaInvoke997059d943474e43661f387022a21092":{"id":"LambdaInvoke997059d943474e43661f387022a21092","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke997059d943474e43661f387022a21092","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.LambdaInvokeFunction","version":"2.159.0-alpha.0"},"children":{"SdkProvider":{"id":"SdkProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke997059d943474e43661f387022a21092/SdkProvider","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.AssertionsProvider","version":"2.159.0-alpha.0"},"children":{"AssertionsProvider":{"id":"AssertionsProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke997059d943474e43661f387022a21092/SdkProvider/AssertionsProvider","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke997059d943474e43661f387022a21092/Default","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"2.215.0","metadata":["*","*","*"]},"children":{"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke997059d943474e43661f387022a21092/Default/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}}}},"Invoke":{"id":"Invoke","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke997059d943474e43661f387022a21092/Invoke","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}},"AssertionResults":{"id":"AssertionResults","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke997059d943474e43661f387022a21092/AssertionResults","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}}}},"LambdaInvoke240c9f0a69de9952748e2df8d156da40":{"id":"LambdaInvoke240c9f0a69de9952748e2df8d156da40","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke240c9f0a69de9952748e2df8d156da40","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.LambdaInvokeFunction","version":"2.159.0-alpha.0"},"children":{"SdkProvider":{"id":"SdkProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke240c9f0a69de9952748e2df8d156da40/SdkProvider","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.AssertionsProvider","version":"2.159.0-alpha.0"},"children":{"AssertionsProvider":{"id":"AssertionsProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke240c9f0a69de9952748e2df8d156da40/SdkProvider/AssertionsProvider","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke240c9f0a69de9952748e2df8d156da40/Default","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"2.215.0","metadata":["*","*","*"]},"children":{"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke240c9f0a69de9952748e2df8d156da40/Default/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}}}},"Invoke":{"id":"Invoke","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke240c9f0a69de9952748e2df8d156da40/Invoke","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}},"AssertionResults":{"id":"AssertionResults","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke240c9f0a69de9952748e2df8d156da40/AssertionResults","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}}}},"LambdaInvokebff0124bbd4116de1f88fc631eeb9a9c":{"id":"LambdaInvokebff0124bbd4116de1f88fc631eeb9a9c","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvokebff0124bbd4116de1f88fc631eeb9a9c","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.LambdaInvokeFunction","version":"2.159.0-alpha.0"},"children":{"SdkProvider":{"id":"SdkProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvokebff0124bbd4116de1f88fc631eeb9a9c/SdkProvider","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.AssertionsProvider","version":"2.159.0-alpha.0"},"children":{"AssertionsProvider":{"id":"AssertionsProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvokebff0124bbd4116de1f88fc631eeb9a9c/SdkProvider/AssertionsProvider","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvokebff0124bbd4116de1f88fc631eeb9a9c/Default","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"2.215.0","metadata":["*","*","*"]},"children":{"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvokebff0124bbd4116de1f88fc631eeb9a9c/Default/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}}}},"Invoke":{"id":"Invoke","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvokebff0124bbd4116de1f88fc631eeb9a9c/Invoke","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}},"AssertionResults":{"id":"AssertionResults","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvokebff0124bbd4116de1f88fc631eeb9a9c/AssertionResults","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}}}},"LambdaInvoke69a3388d6e311c7b828bebf747d408cc":{"id":"LambdaInvoke69a3388d6e311c7b828bebf747d408cc","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke69a3388d6e311c7b828bebf747d408cc","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.LambdaInvokeFunction","version":"2.159.0-alpha.0"},"children":{"SdkProvider":{"id":"SdkProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke69a3388d6e311c7b828bebf747d408cc/SdkProvider","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.AssertionsProvider","version":"2.159.0-alpha.0"},"children":{"AssertionsProvider":{"id":"AssertionsProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke69a3388d6e311c7b828bebf747d408cc/SdkProvider/AssertionsProvider","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke69a3388d6e311c7b828bebf747d408cc/Default","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"2.215.0","metadata":["*","*","*"]},"children":{"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke69a3388d6e311c7b828bebf747d408cc/Default/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}}}},"Invoke":{"id":"Invoke","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke69a3388d6e311c7b828bebf747d408cc/Invoke","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}},"AssertionResults":{"id":"AssertionResults","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke69a3388d6e311c7b828bebf747d408cc/AssertionResults","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}}}},"LambdaInvoke805b2b3b09077c2b42bb6bec7de55543":{"id":"LambdaInvoke805b2b3b09077c2b42bb6bec7de55543","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke805b2b3b09077c2b42bb6bec7de55543","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.LambdaInvokeFunction","version":"2.159.0-alpha.0"},"children":{"SdkProvider":{"id":"SdkProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke805b2b3b09077c2b42bb6bec7de55543/SdkProvider","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.AssertionsProvider","version":"2.159.0-alpha.0"},"children":{"AssertionsProvider":{"id":"AssertionsProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke805b2b3b09077c2b42bb6bec7de55543/SdkProvider/AssertionsProvider","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke805b2b3b09077c2b42bb6bec7de55543/Default","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"2.215.0","metadata":["*","*","*"]},"children":{"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke805b2b3b09077c2b42bb6bec7de55543/Default/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}}}},"Invoke":{"id":"Invoke","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke805b2b3b09077c2b42bb6bec7de55543/Invoke","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}},"AssertionResults":{"id":"AssertionResults","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke805b2b3b09077c2b42bb6bec7de55543/AssertionResults","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}}}},"LambdaInvoke622289161fa9b53fc725450a74439357":{"id":"LambdaInvoke622289161fa9b53fc725450a74439357","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke622289161fa9b53fc725450a74439357","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.LambdaInvokeFunction","version":"2.159.0-alpha.0"},"children":{"SdkProvider":{"id":"SdkProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke622289161fa9b53fc725450a74439357/SdkProvider","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.AssertionsProvider","version":"2.159.0-alpha.0"},"children":{"AssertionsProvider":{"id":"AssertionsProvider","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke622289161fa9b53fc725450a74439357/SdkProvider/AssertionsProvider","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}},"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke622289161fa9b53fc725450a74439357/Default","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"2.215.0","metadata":["*","*","*"]},"children":{"Default":{"id":"Default","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke622289161fa9b53fc725450a74439357/Default/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}}}},"Invoke":{"id":"Invoke","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke622289161fa9b53fc725450a74439357/Invoke","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.215.0"}},"AssertionResults":{"id":"AssertionResults","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/LambdaInvoke622289161fa9b53fc725450a74439357/AssertionResults","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.215.0"}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"2.215.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"LlrtFunctionIntegTest/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"2.215.0"}}}}}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}}
\ No newline at end of file
diff --git a/test/integ.llrt-function.ts b/test/integ.llrt-function.ts
index f00c51f..cb5ae3d 100644
--- a/test/integ.llrt-function.ts
+++ b/test/integ.llrt-function.ts
@@ -104,6 +104,37 @@ class TestStack extends Stack {
);
this.handlers.push(handler);
}
+
+ {
+ const handler = new LlrtFunction(this, 'LayerHandler', {
+ entry: '../example/lambda/s3.ts',
+ depsLockFilePath: '../example/lambda/package-lock.json',
+ useLambdaLayer: true,
+ });
+ handler.addToRolePolicy(
+ new PolicyStatement({
+ actions: ['s3:ListAllMyBuckets'],
+ resources: ['*'],
+ }),
+ );
+ this.handlers.push(handler);
+ }
+
+ {
+ const handler = new LlrtFunction(this, 'LayerArmHandler', {
+ architecture: Architecture.ARM_64,
+ entry: '../example/lambda/s3.ts',
+ depsLockFilePath: '../example/lambda/package-lock.json',
+ useLambdaLayer: true,
+ });
+ handler.addToRolePolicy(
+ new PolicyStatement({
+ actions: ['s3:ListAllMyBuckets'],
+ resources: ['*'],
+ }),
+ );
+ this.handlers.push(handler);
+ }
}
}