At re:Invent 2024, we announced that AWS Marketplace now offers EC2 Image Builder components from independent software vendors (ISVs). This feature expands the catalog of components available in EC2 Image Builder to include components from ISVs provided through AWS Marketplace. Amazon Web Services (AWS) customers can now seamlessly find, subscribe to, and package software components available in AWS Marketplace to create golden images through Image Builder.

As a seller registered in AWS Marketplace, this feature presents an opportunity for you to reach more customers by making your software components available for use in Image Builder. By offering your components in AWS Marketplace, you can make it easier for customers to incorporate your products into their automated build pipelines, potentially increasing the utilization of your software.

Prerequisites

To perform the solution, you need to have the following prerequisites in place:

Solution overview

In this post, we first will show you how to create and test a component in Image Builder. Then we show you how to publish the component in AWS Marketplace to make it available in Image Builder for customers to purchase and use in their golden images. Finally, we show you how to change the visibility of your listing to mark it as public, making it visible to customers in the Image Builder console. AWS Marketplace is a curated digital catalog that makes it easy to find, try, buy, deploy, and manage software, data products, and services from AWS Partners. Image Builder is a fully managed AWS service that makes it easier to automate the creation, management, and distribution of customized, secure, and up-to-date AMIs that are preinstalled and preconfigured with software and settings to meet specific IT standards.

Solution walkthrough: Boost your software’s reach with AWS Marketplace and EC2 Image Builder integration

Create a component in Image Builder

The first step is to create a component in Image Builder. A component defines the sequence of steps required to either customize an instance prior to image creation (a build component) or to test an instance that was launched from the created image (a test component). Here, we create a build component to publish in AWS Marketplace. A component is created from a declarative, plain-text YAML document that describes the runtime configuration for building and validating or testing an instance.

To create an Image Builder component, follow these steps:

  1. In the Image Builder console, choose Create component.

Figure 1: Choose Create component in the Image Builder console

  1. Enter the component details, including the operating system (OS) the component would work on, the compatible OS versions, the component name, component version, and description. For the name, add your company’s name and the name of the software. For example: cribl-base-Amazon-Linux-2023
  2. In the description field, add any dependencies your component requires so that the end customer is aware.
  3. Create the component script using YAML format. If your component requires access to any external binaries, remember to save those binaries in a public S3 bucket for AWS Marketplace to access. AWS Marketplace will read those binaries and then save them in an internal AWS Marketplace S3 bucket for immutability.
  4. Choose Create component.

Figure 2: Creating a component using a YAML script

  1. After you’ve created the component, capture the Amazon Resource Name (ARN) that was generated. You’ll use the ARN to publish your component in AWS Marketplace.

Figure 3: ARN for the component created

You’ve now created a new component in Image Builder. Test the component by adding the component into a recipe through Image Builder and then using the recipe in a pipeline to build an AMI. Make sure to test your components on all the operating systems your component is compatible with before publishing in AWS Marketplace. After you have tested the functionality of your component, proceed to publishing your component in AWS Marketplace.

Publish your component in AWS Marketplace

At launch, publishing components in AWS Marketplace is available in AWS Marketplace APIs only. We assume that you already have a server, an AWS Machine Image (AMI) product listing created in AWS Marketplace. If you haven’t created one yet, refer to Create a product in the AWS Marketplace API Reference guide to create a server or AMI listing and update the pricing and product description.

To publish your component in AWS Marketplace, run a start-change-set command using the AWS SDK. The change-set command should include the server product listing you already created, the Image Builder component ARN you created through Image Builder, and the access role ARN. The access role ARN will allow AWS Marketplace to gain access to your component and the binaries you saved in your S3 bucket. For simplicity, use the same component name and version you selected in Image Builder.

aws marketplace-catalog start-change-set \
--catalog AWSMarketplace 
--change-set [{
    "ChangeType": "AddDeliveryOptions",
      "Entity": {
        "Identifier": "example1-abcd-1234-5ef6-7890abcdef12@1",
        "Type": "AmiProduct@1.0"
      },
      "DetailsDocument": {
        "Version": {
          "VersionTitle": "1.2.3", --This is the version you had selected on EC2 Image Builder Console
          "ReleaseNotes": "My new Release notes"
        },
        "DeliveryOptions": [
          {
            "DeliveryOptionTitle": "IB Delivery option title",
            "Details": {
              "Ec2ImageBuilderComponentDeliveryOptionDetails": {
                "ComponentArn": "arn:aws:imagebuilder:us-east-1:982397175909:component/cribl-base- Amazon-Linux-2023/2019.12.02/1",
                "AccessRoleArn": "arn:aws:iam::12345678901:role/AwsMarketplaceIBIngestion",
                "UsageInstructions": "Product usage Instructions available at https://docs.ibcomponent.cribl.com"
                }
            }
          }
        ],
        "Intent": "APPLY"
      }
    }
  ]

A change set is created for your request. The response to this request gives you the ChangeSetId and ChangeSetArn for the change set and looks like the following:

{
   "ChangeSetId": "example123456789012abcdef",
   "ChangeSetArn": "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/ChangeSet/example123456789012abcdef"
}

Change the visibility of the listing to public

Finally, after you’ve created a server listing in AWS Marketplace and published the component delivery option to that listing, you can now mark the product as public to make it available for customers in the Image Builder console. Run the following start-change-set command using the AWS SDK:

aws marketplace-catalog start-change-set \
--catalog AWSMarketplace 
--region us-east-1
--change-set [
    {
        "ChangeType": "UpdateVisibility",
        "Entity": {
            "Type": "AmiProduct@1.0",
            "Identifier": "PRODUCT_ID"
        },
        "DetailsDocument": {
            "TargetVisibility": "Public"
        }
    }

Conclusion

In this post, we walked you through the process of creating and publishing your component in Image Builder through AWS Marketplace. This new feature offers an opportunity to expand your product’s visibility and adoption by making it available where AWS customers are actively creating their golden images. By offering your software components in Image Builder, you’re positioning your products to be easily discovered and integrated into customers’ workflows. This can potentially lead to increased utilization and a broader customer base. If you have questions about this new feature or the publishing process, reach out to aws-mp-ec2-ib@amazon.com. Or reach out to the AWS Marketplace Catalog Operations (MCO) team via the contact us webform found in your AWS Marketplace seller account.

About the authors

Omar Chehab

Omar Chehab is a Senior Product Manager for AWS Marketplace. Omar leads the integrations between AWS Marketplace and AWS services including EC2 Image Builder, Amazon Elastic Kubernetes Service (Amazon EKS), and others. Omar is focused on growing the partner business flowing through AWS Marketplace and simplifying the procurement and deployment experience for customers. When he is not building new features for customers, Omar spends his time with his wife, two kids, his reef tank, and his cat.

Wendy Sikirat Jabitta

Wendy Sikirat Jabitta is a Senior Technical Business Development Manager at Amazon Web Services (AWS). She works with AWS technology partners to develop joint solutions, drive go-to-market strategies, and accelerate customer adoption. Outside of work, Wendy is passionate about wellness and enjoys competing in fitness challenges.

Source: View source