<a id="cli-aws-ebs-start-snapshot"></a>

# start-snapshot

## Description

Creates a new Amazon EBS snapshot. The new snapshot enters the `pending` state after the request completes.

After creating the snapshot, use [PutSnapshotBlock](https://docs.aws.amazon.com/ebs/latest/APIReference/API_PutSnapshotBlock.html) to write blocks of data to the snapshot.

#### NOTE
You should always retry requests that receive server (`5xx` ) error responses, and `ThrottlingException` and `RequestThrottledException` client error responses. For more information see [Error retries](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/error-retries.html) in the *Amazon Elastic Compute Cloud User Guide* .

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/ebs-2019-11-02/StartSnapshot)

## Synopsis

```
  start-snapshot
--volume-size <value>
[--parent-snapshot-id <value>]
[--tags <value>]
[--description <value>]
[--client-token <value>]
[--encrypted | --no-encrypted]
[--kms-key-arn <value>]
[--timeout <value>]
[--cli-input-json | --cli-input-yaml]
[--generate-cli-skeleton <value>]
[--debug]
[--endpoint-url <value>]
[--no-verify-ssl]
[--no-paginate]
[--output <value>]
[--query <value>]
[--profile <value>]
[--region <value>]
[--version <value>]
[--color <value>]
[--no-sign-request]
[--ca-bundle <value>]
[--cli-read-timeout <value>]
[--cli-connect-timeout <value>]
[--cli-binary-format <value>]
[--no-cli-pager]
[--cli-auto-prompt]
[--no-cli-auto-prompt]
[--cli-error-format <value>]
```

## Options

`--volume-size` (long) [required]

> The size of the volume, in GiB. The maximum size is `65536` GiB (64 TiB).

> Constraints:

> * min: `1`

`--parent-snapshot-id` (string)

> The ID of the parent snapshot. If there is no parent snapshot, or if you are creating the first snapshot for an on-premises volume, omit this parameter.

> You can’t specify **ParentSnapshotId** and **Encrypted** in the same request. If you specify both parameters, the request fails with `ValidationException` .

> The encryption status of the snapshot depends on the values that you specify for **Encrypted** , **KmsKeyArn** , and **ParentSnapshotId** , and whether your Amazon Web Services account is enabled for [encryption by default](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-by-default) . For more information, see [Using encryption](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebsapis-using-encryption.html) in the *Amazon Elastic Compute Cloud User Guide* .

