[ aws . imagebuilder ]



Creates a new image recipe. Image recipes define how images are configured, tested, and assessed.

See also: AWS API Documentation

See ‘aws help’ for descriptions of global parameters.


--name <value>
[--description <value>]
--semantic-version <value>
--components <value>
--parent-image <value>
[--block-device-mappings <value>]
[--tags <value>]
[--working-directory <value>]
[--client-token <value>]
[--cli-input-json | --cli-input-yaml]
[--generate-cli-skeleton <value>]
[--cli-auto-prompt <value>]


--name (string)

The name of the image recipe.

--description (string)

The description of the image recipe.

--semantic-version (string)

The semantic version of the image recipe.

--components (list)

The components of the image recipe.


Configuration details of the component.

componentArn -> (string)

The Amazon Resource Name (ARN) of the component.

Shorthand Syntax:

componentArn=string ...

JSON Syntax:

    "componentArn": "string"

--parent-image (string)

The parent image of the image recipe. The value of the string can be the ARN of the parent image or an AMI ID. The format for the ARN follows this example: arn:aws:imagebuilder:us-west-2:aws:image/windows-server-2016-english-full-base-x86/2019.x.x . The ARN ends with /20xx.x.x , which communicates to EC2 Image Builder that you want to use the latest AMI created in 20xx (year). You can provide the specific version that you want to use, or you can use a wildcard in all of the fields. If you enter an AMI ID for the string value, you must have access to the AMI, and the AMI must be in the same Region in which you are using Image Builder.

--block-device-mappings (list)

The block device mappings of the image recipe.


Defines block device mappings for the instance used to configure your image.

deviceName -> (string)

The device to which these mappings apply.

ebs -> (structure)

Use to manage Amazon EBS-specific configuration for this mapping.

encrypted -> (boolean)

Use to configure device encryption.

deleteOnTermination -> (boolean)

Use to configure delete on termination of the associated device.

iops -> (integer)

Use to configure device IOPS.

kmsKeyId -> (string)

Use to configure the KMS key to use when encrypting the device.

snapshotId -> (string)

The snapshot that defines the device contents.

volumeSize -> (integer)

Use to override the device’s volume size.

volumeType -> (string)

Use to override the device’s volume type.

virtualName -> (string)

Use to manage instance ephemeral devices.

noDevice -> (string)

Use to remove a mapping from the parent image.

Shorthand Syntax:

deviceName=string,ebs={encrypted=boolean,deleteOnTermination=boolean,iops=integer,kmsKeyId=string,snapshotId=string,volumeSize=integer,volumeType=string},virtualName=string,noDevice=string ...

JSON Syntax:

    "deviceName": "string",
    "ebs": {
      "encrypted": true|false,
      "deleteOnTermination": true|false,
      "iops": integer,
      "kmsKeyId": "string",
      "snapshotId": "string",
      "volumeSize": integer,
      "volumeType": "standard"|"io1"|"gp2"|"sc1"|"st1"
    "virtualName": "string",
    "noDevice": "string"

--tags (map)

The tags of the image recipe.

key -> (string)

value -> (string)

Shorthand Syntax:


JSON Syntax:

{"string": "string"

--working-directory (string)

The working directory to be used during build and test workflows.

--client-token (string)

The idempotency token used to make this request idempotent.

--cli-input-json | --cli-input-yaml (string) Reads arguments from the JSON string provided. The JSON string follows the format provided by --generate-cli-skeleton. If other arguments are provided on the command line, those values will override the JSON-provided values. It is not possible to pass arbitrary binary values using a JSON-provided value as the string will be taken literally. This may not be specified along with --cli-input-yaml.

--generate-cli-skeleton (string) Prints a JSON skeleton to standard output without sending an API request. If provided with no value or the value input, prints a sample input JSON that can be used as an argument for --cli-input-json. Similarly, if provided yaml-input it will print a sample input YAML that can be used with --cli-input-yaml. If provided with the value output, it validates the command inputs and returns a sample output JSON for that command.

--cli-auto-prompt (boolean) Automatically prompt for CLI input parameters.

See ‘aws help’ for descriptions of global parameters.


To create a recipe

The following create-image-recipe example creates an image recipe using a JSON file. Components are installed in the order in which they are specified.

aws imagebuilder create-image-recipe \
    --cli-input-json file://create-image-recipe.json

Contents of create-image-recipe.json:

    "name": "MyBasicRecipe",
    "description": "This example image recipe creates a Windows 2016 image.",
    "semanticVersion": "2019.12.03",
            "componentArn": "arn:aws:imagebuilder:us-west-2:123456789012:component/myexamplecomponent/2019.12.02/1"
            "componentArn": "arn:aws:imagebuilder:us-west-2:123456789012:component/myimportedcomponent/1.0.0/1"
    "parentImage": "arn:aws:imagebuilder:us-west-2:aws:image/windows-server-2016-english-full-base-x86/2019.x.x"


    "requestId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
    "clientToken": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
    "imageRecipeArn": "arn:aws:imagebuilder:us-west-2:123456789012:image-recipe/mybasicrecipe/2019.12.03"

For more information, see Setting Up and Managing an EC2 Image Builder Image Pipeline Using the AWS CLI in the EC2 Image Builder Users Guide.


requestId -> (string)

The request ID that uniquely identifies this request.

clientToken -> (string)

The idempotency token used to make this request idempotent.

imageRecipeArn -> (string)

The Amazon Resource Name (ARN) of the image recipe that was created by this request.