diff --git a/knowledge base/cloud computing/aws/ebs.md b/knowledge base/cloud computing/aws/ebs.md
new file mode 100644
index 0000000..0c4ddf5
--- /dev/null
+++ b/knowledge base/cloud computing/aws/ebs.md
@@ -0,0 +1,48 @@
+# Elastic Block Store
+
+Persistent [block storage][what is block storage?] for [EC2 Instances][ec2].
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
+
+## TL;DR
+
+
+ Real world use cases
+
+```sh
+# Clean up unused volumes.
+aws ec2 describe-volumes --output 'text' \
+ --filters 'Name=status,Values=available' --query 'Volumes[].VolumeId' \
+| xargs -pn '1' aws ec2 delete-volume --volume-id
+```
+
+
+
+## Further readings
+
+- [What is block storage?]
+
+### Sources
+
+- [Documentation]
+- [Delete Unused AWS EBS Volumes]
+- [`describe-volumes`][describe-volumes]
+- [`delete-volume`][delete-volume]
+
+
+
+
+[ec2]: ec2.md
+
+
+[delete-volume]: https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-volume.html
+[describe-volumes]: https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-volumes.html
+[documentation]: https://docs.aws.amazon.com/ebs/
+[what is block storage?]: https://aws.amazon.com/what-is/block-storage/
+
+
+[delete unused aws ebs volumes]: https://www.nops.io/unused-aws-ebs-volumes/
diff --git a/knowledge base/cloud computing/aws/ec2.md b/knowledge base/cloud computing/aws/ec2.md
new file mode 100644
index 0000000..0b44e47
--- /dev/null
+++ b/knowledge base/cloud computing/aws/ec2.md
@@ -0,0 +1,57 @@
+# Title
+
+1. [TL;DR](#tldr)
+1. [Disks](#disks)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
+
+## TL;DR
+
+
+ Real world use cases
+
+```sh
+# Get the IDs of running nginx instances in 'dev'.
+aws ec2 describe-instances --output 'text' \
+ --query 'Reservations[].Instances[].InstanceId[]'
+ --filters \
+ 'Name=instance-state-name,Values=running' \
+ 'Name=tag:env,Values=dev' \
+ 'Name=tag:app,Values=nginx' \
+
+# Start SSM sessions to specific machines.
+aws ec2 describe-instances --output text \
+ --query 'Reservations[].Instances[].InstanceId' \
+ --filters \
+ 'Name=app,Values=mysql' \
+ 'Name=instance-state-name,Values=running' \
+| xargs -ot aws ssm start-session --target
+```
+
+
+
+## Disks
+
+See [EBS].
+
+## Further readings
+
+- [AWS EC2 Instance pricing comparison]
+- [EC2Instances.info on vantage.sh]
+
+### Sources
+
+
+
+
+
+[ebs]: ebs.md
+[ssm]: ssm.md
+
+
+
+
+[aws ec2 instance pricing comparison]: https://ec2instances.github.io/
+[ec2instances.info on vantage.sh]: https://instances.vantage.sh/
diff --git a/knowledge base/cloud computing/aws/ec2.placeholder b/knowledge base/cloud computing/aws/ec2.placeholder
deleted file mode 100644
index c99d2b7..0000000
--- a/knowledge base/cloud computing/aws/ec2.placeholder
+++ /dev/null
@@ -1,20 +0,0 @@
-```sh
-# Get the IDs of running nginx instances in 'dev'.
-aws ec2 describe-instances --output 'text' \
- --query 'Reservations[].Instances[].InstanceId[]'
- --filters \
- 'Name=instance-state-name,Values=running' \
- 'Name=tag:env,Values=dev' \
- 'Name=tag:app,Values=nginx' \
-
-# Start SSM sessions to specific machines.
-aws ec2 describe-instances --output text \
- --query 'Reservations[].Instances[].InstanceId' \
- --filters \
- 'Name=app,Values=mysql' \
- 'Name=instance-state-name,Values=running' \
-| xargs -ot aws ssm start-session --target
-```
-
-https://instances.vantage.sh/
-https://ec2instances.github.io/
diff --git a/knowledge base/cloud computing/aws/ssm.md b/knowledge base/cloud computing/aws/ssm.md
index 8011d9c..f91408b 100644
--- a/knowledge base/cloud computing/aws/ssm.md
+++ b/knowledge base/cloud computing/aws/ssm.md
@@ -97,7 +97,7 @@ Pitfalls:
[ansible]: ../../ansible.md
-[ec2]: ec2.placeholder
+[ec2]: ec2.md
[start a session]: https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-sessions-start.html