further notes on SAM, local AWS development
This commit is contained in:
parent
7b0c8a3e16
commit
6d62f42567
7 changed files with 76 additions and 16 deletions
|
@ -1,15 +0,0 @@
|
||||||
---
|
|
||||||
categories:
|
|
||||||
- DevOps
|
|
||||||
tags: [AWS]
|
|
||||||
---
|
|
||||||
|
|
||||||
# Developing AWS projects locally
|
|
||||||
|
|
||||||
To develop AWS projects locally the following core tools can be used to set up a local development environment that simulates AWS services:
|
|
||||||
|
|
||||||
- AWS CLI
|
|
||||||
- Interact with AWS services from your local machine
|
|
||||||
- AWS SDK
|
|
||||||
- Integrate AWS services into your given programming language and application code
|
|
||||||
- [AWS SAM](/DevOps/AWS/AWS_SAM.md)
|
|
|
@ -191,6 +191,49 @@ The build directory is `.aws-sam/build/`. There will be a subdirectory for each
|
||||||
|
|
||||||
As noted, CloudFront handles the deployment of the application. It can only receive one file as an input. The packaging process consists in creating that single file.
|
As noted, CloudFront handles the deployment of the application. It can only receive one file as an input. The packaging process consists in creating that single file.
|
||||||
|
|
||||||
The packaging proces will first archive all of the project artefacts into a zip file and then upload that to [S3](/DevOps/AWS/AWS_S3.md).
|
The packaging proces will first archive all of the project artefacts into a zip file and then upload that to [S3](/DevOps/AWS/AWS_S3.md). A reference to this S3 entity is then provided to CloudFormation.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
The command is as follows:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sam package
|
||||||
|
--template-file template.yaml
|
||||||
|
--output-template-file pkg.yml
|
||||||
|
--region eu-west-1
|
||||||
|
```
|
||||||
|
|
||||||
|
This will automatically create a hashed bucket name for you in S3 (I have tried to add my own naming but it doesn't comply.)
|
||||||
|
|
||||||
|
### Local development with Docker
|
||||||
|
|
||||||
|
In order to work with your application locally without actually sending requests to AWS and using credit, you can run a local instance.
|
||||||
|
|
||||||
|
See [Local AWS Development with SAM](/DevOps/AWS/SAM/Local_AWS_development_with_SAM.md).
|
||||||
|
|
||||||
|
### Deploy
|
||||||
|
|
||||||
|
Once you have packaged the app you can deploy with `sam deploy --guided`. This will talk you through the defaults and will deploy the package to CloudFormation. In CloudFormation each individual project is called a **stack**.
|
||||||
|
|
||||||
|
If we then go to Cloud Formation we will see the deployed application.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Call the endpoint
|
||||||
|
|
||||||
|
If we now go to the Lambda console, we will see our function listed, and the API Gateway endpoint under `triggers`:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
We can then call this from Postman to check everything is working as it should:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Clean up and erase the stack
|
||||||
|
|
||||||
|
We can delete the stack and remove all the resources we have created with a single CLI method:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
aws cloudformation delete-stack --stack-name <name> --region <region>
|
||||||
|
```
|
32
DevOps/AWS/SAM/Local_AWS_development_with_SAM.md
Normal file
32
DevOps/AWS/SAM/Local_AWS_development_with_SAM.md
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
---
|
||||||
|
categories:
|
||||||
|
- DevOps
|
||||||
|
- Backend
|
||||||
|
tags: [AWS, docker]
|
||||||
|
---
|
||||||
|
|
||||||
|
# Local AWS development with SAM
|
||||||
|
|
||||||
|
We can run a local instance of our SAM stack for a given application without sending requests to the cloud. This is implemented through Docker.
|
||||||
|
|
||||||
|
The SAM CLI handles all the Docker-related tasks, such as pulling the required Lambda runtime images, creating containers, mounting your code and dependencies, and running your Lambda functions inside those containers.
|
||||||
|
|
||||||
|
## Basic set up
|
||||||
|
|
||||||
|
Enter your project directory.
|
||||||
|
|
||||||
|
First build your SAM application:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sam build
|
||||||
|
```
|
||||||
|
|
||||||
|
We then run:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sam local start-api
|
||||||
|
```
|
||||||
|
|
||||||
|
You should see the following:
|
||||||
|
|
||||||
|

|
BIN
_img/cloud-formation-stack.png
Normal file
BIN
_img/cloud-formation-stack.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 70 KiB |
BIN
_img/gateway-trigger.png
Normal file
BIN
_img/gateway-trigger.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 35 KiB |
BIN
_img/local-sam-docker.png
Normal file
BIN
_img/local-sam-docker.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 65 KiB |
BIN
_img/postman-aws-output.png
Normal file
BIN
_img/postman-aws-output.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
Loading…
Add table
Reference in a new issue