How to generate video with Amazon Nova Reel

Key takeaways:

  • Amazon Nova Reel uses AI to quickly generate dynamic videos from prompts.

  • Set up AWS account and request access to Nova Reel through Amazon Bedrock.

  • Install necessary libraries like boto3 for AWS interaction and json for data handling.

  • Generate videos by sending requests, and store them in an S3 bucket.

  • Access the generated videos from the S3 bucket once the process is complete.

Imagine you have a great concept for a video, but you don't have the time, skills, or resources to produce it from scratch. With Amazon Nova Reel, you can easily transform your ideas into dynamic videos in just a few steps. Whether you're looking to create engaging content for social media, marketing campaigns, or promotional materials, Nova Reel uses AI to bring your vision to life with impressive visuals and sound in a matter of seconds. In this Answer, we’ll explore how Amazon Nova Reel can generate high-quality videos quickly.

How to generate AI videos with AWS

Before we get started, ensure that you have an AWS account. We will use Amazon Bedrock, which provides access to Nova Reel for video generation.

Want to learn more about Amazon Bedrock? Check out our detailed cloud lab on Building Generative AI Workflows with Amazon Bedrock.

1. Set up an AWS account

  • Go to the AWS Management Console and sign in with your AWS account.

  • In the AWS Management Console, use the search bar to find Amazon Bedrock.

  • Ensure you are in the U.S. East (N. Virginia) (us-east-1) region. You can switch regions by selecting the region name at the top right of the console and choosing U.S. East (N. Virginia).

2. Request access to Amazon Nova Reel

Amazon Nova Reel is part of Amazon’s Bedrock offerings. Before you can start using it, you need to request access to it. This step involves navigating through the Bedrock console and enabling Nova Reel.

  • In the "Amazon Bedrock console," go to the "Model access" section in the left navigation pane under Bedrock configurations.

  • Choose "Enable specific models" under "What is Model access."

  • From the base models list, select "Nova Reel."

  • Select "Next", review your selection, and click "Submit."

  • After submitting, your access request will be processed. Refresh the "Base models" table to check the status. Once access is granted, the model's status will be listed as Access granted.

Once access is granted, you can use the Amazon Nova Reel model for video generation tasks through the console.

3. Install required libraries

To generate AI videos using Amazon Nova Reel, we need to install boto3 and json.

  • boto3: The AWS SDK for Python, which allows us to interact with AWS services like Amazon Bedrock.

pip install boto3
  • json: This is part of Python's standard library, so we don't need to install it separately.

4. Set up AWS credentials

You must provide your AWS credentials to access Amazon Bedrock's Nova Canvas model. Make sure you have:

  • AWS Access Key ID

  • AWS Secret Access Key

  • The appropriate AWS region (e.g., us-east-1)

5. Code to generate video using Nova Reel

Now that the AWS environment is set up, we can write a script to generate a video using the Nova Reel model. The following steps outline how to write the code to send a request for video generation based on a text prompt.

Step 1: Import libraries and set up credentials

The code begins by importing the necessary libraries for the task. We use the json library to work with JSON data and boto3, the AWS SDK for Python, to interact with AWS services.

import json # Library to handle JSON data
import boto3 # AWS SDK for Python to interact with AWS services

Step 2: Initialize boto3 client

Here, we create a boto3 client for the Amazon Bedrock Runtime service. This client will allow us to interact with the Nova Reel API to generate videos.

  • boto3.client() is used to initialize the client.

  • The required parameters include the service name (bedrock-runtime), AWS region, and authentication credentials (Access key ID and secret access Key).

cloud_runtime_client = boto3.client(
"bedrock-runtime", # Service name for Amazon Bedrock Runtime
region_name=region_name, # AWS region where the service is located
aws_access_key_id=aws_key_id, # AWS Access Key ID for authentication
aws_secret_access_key=secret_access_key # AWS Secret Access Key for authentication
)
Initializing boto3 client to interact with the Nova Reel API

