annotate README.md @ 5:54e71cf6e324

refactor code
author Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
date Fri, 17 Sep 2021 17:42:30 +0200
parents 5c36f51105c2
children 6541622b6127
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
1 # tweet-analysis
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
2
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
3 ## Structure
0
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
4
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
5 - src - Code for the application's Lambda function.
0
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
6 - events - Invocation events that you can use to invoke the function.
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
7 - tests - Unit tests for the application code.
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
8 - template.yaml - A template that defines the application's AWS resources.
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
9
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
10 The application uses several AWS resources, including Lambda functions and an API Gateway API.
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
11 These resources are defined in the `template.yaml` file in this project. You can update the template to add AWS
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
12 resources through the same deployment process that updates your application code.
0
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
13
3
5c36f51105c2 fetch tweets working
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 1
diff changeset
14 ## Secrets
5c36f51105c2 fetch tweets working
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 1
diff changeset
15 There are some process that must be made manually, such us secrets creation in AWS Secrets Manager. Before deploying
5c36f51105c2 fetch tweets working
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 1
diff changeset
16 the application do the following:
5c36f51105c2 fetch tweets working
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 1
diff changeset
17
5c36f51105c2 fetch tweets working
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 1
diff changeset
18 **Create Twitter keys**:
5c36f51105c2 fetch tweets working
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 1
diff changeset
19 - Go to AWS Secrets Manager Console
5c36f51105c2 fetch tweets working
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 1
diff changeset
20 - Create `Other type of secrets`
5c36f51105c2 fetch tweets working
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 1
diff changeset
21 - Create two keys called `KEY` and `BEARER`
5c36f51105c2 fetch tweets working
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 1
diff changeset
22 - Add the values for each one
5c36f51105c2 fetch tweets working
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 1
diff changeset
23 - Name the secret `tweet-analysis-keys`
5c36f51105c2 fetch tweets working
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 1
diff changeset
24
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
25 ## Deploy the application
0
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
26
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
27 The Serverless Application Model Command Line Interface (SAM CLI) is an extension of the AWS CLI that adds functionality
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
28 for building and testing Lambda applications. It uses Docker to run your functions in an Amazon Linux environment that
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
29 matches Lambda. It can also emulate your application's build environment and API.
0
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
30
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
31 To use the SAM CLI, you need the following tools.
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
32
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
33 * SAM CLI -
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
34 [Install the SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html)
0
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
35 * [Python 3 installed](https://www.python.org/downloads/)
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
36 * Docker - [Install Docker community edition](https://hub.docker.com/search/?type=edition&offering=community)
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
37
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
38 To build and deploy your application for the first time, run the following in your shell:
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
39
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
40 ```bash
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
41 sam build --use-container
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
42 sam deploy --guided
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
43 ```
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
44
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
45 The first command will build the source of your application. The second command will package and deploy your application
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
46 to AWS, with a series of prompts:
0
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
47
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
48 * **Stack Name**: The name of the stack to deploy to CloudFormation. This should be unique to your account and region,
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
49 and a good starting point would be something matching your project name.
0
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
50 * **AWS Region**: The AWS region you want to deploy your app to.
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
51 * **Confirm changes before deploy**: If set to yes, any change sets will be shown to you before execution for manual
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
52 review. If set to no, the AWS SAM CLI will automatically deploy application changes.
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
53 * **Allow SAM CLI IAM role creation**: Many AWS SAM templates, including this example, create AWS IAM roles required
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
54 for the AWS Lambda function(s) included to access AWS services. By default, these are scoped down to minimum required
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
55 permissions. To deploy an AWS CloudFormation stack which creates or modifies IAM roles, the `CAPABILITY_IAM` value for
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
56 `capabilities` must be provided. If permission isn't provided through this prompt, to deploy this example you must
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
57 explicitly pass `--capabilities CAPABILITY_IAM` to the `sam deploy` command.
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
58 * **Save arguments to `samconfig.toml`**: If set to yes, your choices will be saved to a configuration file inside the
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
59 project, so that in the future you can just re-run `sam deploy` without parameters to deploy changes to your application.
0
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
60
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
61 You can find your API Gateway Endpoint URL in the output values displayed after deployment.
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
62
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
63 **If a certificate in AWS Certificate Manager is created with the template, you have to create manually the DNS
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
64 validation record to issue the certificate**
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
65
0
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
66 ## Use the SAM CLI to build and test locally
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
67
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
68 Build your application with the `sam build --use-container` command.
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
69
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
70 ```bash
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
71 tweet-analysis$ sam build --use-container
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
72 ```
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
73
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
74 The SAM CLI installs dependencies defined in `src/requirements.txt`, creates a deployment package, and saves it in the
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
75 `.aws-sam/build` folder.
0
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
76
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
77 Test a single function by invoking it directly with a test event. An event is a JSON document that represents the input
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
78 that the function receives from the event source. Test events are included in the `events` folder in this project.
0
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
79
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
80 Run functions locally and invoke them with the `sam local invoke` command.
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
81
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
82 ```bash
5
54e71cf6e324 refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 3
diff changeset
83 tweet-analysis$ sam local invoke HelloWorldFunction --event events/sentiment_event.json
0
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
84 ```
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
85
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
86 The SAM CLI can also emulate your application's API. Use the `sam local start-api` to run the API locally on port 3000.
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
87
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
88 ```bash
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
89 tweet-analysis$ sam local start-api
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
90 tweet-analysis$ curl http://localhost:3000/
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
91 ```
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
92
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
93 The SAM CLI reads the application template to determine the API's routes and the functions that they invoke. The
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
94 `Events` property on each function's definition includes the route and method for each path.
0
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
95
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
96 ```yaml
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
97 Events:
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
98 HelloWorld:
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
99 Type: Api
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
100 Properties:
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
101 Path: /hello
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
102 Method: get
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
103 ```
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
104
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
105 ## Add a resource to your application
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
106 The application template uses AWS Serverless Application Model (AWS SAM) to define application resources. AWS SAM is an
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
107 extension of AWS CloudFormation with a simpler syntax for configuring common serverless application resources such as
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
108 functions, triggers, and APIs. For resources not included in
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
109 [the SAM specification](https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md),
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
110 you can use standard
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
111 [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html)
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
112 resource types.
0
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
113
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
114 ## Fetch, tail, and filter Lambda function logs
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
115
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
116 To simplify troubleshooting, SAM CLI has a command called `sam logs`. `sam logs` lets you fetch logs generated by your
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
117 deployed Lambda function from the command line. In addition to printing the logs on the terminal, this command has
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
118 several nifty features to help you quickly find the bug.
0
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
119
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
120 `NOTE`: This command works for all AWS Lambda functions; not just the ones you deploy using SAM.
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
121
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
122 ```bash
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
123 tweet-analysis$ sam logs -n HelloWorldFunction --stack-name tweet-analysis --tail
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
124 ```
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
125
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
126 You can find more information and examples about filtering Lambda function logs in the
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
127 [SAM CLI Documentation](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-logging.html).
0
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
128
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
129 ## Tests
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
130
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
131 Tests are defined in the `tests` folder in this project. Use PIP to install the test dependencies and run tests.
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
132
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
133 ```bash
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
134 tweet-analysis$ pip install -r tests/requirements.txt --user
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
135 # unit test
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
136 tweet-analysis$ python -m pytest tests/unit -v
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
137 # integration test, requiring deploying the stack first.
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
138 # Create the env variable AWS_SAM_STACK_NAME with the name of the stack we are testing
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
139 tweet-analysis$ AWS_SAM_STACK_NAME=<stack-name> python -m pytest tests/integration -v
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
140 ```
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
141
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
142 ## Cleanup
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
143
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
144 To delete the sample application that you created, use the AWS CLI. Assuming you used your project name for the stack
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
145 name, you can run the following:
0
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
146
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
147 ```bash
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
148 aws cloudformation delete-stack --stack-name tweet-analysis
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
149 ```
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
150
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
151 ## Resources
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
152
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
153 See the [AWS SAM developer guide](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html)
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
154 for an introduction to SAM specification, the SAM CLI, and serverless application concepts.
0
cea9500dca25 first commit
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
155
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
156 Next, you can use AWS Serverless Application Repository to deploy ready to use Apps that go beyond hello world samples
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
157 and learn how authors developed their applications:
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
158 [AWS Serverless Application Repository main page](https://aws.amazon.com/serverless/serverlessrepo/)