> #### WARNING
> If you specify an encrypted parent snapshot, you must have permission to use the KMS key that was used to encrypt the parent snapshot. For more information, see [Permissions to use Key Management Service keys](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebsapi-permissions.html#ebsapi-kms-permissions) in the *Amazon Elastic Compute Cloud User Guide* .

> Constraints:

> * min: `1`
> * max: `64`
> * pattern: `^snap-[0-9a-f]+$`

`--tags` (list)

> The tags to apply to the snapshot.

> (structure)

> > Describes a tag.

> > Key -> (string)

> > > The key of the tag.

> > > Constraints:

> > > * max: `127`
> > > * pattern: `^[\S\s]+$`

> > Value -> (string)

> > > The value of the tag.

> > > Constraints:

> > > * max: `255`
> > > * pattern: `^[\S\s]*$`

Shorthand Syntax:

```
Key=string,Value=string ...
```

JSON Syntax:

```json
[
  {
    "Key": "string",
    "Value": "string"
  }
  ...
]
```

`--description` (string)

> A description for the snapshot.

> Constraints:

> * max: `255`
> * pattern: `^[\S\s]+$`

`--client-token` (string)

> A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original request completes successfully. The subsequent retries with the same client token return the result from the original successful request and they have no additional effect.

> If you do not specify a client token, one is automatically generated by the Amazon Web Services SDK.

> For more information, see [Idempotency for StartSnapshot API](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-direct-api-idempotency.html) in the *Amazon Elastic Compute Cloud User Guide* .

> Constraints:

> * max: `255`
> * pattern: `^[\S]+$`

`--encrypted` | `--no-encrypted` (boolean)

> Indicates whether to encrypt the snapshot.

> You can’t specify **Encrypted** and **ParentSnapshotId** in the same request. If you specify both parameters, the request fails with `ValidationException` .

> The encryption status of the snapshot depends on the values that you specify for **Encrypted** , **KmsKeyArn** , and **ParentSnapshotId** , and whether your Amazon Web Services account is enabled for [encryption by default](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-by-default) . For more information, see [Using encryption](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebsapis-using-encryption.html) in the *Amazon Elastic Compute Cloud User Guide* .

> #### WARNING
> To create an encrypted snapshot, you must have permission to use the KMS key. For more information, see [Permissions to use Key Management Service keys](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebsapi-permissions.html#ebsapi-kms-permissions) in the *Amazon Elastic Compute Cloud User Guide* .

`--kms-key-arn` (string)

> The Amazon Resource Name (ARN) of the Key Management Service (KMS) key to be used to encrypt the snapshot.

> The encryption status of the snapshot depends on the values that you specify for **Encrypted** , **KmsKeyArn** , and **ParentSnapshotId** , and whether your Amazon Web Services account is enabled for [encryption by default](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-by-default) . For more information, see [Using encryption](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebsapis-using-encryption.html) in the *Amazon Elastic Compute Cloud User Guide* .

> #### WARNING
> To create an encrypted snapshot, you must have permission to use the KMS key. For more information, see [Permissions to use Key Management Service keys](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebsapi-permissions.html#ebsapi-kms-permissions) in the *Amazon Elastic Compute Cloud User Guide* .

> Constraints:

> * min: `1`
> * max: `2048`
> * pattern: `arn:aws[a-z\-]*:kms:.*:[0-9]{12}:key/.*`

`--timeout` (integer)

> The amount of time (in minutes) after which the snapshot is automatically cancelled if:

> * No blocks are written to the snapshot.
> * The snapshot is not completed after writing the last block of data.

> If no value is specified, the timeout defaults to `60` minutes.

> Constraints:

> * min: `10`
> * max: `4320`

`--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. The generated JSON skeleton is not stable between versions of the AWS CLI and there are no backwards compatibility guarantees in the JSON skeleton generated.

## Global Options

`--debug` (boolean)

Turn on debug logging.

`--endpoint-url` (string)

Override command’s default URL with the given URL.

`--no-verify-ssl` (boolean)

By default, the AWS CLI uses SSL when communicating with AWS services. For each SSL connection, the AWS CLI will verify SSL certificates. This option overrides the default behavior of verifying SSL certificates.

`--no-paginate` (boolean)

Disable automatic pagination. If automatic pagination is disabled, the AWS CLI will only make one call, for the first page of results.

`--output` (string)

The formatting style for command output.

* json
* text
* table
* yaml
* yaml-stream
* off

`--query` (string)

A JMESPath query to use in filtering the response data.

`--profile` (string)

Use a specific profile from your credential file.

`--region` (string)

The region to use. Overrides config/env settings.

`--version` (string)

Display the version of this tool.

`--color` (string)

Turn on/off color output.

* on
* off
* auto

`--no-sign-request` (boolean)

Do not sign requests. Credentials will not be loaded if this argument is provided.

`--ca-bundle` (string)

The CA certificate bundle to use when verifying SSL certificates. Overrides config/env settings.

`--cli-read-timeout` (int)

The maximum socket read time in seconds. If the value is set to 0, the socket read will be blocking and not timeout. The default value is 60 seconds.

`--cli-connect-timeout` (int)

The maximum socket connect time in seconds. If the value is set to 0, the socket connect will be blocking and not timeout. The default value is 60 seconds.

`--cli-binary-format` (string)

The formatting style to be used for binary blobs. The default format is base64. The base64 format expects binary blobs to be provided as a base64 encoded string. The raw-in-base64-out format preserves compatibility with AWS CLI V1 behavior and binary values must be passed literally. When providing contents from a file that map to a binary blob `fileb://` will always be treated as binary and use the file contents directly regardless of the `cli-binary-format` setting. When using `file://` the file contents will need to properly formatted for the configured `cli-binary-format`.

* base64
* raw-in-base64-out

`--no-cli-pager` (boolean)

Disable cli pager for output.

`--cli-auto-prompt` (boolean)

Automatically prompt for CLI input parameters.

`--no-cli-auto-prompt` (boolean)

Disable automatically prompt for CLI input parameters.

`--cli-error-format` (string)

The formatting style for error output. By default, errors are displayed in enhanced format.

* legacy
* json
* yaml
* text
* table
* enhanced

## Output

Description -> (string)

> The description of the snapshot.

> Constraints:

> * max: `255`
> * pattern: `^[\S\s]+$`

SnapshotId -> (string)

> The ID of the snapshot.

> Constraints:

> * min: `1`
> * max: `64`
> * pattern: `^snap-[0-9a-f]+$`

OwnerId -> (string)

> The Amazon Web Services account ID of the snapshot owner.

> Constraints:

> * min: `1`
> * max: `24`
> * pattern: `\S+`

Status -> (string)

> The status of the snapshot.

> Possible values:

> * `completed`
> * `pending`
> * `error`

> Constraints:

> * max: `32`

StartTime -> (timestamp)

> The timestamp when the snapshot was created.

VolumeSize -> (long)

> The size of the volume, in GiB.

> Constraints:

> * min: `1`

BlockSize -> (integer)

> The size of the blocks in the snapshot, in bytes.

Tags -> (list)

> The tags applied to the snapshot. You can specify up to 50 tags per snapshot. For more information, see [Tagging your Amazon EC2 resources](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html) in the *Amazon Elastic Compute Cloud User Guide* .

> (structure)

> > Describes a tag.

> > Key -> (string)

> > > The key of the tag.

> > > Constraints:

> > > * max: `127`
> > > * pattern: `^[\S\s]+$`

> > Value -> (string)

> > > The value of the tag.

> > > Constraints:

> > > * max: `255`
> > > * pattern: `^[\S\s]*$`

ParentSnapshotId -> (string)

> The ID of the parent snapshot.

> Constraints:

> * min: `1`
> * max: `64`
> * pattern: `^snap-[0-9a-f]+$`

KmsKeyArn -> (string)

> The Amazon Resource Name (ARN) of the Key Management Service (KMS) key used to encrypt the snapshot.

> Constraints:

> * min: `1`
> * max: `2048`
> * pattern: `arn:aws[a-z\-]*:kms:.*:[0-9]{12}:key/.*`

SseType -> (string)

> Reserved for future use.

> Possible values:

> * `sse-ebs`
> * `sse-kms`
> * `none`
