Skip to main content
# awslabs
[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)

Table of built distributions (wheels) for awslabs 0.1.1
File Interpreter ABI Platform Actions
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page