# Deployment from Shared AMI

Before publishing each version in the AWS Marketplace, Nuvens must create an AMI (Amazon Machine Image) in a secure environment. This AMI can be shared with other AWS accounts and regions, allowing it to be consumed through various deployment mechanisms, such as **Terraform**, **Git**, **CloudFormation**, or manual processes.

When deploying Nuvens custom AMI, several AWS infrastructure requirements must be met. These are typically automated through the CloudFormation template deployed from the AWS Marketplace. These requirements include:

1. [Security Group:](https://install.nuvens.cloud/overview/alternate-deployment-options/deployment-from-shared-ami/security-group) for the EC2 instance(s), with inbound and outbound rules.
2. [IAM Requirements: Custom Policies](https://install.nuvens.cloud/overview/alternate-deployment-options/deployment-from-shared-ami/iam-requirements-custom-policies).
3. [IAM Requirements: Role and EC2 instance profile](https://install.nuvens.cloud/overview/alternate-deployment-options/deployment-from-shared-ami/iam-requirements-role-and-ec2-instance-profile).
4. [Shared AMI](https://install.nuvens.cloud/overview/alternate-deployment-options/deployment-from-shared-ami/shared-ami-amazon-machine-image) (Amazon Machine Image): it must be present in your AWS Account and Region prior to the deployment.

For a real-world example of how to deploy an AMI via **Terraform**, please check this repository below for guidance and best practices:

{% embed url="<https://gitlab.com/nuvens-public/wsm-from-ami>" %}

{% hint style="info" %}
For assistance in obtaining the AMI in your AWS account, please contact **<support@workspacesmanager.com>** for further guidance and support.
{% endhint %}
