Python Lab Challenge Contest

Lab Steps

lock
Python Lab Challenge Contest
Need help? Contact our support team

Here you can find the instructions for this specific Lab Step.

If you are ready for a real environment experience please start the Lab. Keep in mind that you'll need to start from the first step.

Your Mission

You are a new Python developer at a small SaaS startup built on AWS. During the interview process your coworkers assured you that AWS expertise is not required. Your ability to work with Python and Python libraries is enough to perform in the role.

One of the company's microservices is deployed as a serverless function on AWS Lambda. The function is triggered according to a schedule managed by an Amazon Eventbridge rule. Your colleague has asked you to update the schedule. The new schedule, which is a cron expression, is stored in a file, or object, in an Amazon S3 bucket. And one more thing, your colleague gave you the name of the object encoded as a cipher text.

Company policy requires all changes be performed using Python code. Partial code has been provided to you. To complete this challenge you need to complete three functions that are described later. Each function includes documentation describing the expected behavior of the code.

The following instructions prepare you for working with the embedded IDE that contains the code files that you must complete.

 

Instructions

1. The in-browser development environment is accessible by clicking the Validation Steps tab. 

It is starting up while you see Setup in progress. It takes approximately 1 minute to start up at which point you can begin writing code in the IDE.

You may detach the IDE to it's own browser tab by clicking the button shown below that is in the upper-right corner of the IDE:

alt

You may also maximize the IDE within the same tab by clicking alt in the upper-right corner of this lab. 

 

2. You may also, optionally, log in to AWS with an account that has limited read-only access by clicking Open Environment in the upper-right corner at the top of this lab and entering the user name and password provided in the Credentials drop-down menu:

alt

 alt

Note: The Open Environment button is not visible if you maximize the IDE.

You do not need to log in to AWS to complete the challenge tasks.

 

3. Once the IDE setup is complete, click the left PROJECT bar to reveal the provided code files:

alt

A summary of each file is as follows:

  • aws_credential_helper.py: Helper function for authenticating AWS Python clients (clients are part of the boto3 library).
  • challenge.py: Contains the high-level flow of the challenge. You do not need to edit this file, although you may want to comment out lines of code while developing the functions you need to complete. 
  • decipher.py: Contains the decipher function you need to implement. The function's doc string explains the desired behavior you must implement to pass the first check.
  • eventbridge_rules.py: Contains the eventbridge_rules class, which includes an update_rule_schedule member function that you must complete for the third check to pass. You need to use the provided Eventbridge client (_events_client). The documentation for the client is provided in the References section below.
  • s3_objects.py: Contains the s3_objects class, which includes a get_content member function that you must complete for the second check to pass. You need to use the provided S3 client (_s3_client). The documentation for the client is provided in the References section below.

When you have completed the three functions challenge.py will be able to run from start to finish without any errors. You can run it by entering python challenge.py in a terminal (Open a terminal by clicking Terminal > New Terminal in the IDE).

 

4. Wait until the lab AWS code credentials are available by confirming the line below shows an access key ID beginning with AKIA (before the credentials are ready it will read waiting_for_key):

It takes two minutes from the time you start the lab for the key to appear. You can start on the decipher function implementation while waiting. Just be sure to perform instruction 5 before working on the S3 or Eventbridge code.

 

5. In the IDE, open a new terminal (TerminalNew Terminal) and enter the following commands to substitute placeholders with the AWS credentials in the provided code:

Copy code
sed -i 's/AWS_CLIENT_ID//' aws_credential_helper.py
sed -i 's%AWS_CLIENT_SECRET%%' aws_credential_helper.py

The above commands allow the Python AWS clients to authenticate requests you will be sending.

 

6. Click the Go to Validation Steps button below to perform the tasks and complete the challenge. When you are ready, click alt to check your solution.

Hints:

  • The # Code comment markers highlight where you need to write your code.
  • You should not edit code before the # Do not change the code comments or change the source file names. Doing so may cause the checks to malfunction.
  • The code files include test cases that you can run from the terminal. For example, you can test your decipher code by entering python decipher.py in the terminal. 

 

Reference Material

The following documentation pages describe the methods available for each AWS client library you will need to use:

Keep in mind that the provided code already initializes an authenticated client as a class member variable for you to use.

Validation checks
3Checks
Completed decipher Implementation

Check the implementation of the decipher function in decipher.py is complete

Python
Completed s3_objects.get_content Implementation

Check the implementation of the s3_objects.get_content function in s3_objects.py is complete

PythonAmazon S3
Completed eventbridge_rules.update_rule_schedule Implementation and updated the rule schedule

Check there is one and only one Eventbridge rule with the correct schedule and the Name, State, Description, and EventBusName fields must remain the same. Be sure to run challenge.py (enter python challenge.py in the terminal) to update the rule schedule.

PythonAmazon EventBridge