From 420b22be338d1ac3d9784754bc55652e2e19ca52 Mon Sep 17 00:00:00 2001 From: kaizen3031593 Date: Thu, 11 Nov 2021 15:36:39 -0500 Subject: [PATCH 1/7] chore(lambda-nodejs): make examples compile --- packages/@aws-cdk/aws-lambda-nodejs/README.md | 36 +++++++++----- .../@aws-cdk/aws-lambda-nodejs/lib/types.ts | 47 +++++++++---------- .../@aws-cdk/aws-lambda-nodejs/package.json | 9 +++- .../rosetta/default.ts-fixture | 12 +++++ 4 files changed, 66 insertions(+), 38 deletions(-) create mode 100644 packages/@aws-cdk/aws-lambda-nodejs/rosetta/default.ts-fixture diff --git a/packages/@aws-cdk/aws-lambda-nodejs/README.md b/packages/@aws-cdk/aws-lambda-nodejs/README.md index ae6f6014fa9a1..81fb45b3b1f4a 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/README.md +++ b/packages/@aws-cdk/aws-lambda-nodejs/README.md @@ -173,7 +173,7 @@ new lambda.NodejsFunction(this, 'my-handler', { bundling: { minify: true, // minify code, defaults to false sourceMap: true, // include source map, defaults to false - sourceMapMode: SourceMapMode.INLINE, // defaults to SourceMapMode.DEFAULT + sourceMapMode: lambda.SourceMapMode.INLINE, // defaults to SourceMapMode.DEFAULT sourcesContent: false, // do not include original source into source map, defaults to true target: 'es2020', // target environment for the generated JavaScript code loader: { // Use the 'dataurl' loader for '.png' files @@ -184,13 +184,13 @@ new lambda.NodejsFunction(this, 'my-handler', { 'process.env.PRODUCTION': JSON.stringify(true), 'process.env.NUMBER': JSON.stringify(123), }, - logLevel: LogLevel.SILENT, // defaults to LogLevel.WARNING + logLevel: lambda.LogLevel.SILENT, // defaults to LogLevel.WARNING keepNames: true, // defaults to false tsconfig: 'custom-tsconfig.json', // use custom-tsconfig.json instead of default, metafile: true, // include meta file, defaults to false banner: '/* comments */', // requires esbuild >= 0.9.0, defaults to none footer: '/* comments */', // requires esbuild >= 0.9.0, defaults to none - charset: Charset.UTF8, // do not escape non-ASCII characters, defaults to Charset.ASCII + charset: lambda.Charset.UTF8, // do not escape non-ASCII characters, defaults to Charset.ASCII }, }); ``` @@ -199,18 +199,28 @@ new lambda.NodejsFunction(this, 'my-handler', { It is possible to run additional commands by specifying the `commandHooks` prop: -```ts +```text +// This example only available in TypeScript +// Run additional props via `commandHooks` new lambda.NodejsFunction(this, 'my-handler-with-commands', { bundling: { commandHooks: { - // Copy a file so that it will be included in the bundled asset + beforeBundling(inputDir: string, outputDir: string): string[] { + return [ + `echo hello > ${inputDir}/a.txt`, + `cp ${inputDir}/a.txt ${outputDir}`, + ]; + }, afterBundling(inputDir: string, outputDir: string): string[] { - return [`cp ${inputDir}/my-binary.node ${outputDir}`]; - } + return [`cp ${inputDir}/b.txt ${outputDir}/txt`]; + }, + beforeInstall() { + return []; + }, // ... - } + }, // ... - } + }, }); ``` @@ -262,9 +272,9 @@ Use `bundling.buildArgs` to pass build arguments when building the Docker bundli ```ts new lambda.NodejsFunction(this, 'my-handler', { bundling: { - buildArgs: { - HTTPS_PROXY: 'https://127.0.0.1:3001', - }, + buildArgs: { + HTTPS_PROXY: 'https://127.0.0.1:3001', + }, } }); ``` @@ -274,7 +284,7 @@ Use `bundling.dockerImage` to use a custom Docker bundling image: ```ts new lambda.NodejsFunction(this, 'my-handler', { bundling: { - dockerImage: cdk.DockerImage.fromBuild('/path/to/Dockerfile'), + dockerImage: DockerImage.fromBuild('/path/to/Dockerfile'), }, }); ``` diff --git a/packages/@aws-cdk/aws-lambda-nodejs/lib/types.ts b/packages/@aws-cdk/aws-lambda-nodejs/lib/types.ts index b21d7a5fee5c2..e16e9db8120b6 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/lib/types.ts +++ b/packages/@aws-cdk/aws-lambda-nodejs/lib/types.ts @@ -52,7 +52,7 @@ export interface BundlingOptions { * * @see https://esbuild.github.io/api/#loader * - * @example { '.png': 'dataurl' } + * For example, `{ '.png': 'dataurl' }`. * * @default - use esbuild default loaders */ @@ -92,7 +92,7 @@ export interface BundlingOptions { * * This can be useful if you need to do multiple builds of the same code with different settings. * - * @example { 'tsconfig': 'path/custom.tsconfig.json' } + * For example, `{ 'tsconfig': 'path/custom.tsconfig.json' }`. * * @default - automatically discovered by `esbuild` */ @@ -103,19 +103,18 @@ export interface BundlingOptions { * * The metadata in this JSON file follows this schema (specified using TypeScript syntax): * - * ```typescript - * { - * outputs: { - * [path: string]: { - * bytes: number - * inputs: { - * [path: string]: { bytesInOutput: number } - * } - * imports: { path: string }[] - * exports: string[] - * } - * } + * ```text + * { + * outputs: { + * [path: string]: { + * bytes: number + * inputs: { + * [path: string]: { bytesInOutput: number } + * } + * imports: { path: string }[] + * exports: string[] * } + * } * } * ``` * This data can then be analyzed by other tools. For example, @@ -171,8 +170,9 @@ export interface BundlingOptions { /** * Replace global identifiers with constant expressions. * - * @example { 'process.env.DEBUG': 'true' } - * @example { 'process.env.API_KEY': JSON.stringify('xxx-xxxx-xxx') } + * For example, `{ 'process.env.DEBUG': 'true' }`. + * + * Another example, `{ 'process.env.API_KEY': JSON.stringify('xxx-xxxx-xxx') }`. * * @default - no replacements are made */ @@ -273,15 +273,14 @@ export interface BundlingOptions { * * Commands are chained with `&&`. * - * @example - * { - * // Copy a file from the input directory to the output directory - * // to include it in the bundled asset - * afterBundling(inputDir: string, outputDir: string): string[] { - * return [`cp ${inputDir}/my-binary.node ${outputDir}`]; - * } - * // ... + * The following example (specified in TypeScript) copies a file from the input + * directory to the output directory to include it in the bundled asset: + * + * ```text + * afterBundling(inputDir: string, outputDir: string): string[]{ + * return [`cp ${inputDir}/my-binary.node ${outputDir}`]; * } + * ``` */ export interface ICommandHooks { /** diff --git a/packages/@aws-cdk/aws-lambda-nodejs/package.json b/packages/@aws-cdk/aws-lambda-nodejs/package.json index 42256c76533ca..b27b6346b7a0c 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/package.json +++ b/packages/@aws-cdk/aws-lambda-nodejs/package.json @@ -28,7 +28,14 @@ ] } }, - "projectReferences": true + "projectReferences": true, + "metadata": { + "jsii": { + "rosetta": { + "strict": true + } + } + } }, "repository": { "type": "git", diff --git a/packages/@aws-cdk/aws-lambda-nodejs/rosetta/default.ts-fixture b/packages/@aws-cdk/aws-lambda-nodejs/rosetta/default.ts-fixture new file mode 100644 index 0000000000000..d1ec43165548e --- /dev/null +++ b/packages/@aws-cdk/aws-lambda-nodejs/rosetta/default.ts-fixture @@ -0,0 +1,12 @@ +// Fixture with packages imported, but nothing else +import { Construct } from 'constructs'; +import { DockerImage, Stack } from '@aws-cdk/core'; +import * as lambda from '@aws-cdk/aws-lambda-nodejs'; + +class Fixture extends Stack { + constructor(scope: Construct, id: string) { + super(scope, id); + + /// here + } +} From 0c93b87faf417daf6e64f66c23af7f0d0c2ddcf9 Mon Sep 17 00:00:00 2001 From: kaizen3031593 Date: Thu, 11 Nov 2021 15:46:26 -0500 Subject: [PATCH 2/7] chore(lambda-go): make examples compile --- packages/@aws-cdk/aws-lambda-go/README.md | 8 +++++--- packages/@aws-cdk/aws-lambda-go/lib/types.ts | 3 ++- packages/@aws-cdk/aws-lambda-go/package.json | 9 ++++++++- .../aws-lambda-go/rosetta/default.ts-fixture | 12 ++++++++++++ 4 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 packages/@aws-cdk/aws-lambda-go/rosetta/default.ts-fixture diff --git a/packages/@aws-cdk/aws-lambda-go/README.md b/packages/@aws-cdk/aws-lambda-go/README.md index 16fcffee919ea..e4de2d1641113 100644 --- a/packages/@aws-cdk/aws-lambda-go/README.md +++ b/packages/@aws-cdk/aws-lambda-go/README.md @@ -29,7 +29,7 @@ Define a `GoFunction`: ```ts new lambda.GoFunction(this, 'handler', { - entry: 'app/cmd/api' + entry: 'app/cmd/api', }); ``` @@ -154,7 +154,7 @@ Use the `bundling.dockerImage` prop to use a custom bundling image: new lambda.GoFunction(this, 'handler', { entry: 'app/cmd/api', bundling: { - dockerImage: cdk.DockerImage.fromBuild('/path/to/Dockerfile'), + dockerImage: DockerImage.fromBuild('/path/to/Dockerfile'), }, }); ``` @@ -174,7 +174,9 @@ new lambda.GoFunction(this, 'handler', { It is possible to run additional commands by specifying the `commandHooks` prop: -```ts +```text +// This example only available in TypeScript +// Run additional commands on a GoFunction via `commandHooks` property new lambda.GoFunction(this, 'handler', { bundling: { commandHooks: { diff --git a/packages/@aws-cdk/aws-lambda-go/lib/types.ts b/packages/@aws-cdk/aws-lambda-go/lib/types.ts index bcd334809be33..28e058e1a685e 100644 --- a/packages/@aws-cdk/aws-lambda-go/lib/types.ts +++ b/packages/@aws-cdk/aws-lambda-go/lib/types.ts @@ -106,7 +106,7 @@ export interface BundlingOptions { * * Commands are chained with `&&`. * - * @example + * ```text * { * // Run tests prior to bundling * beforeBundling(inputDir: string, outputDir: string): string[] { @@ -114,6 +114,7 @@ export interface BundlingOptions { * } * // ... * } + * ``` */ export interface ICommandHooks { /** diff --git a/packages/@aws-cdk/aws-lambda-go/package.json b/packages/@aws-cdk/aws-lambda-go/package.json index 939988ea2410f..5df9aae607538 100644 --- a/packages/@aws-cdk/aws-lambda-go/package.json +++ b/packages/@aws-cdk/aws-lambda-go/package.json @@ -30,7 +30,14 @@ ] } }, - "projectReferences": true + "projectReferences": true, + "metadata": { + "jsii": { + "rosetta": { + "strict": true + } + } + } }, "repository": { "type": "git", diff --git a/packages/@aws-cdk/aws-lambda-go/rosetta/default.ts-fixture b/packages/@aws-cdk/aws-lambda-go/rosetta/default.ts-fixture new file mode 100644 index 0000000000000..96f3f6933780c --- /dev/null +++ b/packages/@aws-cdk/aws-lambda-go/rosetta/default.ts-fixture @@ -0,0 +1,12 @@ +// Fixture with packages imported, but nothing else +import { Construct } from 'constructs'; +import { DockerImage, Stack } from '@aws-cdk/core'; +import * as lambda from '@aws-cdk/aws-lambda-go'; + +class Fixture extends Stack { + constructor(scope: Construct, id: string) { + super(scope, id); + + /// here + } +} From 4bd9b0f91df9b6e12bb5cd598576506fedd7bd7e Mon Sep 17 00:00:00 2001 From: kaizen3031593 Date: Thu, 11 Nov 2021 15:54:15 -0500 Subject: [PATCH 3/7] chore(lambda-python): make examples compile --- packages/@aws-cdk/aws-lambda-python/README.md | 7 ++----- packages/@aws-cdk/aws-lambda-python/package.json | 9 ++++++++- .../aws-lambda-python/rosetta/default.ts-fixture | 13 +++++++++++++ 3 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 packages/@aws-cdk/aws-lambda-python/rosetta/default.ts-fixture diff --git a/packages/@aws-cdk/aws-lambda-python/README.md b/packages/@aws-cdk/aws-lambda-python/README.md index 4106b6210b871..f238a3f309410 100644 --- a/packages/@aws-cdk/aws-lambda-python/README.md +++ b/packages/@aws-cdk/aws-lambda-python/README.md @@ -25,14 +25,11 @@ To use this module, you will need to have Docker installed. Define a `PythonFunction`: ```ts -import * as lambda from "@aws-cdk/aws-lambda"; -import { PythonFunction } from "@aws-cdk/aws-lambda-python"; - -new PythonFunction(this, 'MyFunction', { +new lambda.PythonFunction(this, 'MyFunction', { entry: '/path/to/my/function', // required index: 'my_index.py', // optional, defaults to 'index.py' handler: 'my_exported_func', // optional, defaults to 'handler' - runtime: lambda.Runtime.PYTHON_3_6, // optional, defaults to lambda.Runtime.PYTHON_3_7 + runtime: Runtime.PYTHON_3_6, // optional, defaults to lambda.Runtime.PYTHON_3_7 }); ``` diff --git a/packages/@aws-cdk/aws-lambda-python/package.json b/packages/@aws-cdk/aws-lambda-python/package.json index ea33de04517ff..6cfec00d17893 100644 --- a/packages/@aws-cdk/aws-lambda-python/package.json +++ b/packages/@aws-cdk/aws-lambda-python/package.json @@ -28,7 +28,14 @@ ] } }, - "projectReferences": true + "projectReferences": true, + "metadata": { + "jsii": { + "rosetta": { + "strict": true + } + } + } }, "repository": { "type": "git", diff --git a/packages/@aws-cdk/aws-lambda-python/rosetta/default.ts-fixture b/packages/@aws-cdk/aws-lambda-python/rosetta/default.ts-fixture new file mode 100644 index 0000000000000..516396a167e8e --- /dev/null +++ b/packages/@aws-cdk/aws-lambda-python/rosetta/default.ts-fixture @@ -0,0 +1,13 @@ +// Fixture with packages imported, but nothing else +import { Construct } from 'constructs'; +import { Stack } from '@aws-cdk/core'; +import { Runtime } from '@aws-cdk/aws-lambda'; +import * as lambda from '@aws-cdk/aws-lambda-python'; + +class Fixture extends Stack { + constructor(scope: Construct, id: string) { + super(scope, id); + + /// here + } +} From af76699b55c0e94d6b4506aef518d7006e8d7f4a Mon Sep 17 00:00:00 2001 From: kaizen3031593 Date: Thu, 11 Nov 2021 16:17:25 -0500 Subject: [PATCH 4/7] chore(lambda-event-sources): make examples compile --- .../aws-lambda-event-sources/README.md | 73 +++++++++---------- .../aws-lambda-event-sources/package.json | 9 ++- .../rosetta/default.ts-fixture | 13 ++++ 3 files changed, 56 insertions(+), 39 deletions(-) create mode 100644 packages/@aws-cdk/aws-lambda-event-sources/rosetta/default.ts-fixture diff --git a/packages/@aws-cdk/aws-lambda-event-sources/README.md b/packages/@aws-cdk/aws-lambda-event-sources/README.md index e1ba637699efd..9abd6e59d9669 100644 --- a/packages/@aws-cdk/aws-lambda-event-sources/README.md +++ b/packages/@aws-cdk/aws-lambda-event-sources/README.md @@ -24,12 +24,14 @@ sources regardless of the underlying mechanism they use. The following code sets up a lambda function with an SQS queue event source - ```ts -const fn = new lambda.Function(this, 'MyFunction', { /* ... */ }); +import { SqsEventSource } from '@aws-cdk/aws-lambda-event-sources'; +declare const fn: lambda.Function; const queue = new sqs.Queue(this, 'MyQueue'); -const eventSource = fn.addEventSource(new SqsEventSource(queue)); +const eventSource = new SqsEventSource(queue); +fn.addEventSource(eventSource); -const eventSourceId = eventSource.eventSourceId; +const eventSourceId = eventSource.eventSourceMappingId; ``` The `eventSourceId` property contains the event source id. This will be a @@ -58,16 +60,15 @@ behavior: * __enabled__: If the SQS event source mapping should be enabled. The default is true. ```ts -import * as sqs from '@aws-cdk/aws-sqs'; import { SqsEventSource } from '@aws-cdk/aws-lambda-event-sources'; -import { Duration } from '@aws-cdk/core'; const queue = new sqs.Queue(this, 'MyQueue', { - visibilityTimeout: Duration.seconds(30) // default, - receiveMessageWaitTime: Duration.seconds(20) // default + visibilityTimeout: Duration.seconds(30), // default, + receiveMessageWaitTime: Duration.seconds(20), // default }); +declare const fn: lambda.Function; -lambda.addEventSource(new SqsEventSource(queue, { +fn.addEventSource(new SqsEventSource(queue, { batchSize: 10, // default maxBatchingWindow: Duration.minutes(5), })); @@ -88,11 +89,12 @@ Amazon S3 to publish and which Lambda function to invoke. import * as s3 from '@aws-cdk/aws-s3'; import { S3EventSource } from '@aws-cdk/aws-lambda-event-sources'; -const bucket = new s3.Bucket(...); +const bucket = new s3.Bucket(this, 'mybucket'); +declare const fn: lambda.Function; -lambda.addEventSource(new S3EventSource(bucket, { +fn.addEventSource(new S3EventSource(bucket, { events: [ s3.EventType.OBJECT_CREATED, s3.EventType.OBJECT_REMOVED ], - filters: [ { prefix: 'subdir/' } ] // optional + filters: [ { prefix: 'subdir/' } ], // optional })); ``` @@ -118,12 +120,13 @@ Accounts](https://docs.aws.amazon.com/lambda/latest/dg/with-sns.html). import * as sns from '@aws-cdk/aws-sns'; import { SnsEventSource } from '@aws-cdk/aws-lambda-event-sources'; -const topic = new sns.Topic(...); +declare const topic: sns.Topic; const deadLetterQueue = new sqs.Queue(this, 'deadLetterQueue'); -lambda.addEventSource(new SnsEventSource(topic, { - filterPolicy: { ... }, - deadLetterQueue: deadLetterQueue +declare const fn: lambda.Function; +fn.addEventSource(new SnsEventSource(topic, { + filterPolicy: { }, + deadLetterQueue: deadLetterQueue, })); ``` @@ -157,24 +160,19 @@ and add it to your Lambda function. The following parameters will impact Amazon ```ts import * as dynamodb from '@aws-cdk/aws-dynamodb'; -import * as lambda from '@aws-cdk/aws-lambda'; -import * as sqs from '@aws-cdk/aws-sqs'; import { DynamoEventSource, SqsDlq } from '@aws-cdk/aws-lambda-event-sources'; -const table = new dynamodb.Table(..., { - partitionKey: ..., - stream: dynamodb.StreamViewType.NEW_IMAGE // make sure stream is configured -}); +declare const table: dynamodb.Table; const deadLetterQueue = new sqs.Queue(this, 'deadLetterQueue'); -const function = new lambda.Function(...); -function.addEventSource(new DynamoEventSource(table, { +declare const fn: lambda.Function; +fn.addEventSource(new DynamoEventSource(table, { startingPosition: lambda.StartingPosition.TRIM_HORIZON, batchSize: 5, bisectBatchOnError: true, onFailure: new SqsDlq(deadLetterQueue), - retryAttempts: 10 + retryAttempts: 10, })); ``` @@ -202,15 +200,15 @@ behavior: * __enabled__: If the DynamoDB Streams event source mapping should be enabled. The default is true. ```ts -import * as lambda from '@aws-cdk/aws-lambda'; import * as kinesis from '@aws-cdk/aws-kinesis'; import { KinesisEventSource } from '@aws-cdk/aws-lambda-event-sources'; const stream = new kinesis.Stream(this, 'MyStream'); +declare const myFunction: lambda.Function; myFunction.addEventSource(new KinesisEventSource(stream, { batchSize: 100, // default - startingPosition: lambda.StartingPosition.TRIM_HORIZON + startingPosition: lambda.StartingPosition.TRIM_HORIZON, })); ``` @@ -222,27 +220,26 @@ The following code sets up Amazon MSK as an event source for a lambda function. MSK cluster, as described in [Username/Password authentication](https://docs.aws.amazon.com/msk/latest/developerguide/msk-password.html). ```ts -import * as lambda from '@aws-cdk/aws-lambda'; -import * as msk from '@aws-cdk/aws-lambda'; -import { Secret } from '@aws-cdk/aws-secretmanager'; +import { Secret } from '@aws-cdk/aws-secretsmanager'; import { ManagedKafkaEventSource } from '@aws-cdk/aws-lambda-event-sources'; // Your MSK cluster arn -const cluster = 'arn:aws:kafka:us-east-1:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4'; +const clusterArn = 'arn:aws:kafka:us-east-1:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4'; // The Kafka topic you want to subscribe to -const topic = 'some-cool-topic' +const topic = 'some-cool-topic'; // The secret that allows access to your MSK cluster // You still have to make sure that it is associated with your cluster as described in the documentation const secret = new Secret(this, 'Secret', { secretName: 'AmazonMSK_KafkaSecret' }); +declare const myFunction: lambda.Function; myFunction.addEventSource(new ManagedKafkaEventSource({ clusterArn, topic: topic, secret: secret, batchSize: 100, // default - startingPosition: lambda.StartingPosition.TRIM_HORIZON + startingPosition: lambda.StartingPosition.TRIM_HORIZON, })); ``` @@ -250,25 +247,25 @@ The following code sets up a self managed Kafka cluster as an event source. User will need to be set up as described in [Managing access and permissions](https://docs.aws.amazon.com/lambda/latest/dg/smaa-permissions.html#smaa-permissions-add-secret). ```ts -import * as lambda from '@aws-cdk/aws-lambda'; -import { Secret } from '@aws-cdk/aws-secretmanager'; +import { Secret } from '@aws-cdk/aws-secretsmanager'; import { SelfManagedKafkaEventSource } from '@aws-cdk/aws-lambda-event-sources'; // The list of Kafka brokers -const bootstrapServers = ['kafka-broker:9092'] +const bootstrapServers = ['kafka-broker:9092']; // The Kafka topic you want to subscribe to -const topic = 'some-cool-topic' +const topic = 'some-cool-topic'; // The secret that allows access to your self hosted Kafka cluster -const secret = new Secret(this, 'Secret', { ... }); +declare const secret: Secret; +declare const myFunction: lambda.Function; myFunction.addEventSource(new SelfManagedKafkaEventSource({ bootstrapServers: bootstrapServers, topic: topic, secret: secret, batchSize: 100, // default - startingPosition: lambda.StartingPosition.TRIM_HORIZON + startingPosition: lambda.StartingPosition.TRIM_HORIZON, })); ``` diff --git a/packages/@aws-cdk/aws-lambda-event-sources/package.json b/packages/@aws-cdk/aws-lambda-event-sources/package.json index 6f0295a38c625..3bd4375cc9d24 100644 --- a/packages/@aws-cdk/aws-lambda-event-sources/package.json +++ b/packages/@aws-cdk/aws-lambda-event-sources/package.json @@ -28,7 +28,14 @@ ] } }, - "projectReferences": true + "projectReferences": true, + "metadata": { + "jsii": { + "rosetta": { + "strict": true + } + } + } }, "repository": { "type": "git", diff --git a/packages/@aws-cdk/aws-lambda-event-sources/rosetta/default.ts-fixture b/packages/@aws-cdk/aws-lambda-event-sources/rosetta/default.ts-fixture new file mode 100644 index 0000000000000..d2cdb69c90519 --- /dev/null +++ b/packages/@aws-cdk/aws-lambda-event-sources/rosetta/default.ts-fixture @@ -0,0 +1,13 @@ +// Fixture with packages imported, but nothing else +import { Construct } from 'constructs'; +import { Duration, Stack } from '@aws-cdk/core'; +import * as lambda from '@aws-cdk/aws-lambda'; +import * as sqs from '@aws-cdk/aws-sqs'; + +class Fixture extends Stack { + constructor(scope: Construct, id: string) { + super(scope, id); + + /// here + } +} From 0bff33754a089630a6268723a596539aef19df90 Mon Sep 17 00:00:00 2001 From: kaizen3031593 Date: Thu, 11 Nov 2021 16:25:46 -0500 Subject: [PATCH 5/7] chore(lambda-layer-awscli): make examples compile --- packages/@aws-cdk/lambda-layer-awscli/README.md | 7 +++++-- packages/@aws-cdk/lambda-layer-awscli/package.json | 9 ++++++++- .../lambda-layer-awscli/rosetta/default.ts-fixture | 12 ++++++++++++ 3 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 packages/@aws-cdk/lambda-layer-awscli/rosetta/default.ts-fixture diff --git a/packages/@aws-cdk/lambda-layer-awscli/README.md b/packages/@aws-cdk/lambda-layer-awscli/README.md index baad6362f5e21..e36677c222de0 100644 --- a/packages/@aws-cdk/lambda-layer-awscli/README.md +++ b/packages/@aws-cdk/lambda-layer-awscli/README.md @@ -15,8 +15,11 @@ This module exports a single class called `AwsCliLayer` which is a `lambda.Layer Usage: ```ts -const fn = new lambda.Function(...); -fn.addLayers(new AwsCliLayer(stack, 'AwsCliLayer')); +// AwsCliLayer bundles the AWS CLI in a lambda layer +import { AwsCliLayer } from '@aws-cdk/lambda-layer-awscli'; + +declare const fn: lambda.Function; +fn.addLayers(new AwsCliLayer(this, 'AwsCliLayer')); ``` The CLI will be installed under `/opt/awscli/aws`. diff --git a/packages/@aws-cdk/lambda-layer-awscli/package.json b/packages/@aws-cdk/lambda-layer-awscli/package.json index 6868ae29a97e8..1a66cd1bae0fb 100644 --- a/packages/@aws-cdk/lambda-layer-awscli/package.json +++ b/packages/@aws-cdk/lambda-layer-awscli/package.json @@ -29,7 +29,14 @@ ] } }, - "projectReferences": true + "projectReferences": true, + "metadata": { + "jsii": { + "rosetta": { + "strict": true + } + } + } }, "repository": { "type": "git", diff --git a/packages/@aws-cdk/lambda-layer-awscli/rosetta/default.ts-fixture b/packages/@aws-cdk/lambda-layer-awscli/rosetta/default.ts-fixture new file mode 100644 index 0000000000000..d3534321d7f54 --- /dev/null +++ b/packages/@aws-cdk/lambda-layer-awscli/rosetta/default.ts-fixture @@ -0,0 +1,12 @@ +// Fixture with packages imported, but nothing else +import { Construct } from 'constructs'; +import { Stack } from '@aws-cdk/core'; +import * as lambda from '@aws-cdk/aws-lambda'; + +class Fixture extends Stack { + constructor(scope: Construct, id: string) { + super(scope, id); + + /// here + } +} From 99b53bf319ed496a669db54c7985598bcf8582bb Mon Sep 17 00:00:00 2001 From: kaizen3031593 Date: Thu, 11 Nov 2021 16:34:57 -0500 Subject: [PATCH 6/7] chore(lambda-layer-kubectl): make examples compile --- packages/@aws-cdk/lambda-layer-kubectl/README.md | 7 +++++-- packages/@aws-cdk/lambda-layer-kubectl/package.json | 9 ++++++++- .../lambda-layer-kubectl/rosetta/default.ts-fixture | 12 ++++++++++++ 3 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 packages/@aws-cdk/lambda-layer-kubectl/rosetta/default.ts-fixture diff --git a/packages/@aws-cdk/lambda-layer-kubectl/README.md b/packages/@aws-cdk/lambda-layer-kubectl/README.md index 97329d16c8c50..2a90c534c9f24 100644 --- a/packages/@aws-cdk/lambda-layer-kubectl/README.md +++ b/packages/@aws-cdk/lambda-layer-kubectl/README.md @@ -18,8 +18,11 @@ This module exports a single class called `KubectlLayer` which is a `lambda.Laye Usage: ```ts -const fn = new lambda.Function(...); -fn.addLayers(new KubectlLayer(stack, 'KubectlLayer')); +// KubectlLayer bundles the 'kubectl' and 'helm' command lines +import { KubectlLayer } from '@aws-cdk/lambda-layer-kubectl'; + +declare const fn: lambda.Function; +fn.addLayers(new KubectlLayer(this, 'KubectlLayer')); ``` `kubectl` will be installed under `/opt/kubectl/kubectl`, and `helm` will be installed under `/opt/helm/helm`. diff --git a/packages/@aws-cdk/lambda-layer-kubectl/package.json b/packages/@aws-cdk/lambda-layer-kubectl/package.json index eb1c41990eff8..b62ace7ad6246 100644 --- a/packages/@aws-cdk/lambda-layer-kubectl/package.json +++ b/packages/@aws-cdk/lambda-layer-kubectl/package.json @@ -29,7 +29,14 @@ ] } }, - "projectReferences": true + "projectReferences": true, + "metadata": { + "jsii": { + "rosetta": { + "strict": true + } + } + } }, "repository": { "type": "git", diff --git a/packages/@aws-cdk/lambda-layer-kubectl/rosetta/default.ts-fixture b/packages/@aws-cdk/lambda-layer-kubectl/rosetta/default.ts-fixture new file mode 100644 index 0000000000000..d3534321d7f54 --- /dev/null +++ b/packages/@aws-cdk/lambda-layer-kubectl/rosetta/default.ts-fixture @@ -0,0 +1,12 @@ +// Fixture with packages imported, but nothing else +import { Construct } from 'constructs'; +import { Stack } from '@aws-cdk/core'; +import * as lambda from '@aws-cdk/aws-lambda'; + +class Fixture extends Stack { + constructor(scope: Construct, id: string) { + super(scope, id); + + /// here + } +} From 16d78cc7d25543c69f331ec7fd0a0fdb2fac7b41 Mon Sep 17 00:00:00 2001 From: kaizen3031593 Date: Thu, 11 Nov 2021 16:53:25 -0500 Subject: [PATCH 7/7] chore(lambda-destinations): make examples compile --- .../aws-lambda-destinations/README.md | 69 ++++++++++--------- .../aws-lambda-destinations/package.json | 9 ++- .../rosetta/default.ts-fixture | 14 ++++ 3 files changed, 57 insertions(+), 35 deletions(-) create mode 100644 packages/@aws-cdk/aws-lambda-destinations/rosetta/default.ts-fixture diff --git a/packages/@aws-cdk/aws-lambda-destinations/README.md b/packages/@aws-cdk/aws-lambda-destinations/README.md index 404b0b3157adb..675ca0b175757 100644 --- a/packages/@aws-cdk/aws-lambda-destinations/README.md +++ b/packages/@aws-cdk/aws-lambda-destinations/README.md @@ -24,15 +24,17 @@ The following destinations are supported Example with a SNS topic for successful invocations: ```ts -import * as lambda from '@aws-cdk/aws-lambda'; -import * as destinations from '@aws-cdk/aws-lambda-destinations'; +// An sns topic for successful invocations of a lambda function import * as sns from '@aws-cdk/aws-sns'; const myTopic = new sns.Topic(this, 'Topic'); const myFn = new lambda.Function(this, 'Fn', { - // other props - onSuccess: new destinations.SnsDestination(myTopic) + runtime: lambda.Runtime.NODEJS_12_X, + handler: 'index.handler', + code: lambda.Code.fromAsset(path.join(__dirname, 'lambda-handler')), + // sns topic for successful invocations + onSuccess: new destinations.SnsDestination(myTopic), }) ``` @@ -71,27 +73,27 @@ In case of failure, the record contains the reason and error object: ```json { - "version": "1.0", - "timestamp": "2019-11-24T21:52:47.333Z", - "requestContext": { - "requestId": "8ea123e4-1db7-4aca-ad10-d9ca1234c1fd", - "functionArn": "arn:aws:lambda:sa-east-1:123456678912:function:event-destinations:$LATEST", - "condition": "RetriesExhausted", - "approximateInvokeCount": 3 - }, - "requestPayload": { - "Success": false - }, - "responseContext": { - "statusCode": 200, - "executedVersion": "$LATEST", - "functionError": "Handled" - }, - "responsePayload": { - "errorMessage": "Failure from event, Success = false, I am failing!", - "errorType": "Error", - "stackTrace": [ "exports.handler (/var/task/index.js:18:18)" ] - } + "version": "1.0", + "timestamp": "2019-11-24T21:52:47.333Z", + "requestContext": { + "requestId": "8ea123e4-1db7-4aca-ad10-d9ca1234c1fd", + "functionArn": "arn:aws:lambda:sa-east-1:123456678912:function:event-destinations:$LATEST", + "condition": "RetriesExhausted", + "approximateInvokeCount": 3 + }, + "requestPayload": { + "Success": false + }, + "responseContext": { + "statusCode": 200, + "executedVersion": "$LATEST", + "functionError": "Handled" + }, + "responsePayload": { + "errorMessage": "Failure from event, Success = false, I am failing!", + "errorType": "Error", + "stackTrace": [ "exports.handler (/var/task/index.js:18:18)" ] + } } ``` @@ -112,18 +114,17 @@ The `responseOnly` option of `LambdaDestination` allows to auto-extract the resp invocation record: ```ts -import * as lambda from '@aws-cdk/aws-lambda'; -import * as destinations from '@aws-cdk/aws-lambda-destinations'; - -const destinationFn = new lambda.Function(this, 'Destination', { - // props -}); +// Auto-extract response payload with a lambda destination +declare const destinationFn: lambda.Function; const sourceFn = new lambda.Function(this, 'Source', { - // other props + runtime: lambda.Runtime.NODEJS_12_X, + handler: 'index.handler', + code: lambda.Code.fromAsset(path.join(__dirname, 'lambda-handler')), + // auto-extract on success onSuccess: new destinations.LambdaDestination(destinationFn, { - responseOnly: true // auto-extract - }); + responseOnly: true, + }), }) ``` diff --git a/packages/@aws-cdk/aws-lambda-destinations/package.json b/packages/@aws-cdk/aws-lambda-destinations/package.json index 17ce33782126c..12108477a91de 100644 --- a/packages/@aws-cdk/aws-lambda-destinations/package.json +++ b/packages/@aws-cdk/aws-lambda-destinations/package.json @@ -28,7 +28,14 @@ ] } }, - "projectReferences": true + "projectReferences": true, + "metadata": { + "jsii": { + "rosetta": { + "strict": true + } + } + } }, "repository": { "type": "git", diff --git a/packages/@aws-cdk/aws-lambda-destinations/rosetta/default.ts-fixture b/packages/@aws-cdk/aws-lambda-destinations/rosetta/default.ts-fixture new file mode 100644 index 0000000000000..fb7d525a027aa --- /dev/null +++ b/packages/@aws-cdk/aws-lambda-destinations/rosetta/default.ts-fixture @@ -0,0 +1,14 @@ +// Fixture with packages imported, but nothing else +import { Construct } from 'constructs'; +import { Stack } from '@aws-cdk/core'; +import * as lambda from '@aws-cdk/aws-lambda'; +import * as destinations from '@aws-cdk/aws-lambda-destinations'; +import * as path from 'path'; + +class Fixture extends Stack { + constructor(scope: Construct, id: string) { + super(scope, id); + + /// here + } +}