AWS DevOps Engineer - Recommended AWS Service for Image Analysis Coordination

Recommended AWS Service for Image Analysis Coordination

Prev Question Next Question

Question

You just joined an IT company as an AWS DevOps engineer.

The company is creating an application and needs you to decide which AWS services to use.

For this application, customers can upload new photos through a mobile App to an S3 bucket.

When there is a new object uploaded, a Lambda function is triggered.

Later on, there are some steps to process the object.

For example, a Lambda function invokes the Rekognition API, and the Amazon Rekognition service is called.

Another Lambda function extracts metadata including size and format.

In the end, the relevant data is saved into a DynamoDB.

Which AWS service would you use to coordinate the tasks for the image analysis?

Answers

Explanations

Click on the arrows to vote for the correct answer

A. B. C. D.

Correct Answer - A.

In this question, there are several steps that need an AWS service to coordinate.

The best tool to recommend is AWS Step Functions.

Check its introductions in.

https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html.

Option A is CORRECT: Because AWS Step Functions is ideal for managing multiple AWS services into a serverless workflow that can translate the workflow into a state machine.

When the question mentions that several steps are needed, the first service to be considered is AWS Step Functions.

Option B is incorrect: Because SQS is not the ideal tool to manage the steps, especially when there are a large number of steps.

Option C is incorrect: Because AWS Batch runs batch computing workloads, which is not a tool used in this scenario.

Option D is incorrect: Because an AWS managed service should be considered first.

And Jenkins pipeline is a tool used for CI/CD and is inappropriate to manage different steps or a state machine.

For coordinating the tasks in the image analysis workflow, the most suitable AWS service would be AWS Step Functions.

AWS Step Functions is a fully-managed service that makes it easy to coordinate the components of distributed applications and microservices using visual workflows. Step Functions can help manage the flow of data between different AWS services and applications, and it can also be used to define serverless workflows.

In this particular case, the workflow involves a number of AWS services including S3, Lambda, Rekognition, and DynamoDB. When a new object is uploaded to the S3 bucket, a Lambda function is triggered to initiate the workflow. The workflow includes several steps for processing the object, such as invoking the Rekognition API and extracting metadata using another Lambda function. Finally, the relevant data is saved into a DynamoDB.

Using AWS Step Functions, the steps of this workflow can be modeled as a state machine using JSON or YAML, and the state machine can be visualized and managed using the AWS Step Functions console. Each step in the workflow can trigger a Lambda function, and the state machine can also handle branching and error handling.

In contrast, using a CloudFormation template to create several SQS queues and Lambda functions to manage the workflow may work but can be more complex to maintain and manage. AWS Batch Jobs can be useful for running large-scale batch processing jobs, but it may not be the best fit for coordinating a workflow with several different AWS services involved. Using Jenkins to manage the workflow can also be done but would require additional setup and management.

Therefore, the best option is to use AWS Step Functions to manage the tasks and workflow for this application.