Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(examples): added sam example to workflows #849

Merged
merged 6 commits into from
May 12, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions .github/workflows/on-merge-to-main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,16 @@ jobs:
# This installs all the dependencies of ./packages/*
# See https://github.com/npm/cli/issues/4475 to see why --foreground-scripts
run: npm ci --foreground-scripts
- name: Install example packages
# Since we are not managing the cdk examples with npm workspaces we install
- name: Install CDK example packages
# Since we are not managing the CDK examples with npm workspaces we install
# the dependencies in a separate step
working-directory: ./examples/cdk
run: npm ci
run: npm ci
- name: Install SAM example packages
# Since we are not managing the SAM examples with npm workspaces we install
# the dependencies in a separate step
working-directory: ./examples/sam
run: npm ci
- name: Run lint
run: npm run lerna-lint
- name: Run tests
Expand Down
11 changes: 8 additions & 3 deletions .github/workflows/on-release-prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,16 @@ jobs:
# This installs all the dependencies of ./packages/*
# See https://github.com/npm/cli/issues/4475 to see why --foreground-scripts
run: npm ci --foreground-scripts
- name: Install example packages
# Since we are not managing the cdk examples with npm workspaces we install
- name: Install CDK example packages
# Since we are not managing the CDK examples with npm workspaces we install
# the dependencies in a separate step
working-directory: ./examples/cdk
run: npm ci
run: npm ci
- name: Install SAM example packages
# Since we are not managing the SAM examples with npm workspaces we install
# the dependencies in a separate step
working-directory: ./examples/sam
run: npm ci
- name: Run lint
run: npm run lerna-lint
- name: Run tests
Expand Down
11 changes: 8 additions & 3 deletions .github/workflows/pr_lint_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,16 @@ jobs:
# This installs all the dependencies of ./packages/*
# See https://github.com/npm/cli/issues/4475 to see why --foreground-scripts
run: npm ci --foreground-scripts
- name: Install example packages
# Since we are not managing the cdk examples with npm workspaces we install
- name: Install CDK example packages
# Since we are not managing the CDK examples with npm workspaces we install
# the dependencies in a separate step
working-directory: ./examples/cdk
run: npm ci
run: npm ci
- name: Install SAM example packages
# Since we are not managing the SAM examples with npm workspaces we install
# the dependencies in a separate step
working-directory: ./examples/sam
run: npm ci
- name: Run lint
run: npm run lerna-lint
- name: Run tests
Expand Down
9 changes: 7 additions & 2 deletions .github/workflows/run-e2e-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,16 @@ jobs:
# This installs all the dependencies of ./packages/*
# See https://github.com/npm/cli/issues/4475 to see why --foreground-scripts
run: npm ci --foreground-scripts
- name: "Install example packages"
# Since we are not managing the cdk examples with npm workspaces we install
- name: Install CDK example packages
# Since we are not managing the CDK examples with npm workspaces we install
# the dependencies in a separate step
working-directory: ./examples/cdk
run: npm ci
- name: Install SAM example packages
# Since we are not managing the SAM examples with npm workspaces we install
# the dependencies in a separate step
working-directory: ./examples/sam
run: npm ci
- name: "Test packaging"
run: |
npm run lerna-package
Expand Down
8 changes: 7 additions & 1 deletion examples/cdk/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
{
"name": "cdk-app",
"version": "0.8.1",
"author": {
"name": "Amazon Web Services",
"url": "https://aws.amazon.com"
},
"description": "This project contains source code and supporting files for a serverless application that you can deploy with CDK.",
"license": "MIT-0",
"bin": {
"cdk-app": "bin/cdk-app.js"
},
Expand Down Expand Up @@ -36,4 +42,4 @@
"constructs": "^10.0.82",
"source-map-support": "^0.5.16"
}
}
}
4 changes: 2 additions & 2 deletions examples/lambda-functions/get-by-id.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,10 @@ export const getByIdHandler = async (event: APIGatewayProxyEvent, context: Conte
throw new Error('SAMPLE_TABLE environment variable is not set');
}
if (!event.pathParameters) {
throw new Error('event does not contain pathParameters')
throw new Error('event does not contain pathParameters');
}
if (!event.pathParameters.id) {
throw new Error('PathParameter id is missing')
throw new Error('PathParameter id is missing');
}

const data = await docClient.get({
Expand Down
2 changes: 1 addition & 1 deletion examples/lambda-functions/put-item.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ export const putItemHandler = async (event: APIGatewayProxyEvent, context: Conte
throw new Error('SAMPLE_TABLE environment variable is not set');
}
if (!event.body) {
throw new Error('Event does not contain body')
throw new Error('Event does not contain body');
}

// Get id and name from the body of the request
Expand Down
16 changes: 8 additions & 8 deletions examples/sam/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ This project contains source code and supporting files for a serverless applicat

This project includes the following files and folders:

- `src/handlers` - Code for the application's Lambda function written in TypeScript. See "Prepare the project" below for instructions on how to copy the Lambda handler code here.
- `src` - Code for the application's Lambda function written in TypeScript. See "Prepare the project" below for instructions on how to copy the Lambda handler code here.
- `events` - Invocation events that you can use to invoke the function.
- `template.yaml` - A template that defines the application's AWS resources.

Expand Down Expand Up @@ -110,7 +110,7 @@ Build your application with the `sam build` command.
sam build --beta-features
```

The SAM CLI installs dependencies defined in `src/handlers/package.json`, compiles TypeScript with esbuild, creates a deployment package, and saves it in the `.aws-sam/build` folder.
The SAM CLI installs dependencies defined in `package.json`, compiles TypeScript with esbuild, creates a deployment package, and saves it in the `.aws-sam/build` folder.

Test a single function by invoking it directly with a test event. An event is a JSON document that represents the input that the function receives from the event source. Test events are included in the `events` folder in this project.

Expand All @@ -130,12 +130,12 @@ curl http://localhost:3000/
The SAM CLI reads the application template to determine the API's routes and the functions that they invoke. The `Events` property on each function's definition includes the route and method for each path.

```yaml
Events:
HelloWorld:
Type: Api
Properties:
Path: /
Method: get
Events:
HelloWorld:
Type: Api
Properties:
Path: /
Method: get
```

## Fetch, tail, and filter Lambda function logs
Expand Down
8 changes: 8 additions & 0 deletions examples/sam/jest.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
module.exports = {
testEnvironment: 'node',
roots: ['<rootDir>/tests'],
testMatch: ['**/*.test.ts'],
transform: {
'^.+\\.tsx?$': 'ts-jest'
}
};
Loading