1import * as ec2 from "@distilled.cloud/aws/ec2";
2import * as Layer from "effect/Layer";
3import { makeVolumeHttpBinding } from "./BindingHttp.ts";
4import { CreateSnapshot } from "./CreateSnapshot.ts";
5
6export const CreateSnapshotHttp = Layer.effect(
7 CreateSnapshot,
8 makeVolumeHttpBinding({
9 tag: "AWS.EC2.CreateSnapshot",
10 operation: ec2.createSnapshot,
11 // `ec2:CreateTags` covers `TagSpecifications` on the new snapshot.
12 actions: ["ec2:CreateSnapshot", "ec2:CreateTags"],
13 // Snapshot creation authorizes against both the source volume and the
14 // new snapshot; snapshot ARNs carry no account id.
15 extraResources: ["arn:aws:ec2:*::snapshot/*"],
16 }),
17);