

There are more AWS SDK examples available in the [AWS Doc SDK Examples](https://github.com/awsdocs/aws-doc-sdk-examples) GitHub repo.

# Code examples for Amazon EBS using AWS SDKs
<a name="ebs_code_examples"></a>

The following code examples show you how to use Amazon Elastic Block Store with an AWS software development kit (SDK).

*Actions* are code excerpts from larger programs and must be run in context. While actions show you how to call individual service functions, you can see actions in context in their related scenarios.

**More resources**
+  **[ Amazon EBS User Guide](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)** – More information about Amazon EBS.
+ **[Amazon EBS API Reference](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/OperationList-query-ebs.html)** – Details about all available Amazon EBS actions.
+ **[AWS Developer Center](https://aws.amazon.com/developer/code-examples/?awsf.sdk-code-examples-product=product%23ebs)** – Code examples that you can filter by category or full-text search.
+ **[AWS SDK Examples](https://github.com/awsdocs/aws-doc-sdk-examples)** – GitHub repo with complete code in preferred languages. Includes instructions for setting up and running the code.

**Contents**
+ [Basics](ebs_code_examples_basics.md)
  + [Actions](ebs_code_examples_actions.md)
    + [`CompleteSnapshot`](ebs_example_ebs_CompleteSnapshot_section.md)
    + [`PutSnapshotBlock`](ebs_example_ebs_PutSnapshotBlock_section.md)
    + [`StartSnapshot`](ebs_example_ebs_StartSnapshot_section.md)

# Basic examples for Amazon EBS using AWS SDKs
<a name="ebs_code_examples_basics"></a>

The following code examples show how to use the basics of Amazon Elastic Block Store with AWS SDKs. 

**Contents**
+ [Actions](ebs_code_examples_actions.md)
  + [`CompleteSnapshot`](ebs_example_ebs_CompleteSnapshot_section.md)
  + [`PutSnapshotBlock`](ebs_example_ebs_PutSnapshotBlock_section.md)
  + [`StartSnapshot`](ebs_example_ebs_StartSnapshot_section.md)

# Actions for Amazon EBS using AWS SDKs
<a name="ebs_code_examples_actions"></a>

The following code examples demonstrate how to perform individual Amazon EBS actions with AWS SDKs. Each example includes a link to GitHub, where you can find instructions for setting up and running the code. 

 The following examples include only the most commonly used actions. For a complete list, see the [Amazon Elastic Block Store API Reference](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/OperationList-query-ebs.html). 

**Topics**
+ [`CompleteSnapshot`](ebs_example_ebs_CompleteSnapshot_section.md)
+ [`PutSnapshotBlock`](ebs_example_ebs_PutSnapshotBlock_section.md)
+ [`StartSnapshot`](ebs_example_ebs_StartSnapshot_section.md)

# Use `CompleteSnapshot` with an AWS SDK
<a name="ebs_example_ebs_CompleteSnapshot_section"></a>

The following code example shows how to use `CompleteSnapshot`.

------
#### [ Rust ]

**SDK for Rust**  
 There's more on GitHub. Find the complete example and learn how to set up and run in the [AWS Code Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/rustv1/examples/ebs#code-examples). 

```
async fn finish(client: &Client, id: &str) -> Result<(), Error> {
    client
        .complete_snapshot()
        .changed_blocks_count(2)
        .snapshot_id(id)
        .send()
        .await?;

    println!("Snapshot ID {}", id);
    println!("The state is 'completed' when all of the modified blocks have been transferred to Amazon S3.");
    println!("Use the get-snapshot-state code example to get the state of the snapshot.");

    Ok(())
}
```
+  For API details, see [CompleteSnapshot](https://docs.rs/aws-sdk-ebs/latest/aws_sdk_ebs/client/struct.Client.html#method.complete_snapshot) in *AWS SDK for Rust API reference*. 

------

# Use `PutSnapshotBlock` with an AWS SDK
<a name="ebs_example_ebs_PutSnapshotBlock_section"></a>

The following code example shows how to use `PutSnapshotBlock`.

------
#### [ Rust ]

**SDK for Rust**  
 There's more on GitHub. Find the complete example and learn how to set up and run in the [AWS Code Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/rustv1/examples/ebs#code-examples). 

```
async fn add_block(
    client: &Client,
    id: &str,
    idx: usize,
    block: Vec<u8>,
    checksum: &str,
) -> Result<(), Error> {
    client
        .put_snapshot_block()
        .snapshot_id(id)
        .block_index(idx as i32)
        .block_data(ByteStream::from(block))
        .checksum(checksum)
        .checksum_algorithm(ChecksumAlgorithm::ChecksumAlgorithmSha256)
        .data_length(EBS_BLOCK_SIZE as i32)
        .send()
        .await?;

    Ok(())
}
```
+  For API details, see [PutSnapshotBlock](https://docs.rs/aws-sdk-ebs/latest/aws_sdk_ebs/client/struct.Client.html#method.put_snapshot_block) in *AWS SDK for Rust API reference*. 

------

# Use `StartSnapshot` with an AWS SDK
<a name="ebs_example_ebs_StartSnapshot_section"></a>

The following code example shows how to use `StartSnapshot`.

------
#### [ Rust ]

**SDK for Rust**  
 There's more on GitHub. Find the complete example and learn how to set up and run in the [AWS Code Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/rustv1/examples/ebs#code-examples). 

```
async fn start(client: &Client, description: &str) -> Result<String, Error> {
    let snapshot = client
        .start_snapshot()
        .description(description)
        .encrypted(false)
        .volume_size(1)
        .send()
        .await?;

    Ok(snapshot.snapshot_id.unwrap())
}
```
+  For API details, see [StartSnapshot](https://docs.rs/aws-sdk-ebs/latest/aws_sdk_ebs/client/struct.Client.html#method.start_snapshot) in *AWS SDK for Rust API reference*. 

------