Step 3: Define input data for video generation

This section defines the input data required to generate the video.

  • The taskType is set to TEXT_VIDEO, which means the model will convert text into a video.

  • textToVideoParams contains the actual text description the model will use to generate the video.

  • The videoGenerationConfig specifies additional settings such as the duration of the video (6 seconds), frames per second (24 fps), resolution (1280x720), and a seed value for reproducibility.

video_input_data = {
"taskType": "TEXT_VIDEO", # Specifies the task type: TEXT_VIDEO
"textToVideoParams": {
"text": "Closeup of a laptop screen displaying an interactive coding tutorial, and a coffee mug on the desk.." # Description of the video scene
},
"videoGenerationConfig": {
"durationSeconds": 6, # Duration of the video in seconds
"fps": 24, # Frames per second for the video
"dimension": "1280x720", # Resolution of the video (HD)
"seed": 0, # Seed for reproducibility (generates the same output for the same input)
},
}
Defining input data required to generate the video

Step 4: Create an S3 bucket (if not already created)

The generated video needs to be stored in an S3 bucket. If you don’t have an S3 bucket set up, follow the steps below to create one using either the AWS Management Console or the AWS CLI.

Step 5: Call the API to generate video

In this step, we make an asynchronous call to the Nova Reel model to start the video generation process.

  • The start_async_invoke() method sends a request to the AI model, specifying the modelId (amazon.nova-reel-v1:0) and the input data (video_input_data) we defined earlier.

  • The outputDataConfig specifies where to store the generated video. Here, it is set to an S3 bucket (s3://videobyreel).

try:
video_response = cloud_runtime_client.start_async_invoke(
modelId="amazon.nova-reel-v1:0", # Model ID for Amazon Nova Reel to generate video
modelInput=video_input_data, # Input data for the model (defined earlier)
outputDataConfig={ # Configuration for the output data (video file)
"s3OutputDataConfig": {
"s3Uri": "s3://videobyreel" # URI of the S3 bucket where the output video will be stored
}
}
)
print("Response:")
print(json.dumps(video_response, indent=2, default=str))
except Exception as error:
error_message = error.response["Error"]["Message"]
print(f"Error: {error_message}")
Calling Nova Reel model to the video generation process

Step 6: Print the response

Once the request is successfully made, the response (which contains metadata about the video generation process) is printed to the console.

  • json.dumps() is used to format the response as a nicely indented JSON string for readability.

Step 7: Running the code

Once the script is ready, run it to start the video generation process. When executed successfully, the following happens:

  • Video generation: The Nova Reel model processes the text prompt and generates a video.

  • Saving the video: The generated video will be stored in your specified S3 bucket (e.g., s3://AddYourBucketName).

  • Viewing the response: The script will output the response from the API, which includes details about the video generation request.

The process of generating a video with Amazon Nova Reel is asynchronous and usually takes around 3 minutes for a 6-second video.

import json
import boto3
cloud_runtime_client = boto3.client(
"bedrock-runtime",
region_name=region_name,
aws_access_key_id=aws_key_id,
aws_secret_access_key=secret_access_key
)
video_input_data = {
"taskType": "TEXT_VIDEO",
"textToVideoParams": {
"text": "Closeup of a laptop screen displaying an interactive Python coding tutorial, and a coffee mug on the desk.."
},
"videoGenerationConfig": {
"durationSeconds": 6,
"fps": 24,
"dimension": "1280x720",
"seed": 0,
},
}
try:
video_response = cloud_runtime_client.start_async_invoke(
modelId="amazon.nova-reel-v1:0",
modelInput=video_input_data,
outputDataConfig={
"s3OutputDataConfig": {
"s3Uri": "s3://videobyreel"
}
}
)
print("Response:")
print(json.dumps(video_response, indent=2, default=str))
except Exception as error:
error_message = error.response["Error"]["Message"]
print(f"Error: {error_message}")

Step 8: Access video from the S3 bucket

  • In the search bar at the top of the AWS Console, type "S3" and click on "S3" to open the Amazon S3 Console. Once you're in the S3 Console, select "General purpose buckets" under the "Amazon S3" category to open the list of buckets.

  • Find and click the bucket where your file is stored (e.g., videobyreel).

  • Once inside the bucket, Amazon Nova creates a folder for each invocation ID. This folder contains the manifest.json and output.mp4 files generated by the video creation request.

Limitations of the Amazon Reel model

  • Video length restriction: Can generate videos only up to 6 seconds long.

  • Prompt limitations: Text prompts are restricted to 512 characters.

  • Image input constraints: Accepts only PNG or JPEG images with a fixed resolution of 1280x720.

  • Non-deterministic outputs: May occasionally produce unintended or undesirable results.

  • Safety filters: Cannot be disabled or modified; may block certain content.

  • Limited prior knowledge: Lacks an explicit 3D understanding, real-world object distributions, or deep historical/contextual awareness.

  • Limited specification control: Cannot fully specify all details of a scene; generates elements based on inference.

  • Stylization constraints: Primarily produces realistic styles and may crop images unpredictably.

  • Human generation issues: May create anatomically incorrect depictions of human features.

  • Scene text generation: Cannot reliably generate coherent text within video outputs.

  • Language support: Only supports English text prompts with limited handling of non-English text.

  • Lack of audio and 3D support: Cannot generate audio or 3D content.

Conclusion

Amazon Nova Reel simplifies video generation by leveraging AI to create high-quality videos from text prompts, making it ideal for users who need to quickly produce engaging content. By following the outlined steps, you can easily set up your AWS environment, request access to Nova Reel, and generate videos efficiently. With the integration of Amazon Bedrock and S3, your videos are stored securely and can be accessed anytime.

Frequently asked questions

Haven’t found what you were looking for? Contact Us


What is the recommended approach for controlling camera movement in Amazon Nova Reels?

To achieve optimal results when controlling camera movement in Amazon Nova Reels, it’s recommended to include descriptions of the camera movement either at the beginning or the end of your prompt. This approach ensures better influence on how the camera behaves in the generated video.


What is the difference between Amazon Nova Lite and Nova Pro?

Amazon Nova Lite is a low-cost, fast multimodal model ideal for high-volume, interactive applications, prioritizing speed and affordability. In contrast, Amazon Nova Pro offers superior accuracy, speed, and versatility for complex tasks like video summarization, Q&A, and AI-driven workflows, with industry-leading performance in multiple benchmarks.


What is Amazon Nova Pro?

Amazon Nova Pro is a powerful multimodal model that excels in accuracy, speed, and cost efficiency for a wide range of tasks. It is ideal for complex applications like video summarization, Q&A, software development, and AI agents handling multistep workflows.


Is Amazon Nova free?

No, Amazon Nova is a paid service. Pricing depends on usage and selected features.


How to check the status of a running job before retrieving the final video?

To check the status of a running video generation job with Amazon Nova Reel before retrieving the final video, you can use the Amazon Bedrock Runtime API. Since Nova Reel operates asynchronously, you need to monitor the job’s progress. Here’s how:

  • Get the invocation ARN: When you start the video generation job via invoke_model or start_async_invoke, you receive an invocation ARN (e.g., arn:aws:bedrock:us-east-1:account-id:async-invoke/invocation-id).
  • Check status with get_async_invoke: Use the Bedrock Runtime client to query the job status. For example, in Python with Boto3:
import boto3
bedrock_runtime = boto3.client("bedrock-runtime", region_name="us-east-1")
response = bedrock_runtime.get_async_invoke(invocationArn="your-invocation-arn")
status = response["status"]
print(f"Job Status: {status}")

The status will be “InProgress”, “Completed”, or “Failed”.


Free Resources

Copyright ©2025 Educative, Inc. All rights reserved