[awslabs](https://gitlab.com/binxio/awslabs) is a program that challenges your AWS knowledge.
## Installing
The simplest method is to install awslabs with `pip3`:
pip3 install .
## Development installation
To start for development type the following:
```bash
make init
make develop
```
## Run awslabs for development
Type the following:
```bash
pipenv run python -m awslabs list
```
To run a track you are working on type:
```bash
pipenv run python -m awslabs <your-track> start
```
## Package awslabs
To package awslabs type:
```bash
make dist
```
## TODO
Refine the following ideas.
Errors:
* Ensure it can only be used in python3
Refactor/fix:
* The deep if/else/try-statements makes it a horror
* Remove the meta files/folders (__init__.py / __pycachec__ etc)
* Consider replacing mytrack.py to yaml
* Make region independent
* Make the cloudformation input json compatible, and optionally a different file with a parameter in click
* Make it easy to save progress details in
Features:
* Add tests (cloudformation already has the "perfect" cloudformation scripts)
* Users can first read the track (awslabs trackname / awslabs trackname info)
* Group tracks in "basic" and "advanced" (to be able to do the advanced, you need to have basic knowledge)
* Write start time to config for report in the feedback the progress
* Make awslabs track stop (or abort) such that it will warn if resources are still running
* Add a short description to the tracks to improve track selection
```
$ awslabs
Tracks available:
Basic:
ec2 Deploy ec2 instance with init
autoscaling Deploy an autoscaling group
s3 Use the S3 service
ml-api Use the machine learning api's
Advanced:
kinesis-athena Kinesis, Firehose, S3, Athena
ecs ECS Cluster with Service Discovery
wordpress Learn ELB, Autoscaling, RDS, Route53
```
## Create a simple challenge
To create a challenge, do the following:
- Create a directory in tracks called eg. `mytrack`,
- create a `mytrack.py` file in `mytrack`
- create a directory `challenges` in `mytrack`
- create multiple challenge files starting from `01.py` and so on.
## Tracks
Tracks are called `mytrack.py` and must contain at a minimum the following:
```python
from awslabs.track import Track
class MyTrack(Track):
"""
A track description, can be multiline and contain links etc.
"""
name = "TrackName"
description = __doc__
level = "basic"
short_description = "a short description"
```
## Challenges
Challenges are named `01.py` and so on, and must contain at a minimum the following:
```python
from awslabs.challenge import Challenge
class MyChallenge(Challenge):
"""
Put your challenge
"""
title = "My Challenge"
description = __doc__
def start(self) -> None:
self.instructions()
def validate(self) -> None:
self.save('key', 'a-value-to-save') # save a value to the session
self.get('key') # load a value from the session
self.check() # check the challenge
self.success('') # mark the challenge as succesful
self.fail('') # mark the challenge as failure
```
Metadata
Release files for awslabs 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| awslabs-0.1.1-py3-none-any.whl | Python 3 | none | any | Details for awslabs-0.1.1-py3-none-any.whl |
Release files / awslabs-0.1.1-py3-none-any.whl
| Download URL | awslabs-0.1.1-py3-none-any.whl |
|---|---|
| Size | 39.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
565071ade4538b3026b68df6f5bc805436510d58e278e2c4c10bf2a6644b1916
|
|
BLAKE2b-256 checksum How to use checksums |
905263eef3e4f91c830d54e105a9a01ae3a95c4ad9793d3f397815ce1592ef7a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.30.0 CPython/3.7.0
|
Security for awslabs 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.