alchemy 2.0.0-beta.17 → 2.0.0-beta.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/alchemy.js +428 -80
- package/bin/alchemy.js.map +1 -1
- package/bin/alchemy.ts +2 -0
- package/bin/commands/_shared.ts +34 -0
- package/bin/commands/bootstrap.ts +10 -3
- package/bin/commands/deploy.ts +23 -3
- package/bin/commands/login.ts +18 -3
- package/bin/commands/logs.ts +11 -2
- package/bin/commands/profile.ts +11 -5
- package/bin/commands/state.ts +21 -13
- package/bin/commands/tail.ts +10 -2
- package/lib/AWS/CloudFront/CachePolicy.d.ts +106 -0
- package/lib/AWS/CloudFront/CachePolicy.d.ts.map +1 -0
- package/lib/AWS/CloudFront/CachePolicy.js +147 -0
- package/lib/AWS/CloudFront/CachePolicy.js.map +1 -0
- package/lib/AWS/CloudFront/KeyGroup.d.ts +72 -0
- package/lib/AWS/CloudFront/KeyGroup.d.ts.map +1 -0
- package/lib/AWS/CloudFront/KeyGroup.js +136 -0
- package/lib/AWS/CloudFront/KeyGroup.js.map +1 -0
- package/lib/AWS/CloudFront/OriginRequestPolicy.d.ts +84 -0
- package/lib/AWS/CloudFront/OriginRequestPolicy.d.ts.map +1 -0
- package/lib/AWS/CloudFront/OriginRequestPolicy.js +139 -0
- package/lib/AWS/CloudFront/OriginRequestPolicy.js.map +1 -0
- package/lib/AWS/CloudFront/PublicKey.d.ts +72 -0
- package/lib/AWS/CloudFront/PublicKey.d.ts.map +1 -0
- package/lib/AWS/CloudFront/PublicKey.js +137 -0
- package/lib/AWS/CloudFront/PublicKey.js.map +1 -0
- package/lib/AWS/CloudFront/ResponseHeadersPolicy.d.ts +114 -0
- package/lib/AWS/CloudFront/ResponseHeadersPolicy.d.ts.map +1 -0
- package/lib/AWS/CloudFront/ResponseHeadersPolicy.js +162 -0
- package/lib/AWS/CloudFront/ResponseHeadersPolicy.js.map +1 -0
- package/lib/AWS/CloudFront/index.d.ts +5 -0
- package/lib/AWS/CloudFront/index.d.ts.map +1 -1
- package/lib/AWS/CloudFront/index.js +5 -0
- package/lib/AWS/CloudFront/index.js.map +1 -1
- package/lib/AWS/ECS/CapacityProvider.d.ts +102 -0
- package/lib/AWS/ECS/CapacityProvider.d.ts.map +1 -0
- package/lib/AWS/ECS/CapacityProvider.js +217 -0
- package/lib/AWS/ECS/CapacityProvider.js.map +1 -0
- package/lib/AWS/ECS/index.d.ts +1 -0
- package/lib/AWS/ECS/index.d.ts.map +1 -1
- package/lib/AWS/ECS/index.js +1 -0
- package/lib/AWS/ECS/index.js.map +1 -1
- package/lib/AWS/Providers.d.ts.map +1 -1
- package/lib/AWS/Providers.js +7 -1
- package/lib/AWS/Providers.js.map +1 -1
- package/lib/Agent/lsp/client.d.ts +2 -2
- package/lib/Apply.d.ts.map +1 -1
- package/lib/Apply.js +41 -9
- package/lib/Apply.js.map +1 -1
- package/lib/Axiom/Annotation.d.ts +49 -0
- package/lib/Axiom/Annotation.d.ts.map +1 -0
- package/lib/Axiom/Annotation.js +74 -0
- package/lib/Axiom/Annotation.js.map +1 -0
- package/lib/Axiom/ApiToken.d.ts +62 -0
- package/lib/Axiom/ApiToken.d.ts.map +1 -0
- package/lib/Axiom/ApiToken.js +98 -0
- package/lib/Axiom/ApiToken.js.map +1 -0
- package/lib/Axiom/AuthProvider.d.ts +48 -0
- package/lib/Axiom/AuthProvider.d.ts.map +1 -0
- package/lib/Axiom/AuthProvider.js +177 -0
- package/lib/Axiom/AuthProvider.js.map +1 -0
- package/lib/Axiom/Chart.d.ts +72 -0
- package/lib/Axiom/Chart.d.ts.map +1 -0
- package/lib/Axiom/Chart.js +14 -0
- package/lib/Axiom/Chart.js.map +1 -0
- package/lib/Axiom/Credentials.d.ts +12 -0
- package/lib/Axiom/Credentials.d.ts.map +1 -0
- package/lib/Axiom/Credentials.js +34 -0
- package/lib/Axiom/Credentials.js.map +1 -0
- package/lib/Axiom/Dashboard.d.ts +124 -0
- package/lib/Axiom/Dashboard.d.ts.map +1 -0
- package/lib/Axiom/Dashboard.js +140 -0
- package/lib/Axiom/Dashboard.js.map +1 -0
- package/lib/Axiom/Dataset.d.ts +101 -0
- package/lib/Axiom/Dataset.d.ts.map +1 -0
- package/lib/Axiom/Dataset.js +183 -0
- package/lib/Axiom/Dataset.js.map +1 -0
- package/lib/Axiom/Monitor.d.ts +74 -0
- package/lib/Axiom/Monitor.d.ts.map +1 -0
- package/lib/Axiom/Monitor.js +103 -0
- package/lib/Axiom/Monitor.js.map +1 -0
- package/lib/Axiom/Notifier.d.ts +63 -0
- package/lib/Axiom/Notifier.d.ts.map +1 -0
- package/lib/Axiom/Notifier.js +83 -0
- package/lib/Axiom/Notifier.js.map +1 -0
- package/lib/Axiom/Providers.d.ts +15 -0
- package/lib/Axiom/Providers.d.ts.map +1 -0
- package/lib/Axiom/Providers.js +32 -0
- package/lib/Axiom/Providers.js.map +1 -0
- package/lib/Axiom/View.d.ts +55 -0
- package/lib/Axiom/View.d.ts.map +1 -0
- package/lib/Axiom/View.js +79 -0
- package/lib/Axiom/View.js.map +1 -0
- package/lib/Axiom/VirtualField.d.ts +42 -0
- package/lib/Axiom/VirtualField.d.ts.map +1 -0
- package/lib/Axiom/VirtualField.js +71 -0
- package/lib/Axiom/VirtualField.js.map +1 -0
- package/lib/Axiom/index.d.ts +13 -0
- package/lib/Axiom/index.d.ts.map +1 -0
- package/lib/Axiom/index.js +13 -0
- package/lib/Axiom/index.js.map +1 -0
- package/lib/Bundle/Bundle.d.ts +20 -2
- package/lib/Bundle/Bundle.d.ts.map +1 -1
- package/lib/Bundle/Bundle.js +18 -3
- package/lib/Bundle/Bundle.js.map +1 -1
- package/lib/Bundle/PurePlugin.d.ts +109 -0
- package/lib/Bundle/PurePlugin.d.ts.map +1 -0
- package/lib/Bundle/PurePlugin.js +469 -0
- package/lib/Bundle/PurePlugin.js.map +1 -0
- package/lib/Bundle/index.d.ts +1 -0
- package/lib/Bundle/index.d.ts.map +1 -1
- package/lib/Bundle/index.js +1 -0
- package/lib/Bundle/index.js.map +1 -1
- package/lib/Cloudflare/Workers/Worker.d.ts +12 -0
- package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Worker.js +19 -4
- package/lib/Cloudflare/Workers/Worker.js.map +1 -1
- package/lib/GitHub/Secrets.d.ts +45 -0
- package/lib/GitHub/Secrets.d.ts.map +1 -0
- package/lib/GitHub/Secrets.js +30 -0
- package/lib/GitHub/Secrets.js.map +1 -0
- package/lib/GitHub/index.d.ts +1 -0
- package/lib/GitHub/index.d.ts.map +1 -1
- package/lib/GitHub/index.js +1 -0
- package/lib/GitHub/index.js.map +1 -1
- package/lib/Output.d.ts.map +1 -1
- package/lib/Output.js +1 -1
- package/lib/Output.js.map +1 -1
- package/lib/Plan.d.ts.map +1 -1
- package/lib/Plan.js +10 -4
- package/lib/Plan.js.map +1 -1
- package/lib/Resource.d.ts +2 -2
- package/lib/Resource.d.ts.map +1 -1
- package/lib/Telemetry/Attributes.d.ts +43 -0
- package/lib/Telemetry/Attributes.d.ts.map +1 -0
- package/lib/Telemetry/Attributes.js +144 -0
- package/lib/Telemetry/Attributes.js.map +1 -0
- package/lib/Telemetry/Layer.d.ts +14 -0
- package/lib/Telemetry/Layer.d.ts.map +1 -0
- package/lib/Telemetry/Layer.js +50 -0
- package/lib/Telemetry/Layer.js.map +1 -0
- package/lib/Telemetry/Metrics.d.ts +34 -0
- package/lib/Telemetry/Metrics.d.ts.map +1 -0
- package/lib/Telemetry/Metrics.js +57 -0
- package/lib/Telemetry/Metrics.js.map +1 -0
- package/package.json +12 -1
- package/src/AWS/CloudFront/CachePolicy.ts +271 -0
- package/src/AWS/CloudFront/KeyGroup.ts +233 -0
- package/src/AWS/CloudFront/OriginRequestPolicy.ts +256 -0
- package/src/AWS/CloudFront/PublicKey.ts +245 -0
- package/src/AWS/CloudFront/ResponseHeadersPolicy.ts +308 -0
- package/src/AWS/CloudFront/index.ts +11 -0
- package/src/AWS/ECS/CapacityProvider.ts +336 -0
- package/src/AWS/ECS/index.ts +4 -0
- package/src/AWS/Providers.ts +12 -0
- package/src/Apply.ts +118 -9
- package/src/Axiom/Annotation.ts +95 -0
- package/src/Axiom/ApiToken.ts +125 -0
- package/src/Axiom/AuthProvider.ts +341 -0
- package/src/Axiom/Chart.ts +94 -0
- package/src/Axiom/Credentials.ts +70 -0
- package/src/Axiom/Dashboard.ts +192 -0
- package/src/Axiom/Dataset.ts +291 -0
- package/src/Axiom/Monitor.ts +122 -0
- package/src/Axiom/Notifier.ts +104 -0
- package/src/Axiom/Providers.ts +58 -0
- package/src/Axiom/View.ts +106 -0
- package/src/Axiom/VirtualField.ts +90 -0
- package/src/Axiom/index.ts +12 -0
- package/src/Bundle/Bundle.ts +39 -1
- package/src/Bundle/PurePlugin.ts +556 -0
- package/src/Bundle/index.ts +1 -0
- package/src/Cloudflare/Workers/Worker.ts +37 -6
- package/src/GitHub/Secrets.ts +66 -0
- package/src/GitHub/index.ts +1 -0
- package/src/Output.ts +2 -1
- package/src/Plan.ts +13 -4
- package/src/Resource.ts +2 -2
- package/src/Telemetry/Attributes.ts +216 -0
- package/src/Telemetry/Layer.ts +65 -0
- package/src/Telemetry/Metrics.ts +101 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import * as cloudfront from "@distilled.cloud/aws/cloudfront";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Redacted from "effect/Redacted";
|
|
4
|
+
import { isResolved } from "../../Diff.js";
|
|
5
|
+
import { createPhysicalName } from "../../PhysicalName.js";
|
|
6
|
+
import * as Provider from "../../Provider.js";
|
|
7
|
+
import { Resource } from "../../Resource.js";
|
|
8
|
+
import { extractValue } from "./common.js";
|
|
9
|
+
/**
|
|
10
|
+
* A CloudFront public key.
|
|
11
|
+
*
|
|
12
|
+
* Public keys are uploaded ahead of being grouped into a {@link KeyGroup} and
|
|
13
|
+
* used by Distributions for signed URL or signed cookie verification.
|
|
14
|
+
*
|
|
15
|
+
* The key body is immutable after creation — changing `encodedKey` triggers
|
|
16
|
+
* a replacement (CloudFront returns no API to rotate a key in place).
|
|
17
|
+
*
|
|
18
|
+
* @section Creating Public Keys
|
|
19
|
+
* @example PEM-encoded RSA public key
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const key = yield* PublicKey("SignedUrlKey", {
|
|
22
|
+
* encodedKey: Redacted.make(yield* fs.readFileString("./public_key.pem")),
|
|
23
|
+
* comment: "RSA-2048 signed URL key for /private",
|
|
24
|
+
* });
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export const PublicKey = Resource("AWS.CloudFront.PublicKey");
|
|
28
|
+
export const PublicKeyProvider = () => Provider.effect(PublicKey, Effect.gen(function* () {
|
|
29
|
+
const getById = Effect.fn(function* (id) {
|
|
30
|
+
const config = yield* cloudfront
|
|
31
|
+
.getPublicKeyConfig({ Id: id })
|
|
32
|
+
.pipe(Effect.catchTag("NoSuchPublicKey", () => Effect.succeed(undefined)));
|
|
33
|
+
if (!config?.PublicKeyConfig)
|
|
34
|
+
return undefined;
|
|
35
|
+
return { config: config.PublicKeyConfig, etag: config.ETag };
|
|
36
|
+
});
|
|
37
|
+
const getByName = Effect.fn(function* (name) {
|
|
38
|
+
const listed = yield* cloudfront.listPublicKeys({});
|
|
39
|
+
const summary = listed.PublicKeyList?.Items?.find((item) => item.Name === name);
|
|
40
|
+
if (!summary?.Id)
|
|
41
|
+
return undefined;
|
|
42
|
+
return yield* getById(summary.Id).pipe(Effect.map((found) => found ? { id: summary.Id, ...found } : undefined));
|
|
43
|
+
});
|
|
44
|
+
const buildConfig = (name, callerReference, props) => ({
|
|
45
|
+
Name: name,
|
|
46
|
+
CallerReference: callerReference,
|
|
47
|
+
EncodedKey: extractValue(props.encodedKey),
|
|
48
|
+
Comment: props.comment,
|
|
49
|
+
});
|
|
50
|
+
const toAttrs = (id, config, etag) => ({
|
|
51
|
+
publicKeyId: id,
|
|
52
|
+
name: config.Name,
|
|
53
|
+
encodedKey: config.EncodedKey,
|
|
54
|
+
callerReference: config.CallerReference,
|
|
55
|
+
etag,
|
|
56
|
+
comment: config.Comment,
|
|
57
|
+
});
|
|
58
|
+
return {
|
|
59
|
+
stables: ["publicKeyId", "callerReference"],
|
|
60
|
+
diff: Effect.fn(function* ({ id, news, olds }) {
|
|
61
|
+
if (!isResolved(news))
|
|
62
|
+
return undefined;
|
|
63
|
+
if ((yield* createName(id, olds ?? {})) !==
|
|
64
|
+
(yield* createName(id, news))) {
|
|
65
|
+
return { action: "replace" };
|
|
66
|
+
}
|
|
67
|
+
if (isResolved(olds.encodedKey) &&
|
|
68
|
+
extractValue(olds.encodedKey) !== extractValue(news.encodedKey)) {
|
|
69
|
+
return { action: "replace" };
|
|
70
|
+
}
|
|
71
|
+
}),
|
|
72
|
+
read: Effect.fn(function* ({ id, olds, output }) {
|
|
73
|
+
if (output?.publicKeyId) {
|
|
74
|
+
const found = yield* getById(output.publicKeyId);
|
|
75
|
+
if (found)
|
|
76
|
+
return toAttrs(output.publicKeyId, found.config, found.etag);
|
|
77
|
+
}
|
|
78
|
+
const name = yield* createName(id, olds ?? {});
|
|
79
|
+
const found = yield* getByName(name);
|
|
80
|
+
if (!found)
|
|
81
|
+
return undefined;
|
|
82
|
+
return toAttrs(found.id, found.config, found.etag);
|
|
83
|
+
}),
|
|
84
|
+
create: Effect.fn(function* ({ id, news, session }) {
|
|
85
|
+
const name = yield* createName(id, news);
|
|
86
|
+
const callerReference = name;
|
|
87
|
+
const created = yield* cloudfront
|
|
88
|
+
.createPublicKey({
|
|
89
|
+
PublicKeyConfig: buildConfig(name, callerReference, news),
|
|
90
|
+
})
|
|
91
|
+
.pipe(Effect.catchTag("PublicKeyAlreadyExists", () => getByName(name).pipe(Effect.flatMap((existing) => existing
|
|
92
|
+
? Effect.succeed({
|
|
93
|
+
PublicKey: {
|
|
94
|
+
Id: existing.id,
|
|
95
|
+
CreatedTime: new Date(),
|
|
96
|
+
PublicKeyConfig: existing.config,
|
|
97
|
+
},
|
|
98
|
+
ETag: existing.etag,
|
|
99
|
+
Location: undefined,
|
|
100
|
+
})
|
|
101
|
+
: Effect.fail(new Error(`Public key '${name}' already exists but could not be recovered`))))));
|
|
102
|
+
if (!created.PublicKey?.Id) {
|
|
103
|
+
return yield* Effect.fail(new Error("createPublicKey returned no identifier"));
|
|
104
|
+
}
|
|
105
|
+
yield* session.note(created.PublicKey.Id);
|
|
106
|
+
return toAttrs(created.PublicKey.Id, created.PublicKey.PublicKeyConfig, created.ETag);
|
|
107
|
+
}),
|
|
108
|
+
update: Effect.fn(function* ({ news, output, session }) {
|
|
109
|
+
const current = yield* getById(output.publicKeyId);
|
|
110
|
+
const updated = yield* cloudfront.updatePublicKey({
|
|
111
|
+
Id: output.publicKeyId,
|
|
112
|
+
IfMatch: current?.etag ?? output.etag,
|
|
113
|
+
PublicKeyConfig: buildConfig(output.name, output.callerReference, news),
|
|
114
|
+
});
|
|
115
|
+
if (!updated.PublicKey?.Id) {
|
|
116
|
+
return yield* Effect.fail(new Error("updatePublicKey returned no identifier"));
|
|
117
|
+
}
|
|
118
|
+
yield* session.note(output.publicKeyId);
|
|
119
|
+
return toAttrs(updated.PublicKey.Id, updated.PublicKey.PublicKeyConfig, updated.ETag);
|
|
120
|
+
}),
|
|
121
|
+
delete: Effect.fn(function* ({ output }) {
|
|
122
|
+
const current = yield* getById(output.publicKeyId);
|
|
123
|
+
if (!current)
|
|
124
|
+
return;
|
|
125
|
+
yield* cloudfront
|
|
126
|
+
.deletePublicKey({
|
|
127
|
+
Id: output.publicKeyId,
|
|
128
|
+
IfMatch: current.etag,
|
|
129
|
+
})
|
|
130
|
+
.pipe(Effect.catchTag("NoSuchPublicKey", () => Effect.void));
|
|
131
|
+
}),
|
|
132
|
+
};
|
|
133
|
+
}));
|
|
134
|
+
const createName = (id, props) => props.name
|
|
135
|
+
? Effect.succeed(props.name)
|
|
136
|
+
: createPhysicalName({ id, maxLength: 128, lowercase: true });
|
|
137
|
+
//# sourceMappingURL=PublicKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PublicKey.js","sourceRoot":"","sources":["../../../src/AWS/CloudFront/PublicKey.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import * as cloudfront from "@distilled.cloud/aws/cloudfront";
|
|
2
|
+
import * as Provider from "../../Provider.ts";
|
|
3
|
+
import { Resource } from "../../Resource.ts";
|
|
4
|
+
import type { Providers } from "../Providers.ts";
|
|
5
|
+
export interface ResponseHeadersPolicyProps {
|
|
6
|
+
/**
|
|
7
|
+
* Name of the response headers policy. If omitted, a deterministic name is
|
|
8
|
+
* generated. Names must be unique per AWS account. Changing the name
|
|
9
|
+
* triggers a replacement.
|
|
10
|
+
*/
|
|
11
|
+
name?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Optional comment describing the policy.
|
|
14
|
+
*/
|
|
15
|
+
comment?: string;
|
|
16
|
+
/**
|
|
17
|
+
* CORS configuration applied to viewer responses.
|
|
18
|
+
*/
|
|
19
|
+
corsConfig?: cloudfront.ResponseHeadersPolicyCorsConfig;
|
|
20
|
+
/**
|
|
21
|
+
* Standard security headers (HSTS, X-Frame-Options, etc.) added to
|
|
22
|
+
* viewer responses.
|
|
23
|
+
*/
|
|
24
|
+
securityHeadersConfig?: cloudfront.ResponseHeadersPolicySecurityHeadersConfig;
|
|
25
|
+
/**
|
|
26
|
+
* Server-Timing header configuration for measuring CloudFront performance.
|
|
27
|
+
*/
|
|
28
|
+
serverTimingHeadersConfig?: cloudfront.ResponseHeadersPolicyServerTimingHeadersConfig;
|
|
29
|
+
/**
|
|
30
|
+
* Custom headers to add to viewer responses.
|
|
31
|
+
*/
|
|
32
|
+
customHeadersConfig?: cloudfront.ResponseHeadersPolicyCustomHeadersConfig;
|
|
33
|
+
/**
|
|
34
|
+
* Headers to remove from viewer responses.
|
|
35
|
+
*/
|
|
36
|
+
removeHeadersConfig?: cloudfront.ResponseHeadersPolicyRemoveHeadersConfig;
|
|
37
|
+
}
|
|
38
|
+
export interface ResponseHeadersPolicy extends Resource<"AWS.CloudFront.ResponseHeadersPolicy", ResponseHeadersPolicyProps, {
|
|
39
|
+
/**
|
|
40
|
+
* CloudFront-assigned response headers policy identifier.
|
|
41
|
+
*/
|
|
42
|
+
responseHeadersPolicyId: string;
|
|
43
|
+
/**
|
|
44
|
+
* Name of the response headers policy.
|
|
45
|
+
*/
|
|
46
|
+
name: string;
|
|
47
|
+
/**
|
|
48
|
+
* Most recent entity tag for update/delete operations.
|
|
49
|
+
*/
|
|
50
|
+
etag: string | undefined;
|
|
51
|
+
/**
|
|
52
|
+
* Current comment on the policy.
|
|
53
|
+
*/
|
|
54
|
+
comment: string | undefined;
|
|
55
|
+
/**
|
|
56
|
+
* Current CORS configuration.
|
|
57
|
+
*/
|
|
58
|
+
corsConfig: cloudfront.ResponseHeadersPolicyCorsConfig | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* Current security headers configuration.
|
|
61
|
+
*/
|
|
62
|
+
securityHeadersConfig: cloudfront.ResponseHeadersPolicySecurityHeadersConfig | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* Current Server-Timing configuration.
|
|
65
|
+
*/
|
|
66
|
+
serverTimingHeadersConfig: cloudfront.ResponseHeadersPolicyServerTimingHeadersConfig | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* Current custom headers configuration.
|
|
69
|
+
*/
|
|
70
|
+
customHeadersConfig: cloudfront.ResponseHeadersPolicyCustomHeadersConfig | undefined;
|
|
71
|
+
/**
|
|
72
|
+
* Current remove-headers configuration.
|
|
73
|
+
*/
|
|
74
|
+
removeHeadersConfig: cloudfront.ResponseHeadersPolicyRemoveHeadersConfig | undefined;
|
|
75
|
+
}, never, Providers> {
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* A CloudFront response headers policy.
|
|
79
|
+
*
|
|
80
|
+
* Response headers policies add or remove headers in viewer responses,
|
|
81
|
+
* including CORS, standard security headers (HSTS, X-Frame-Options,
|
|
82
|
+
* X-Content-Type-Options, Referrer-Policy, etc.), Server-Timing, custom
|
|
83
|
+
* headers and explicit header removal. They are referenced by ID on a
|
|
84
|
+
* Distribution's default behavior or per-path cache behaviors.
|
|
85
|
+
*
|
|
86
|
+
* @section Creating Response Headers Policies
|
|
87
|
+
* @example Standard security + CORS
|
|
88
|
+
* ```typescript
|
|
89
|
+
* const responseHeadersPolicy = yield* ResponseHeadersPolicy("AppResponseHeaders", {
|
|
90
|
+
* comment: "Default app security + CORS",
|
|
91
|
+
* corsConfig: {
|
|
92
|
+
* AccessControlAllowOrigins: { Quantity: 1, Items: ["https://app.example.com"] },
|
|
93
|
+
* AccessControlAllowMethods: { Quantity: 2, Items: ["GET", "OPTIONS"] },
|
|
94
|
+
* AccessControlAllowHeaders: { Quantity: 1, Items: ["Authorization"] },
|
|
95
|
+
* AccessControlAllowCredentials: false,
|
|
96
|
+
* OriginOverride: true,
|
|
97
|
+
* },
|
|
98
|
+
* securityHeadersConfig: {
|
|
99
|
+
* StrictTransportSecurity: {
|
|
100
|
+
* AccessControlMaxAgeSec: 31536000,
|
|
101
|
+
* IncludeSubdomains: true,
|
|
102
|
+
* Preload: true,
|
|
103
|
+
* Override: true,
|
|
104
|
+
* },
|
|
105
|
+
* ContentTypeOptions: { Override: true },
|
|
106
|
+
* FrameOptions: { FrameOption: "DENY", Override: true },
|
|
107
|
+
* ReferrerPolicy: { ReferrerPolicy: "no-referrer", Override: true },
|
|
108
|
+
* },
|
|
109
|
+
* });
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
export declare const ResponseHeadersPolicy: import("../../Resource.ts").ResourceClass<ResponseHeadersPolicy>;
|
|
113
|
+
export declare const ResponseHeadersPolicyProvider: () => import("effect/Layer").Layer<Provider.Provider<ResponseHeadersPolicy>, never, import("effect/unstable/http/HttpClient").HttpClient | import("../../Stage.ts").Stage | import("../../Stack.ts").Stack | import("@distilled.cloud/aws/Region").Region | import("@distilled.cloud/aws/Credentials").Credentials>;
|
|
114
|
+
//# sourceMappingURL=ResponseHeadersPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResponseHeadersPolicy.d.ts","sourceRoot":"","sources":["../../../src/AWS/CloudFront/ResponseHeadersPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAC;AAI9D,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,WAAW,0BAA0B;IACzC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC,+BAA+B,CAAC;IACxD;;;OAGG;IACH,qBAAqB,CAAC,EAAE,UAAU,CAAC,0CAA0C,CAAC;IAC9E;;OAEG;IACH,yBAAyB,CAAC,EAAE,UAAU,CAAC,8CAA8C,CAAC;IACtF;;OAEG;IACH,mBAAmB,CAAC,EAAE,UAAU,CAAC,wCAAwC,CAAC;IAC1E;;OAEG;IACH,mBAAmB,CAAC,EAAE,UAAU,CAAC,wCAAwC,CAAC;CAC3E;AAED,MAAM,WAAW,qBAAsB,SAAQ,QAAQ,CACrD,sCAAsC,EACtC,0BAA0B,EAC1B;IACE;;OAEG;IACH,uBAAuB,EAAE,MAAM,CAAC;IAChC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC,+BAA+B,GAAG,SAAS,CAAC;IACnE;;OAEG;IACH,qBAAqB,EACjB,UAAU,CAAC,0CAA0C,GACrD,SAAS,CAAC;IACd;;OAEG;IACH,yBAAyB,EACrB,UAAU,CAAC,8CAA8C,GACzD,SAAS,CAAC;IACd;;OAEG;IACH,mBAAmB,EACf,UAAU,CAAC,wCAAwC,GACnD,SAAS,CAAC;IACd;;OAEG;IACH,mBAAmB,EACf,UAAU,CAAC,wCAAwC,GACnD,SAAS,CAAC;CACf,EACD,KAAK,EACL,SAAS,CACV;CAAG;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,eAAO,MAAM,qBAAqB,kEAEjC,CAAC;AAEF,eAAO,MAAM,6BAA6B,qTAwKvC,CAAC"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import * as cloudfront from "@distilled.cloud/aws/cloudfront";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import { isResolved } from "../../Diff.js";
|
|
4
|
+
import { createPhysicalName } from "../../PhysicalName.js";
|
|
5
|
+
import * as Provider from "../../Provider.js";
|
|
6
|
+
import { Resource } from "../../Resource.js";
|
|
7
|
+
/**
|
|
8
|
+
* A CloudFront response headers policy.
|
|
9
|
+
*
|
|
10
|
+
* Response headers policies add or remove headers in viewer responses,
|
|
11
|
+
* including CORS, standard security headers (HSTS, X-Frame-Options,
|
|
12
|
+
* X-Content-Type-Options, Referrer-Policy, etc.), Server-Timing, custom
|
|
13
|
+
* headers and explicit header removal. They are referenced by ID on a
|
|
14
|
+
* Distribution's default behavior or per-path cache behaviors.
|
|
15
|
+
*
|
|
16
|
+
* @section Creating Response Headers Policies
|
|
17
|
+
* @example Standard security + CORS
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const responseHeadersPolicy = yield* ResponseHeadersPolicy("AppResponseHeaders", {
|
|
20
|
+
* comment: "Default app security + CORS",
|
|
21
|
+
* corsConfig: {
|
|
22
|
+
* AccessControlAllowOrigins: { Quantity: 1, Items: ["https://app.example.com"] },
|
|
23
|
+
* AccessControlAllowMethods: { Quantity: 2, Items: ["GET", "OPTIONS"] },
|
|
24
|
+
* AccessControlAllowHeaders: { Quantity: 1, Items: ["Authorization"] },
|
|
25
|
+
* AccessControlAllowCredentials: false,
|
|
26
|
+
* OriginOverride: true,
|
|
27
|
+
* },
|
|
28
|
+
* securityHeadersConfig: {
|
|
29
|
+
* StrictTransportSecurity: {
|
|
30
|
+
* AccessControlMaxAgeSec: 31536000,
|
|
31
|
+
* IncludeSubdomains: true,
|
|
32
|
+
* Preload: true,
|
|
33
|
+
* Override: true,
|
|
34
|
+
* },
|
|
35
|
+
* ContentTypeOptions: { Override: true },
|
|
36
|
+
* FrameOptions: { FrameOption: "DENY", Override: true },
|
|
37
|
+
* ReferrerPolicy: { ReferrerPolicy: "no-referrer", Override: true },
|
|
38
|
+
* },
|
|
39
|
+
* });
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export const ResponseHeadersPolicy = Resource("AWS.CloudFront.ResponseHeadersPolicy");
|
|
43
|
+
export const ResponseHeadersPolicyProvider = () => Provider.effect(ResponseHeadersPolicy, Effect.gen(function* () {
|
|
44
|
+
const getById = Effect.fn(function* (id) {
|
|
45
|
+
const config = yield* cloudfront
|
|
46
|
+
.getResponseHeadersPolicyConfig({ Id: id })
|
|
47
|
+
.pipe(Effect.catchTag("NoSuchResponseHeadersPolicy", () => Effect.succeed(undefined)));
|
|
48
|
+
if (!config?.ResponseHeadersPolicyConfig)
|
|
49
|
+
return undefined;
|
|
50
|
+
return {
|
|
51
|
+
config: config.ResponseHeadersPolicyConfig,
|
|
52
|
+
etag: config.ETag,
|
|
53
|
+
};
|
|
54
|
+
});
|
|
55
|
+
const getByName = Effect.fn(function* (name) {
|
|
56
|
+
const listed = yield* cloudfront.listResponseHeadersPolicies({
|
|
57
|
+
Type: "custom",
|
|
58
|
+
});
|
|
59
|
+
const summary = listed.ResponseHeadersPolicyList?.Items?.find((item) => item.ResponseHeadersPolicy?.ResponseHeadersPolicyConfig?.Name ===
|
|
60
|
+
name);
|
|
61
|
+
if (!summary?.ResponseHeadersPolicy?.Id)
|
|
62
|
+
return undefined;
|
|
63
|
+
return yield* getById(summary.ResponseHeadersPolicy.Id).pipe(Effect.map((found) => found
|
|
64
|
+
? { id: summary.ResponseHeadersPolicy.Id, ...found }
|
|
65
|
+
: undefined));
|
|
66
|
+
});
|
|
67
|
+
const buildConfig = (name, props) => ({
|
|
68
|
+
Name: name,
|
|
69
|
+
Comment: props.comment,
|
|
70
|
+
CorsConfig: props.corsConfig,
|
|
71
|
+
SecurityHeadersConfig: props.securityHeadersConfig,
|
|
72
|
+
ServerTimingHeadersConfig: props.serverTimingHeadersConfig,
|
|
73
|
+
CustomHeadersConfig: props.customHeadersConfig,
|
|
74
|
+
RemoveHeadersConfig: props.removeHeadersConfig,
|
|
75
|
+
});
|
|
76
|
+
const toAttrs = (id, config, etag) => ({
|
|
77
|
+
responseHeadersPolicyId: id,
|
|
78
|
+
name: config.Name,
|
|
79
|
+
etag,
|
|
80
|
+
comment: config.Comment,
|
|
81
|
+
corsConfig: config.CorsConfig,
|
|
82
|
+
securityHeadersConfig: config.SecurityHeadersConfig,
|
|
83
|
+
serverTimingHeadersConfig: config.ServerTimingHeadersConfig,
|
|
84
|
+
customHeadersConfig: config.CustomHeadersConfig,
|
|
85
|
+
removeHeadersConfig: config.RemoveHeadersConfig,
|
|
86
|
+
});
|
|
87
|
+
return {
|
|
88
|
+
stables: ["responseHeadersPolicyId"],
|
|
89
|
+
diff: Effect.fn(function* ({ id, news, olds }) {
|
|
90
|
+
if (!isResolved(news))
|
|
91
|
+
return undefined;
|
|
92
|
+
if ((yield* createName(id, olds ?? {})) !==
|
|
93
|
+
(yield* createName(id, news))) {
|
|
94
|
+
return { action: "replace" };
|
|
95
|
+
}
|
|
96
|
+
}),
|
|
97
|
+
read: Effect.fn(function* ({ id, olds, output }) {
|
|
98
|
+
if (output?.responseHeadersPolicyId) {
|
|
99
|
+
const found = yield* getById(output.responseHeadersPolicyId);
|
|
100
|
+
if (found) {
|
|
101
|
+
return toAttrs(output.responseHeadersPolicyId, found.config, found.etag);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
const name = yield* createName(id, olds ?? {});
|
|
105
|
+
const found = yield* getByName(name);
|
|
106
|
+
if (!found)
|
|
107
|
+
return undefined;
|
|
108
|
+
return toAttrs(found.id, found.config, found.etag);
|
|
109
|
+
}),
|
|
110
|
+
create: Effect.fn(function* ({ id, news, session }) {
|
|
111
|
+
const name = yield* createName(id, news);
|
|
112
|
+
const created = yield* cloudfront
|
|
113
|
+
.createResponseHeadersPolicy({
|
|
114
|
+
ResponseHeadersPolicyConfig: buildConfig(name, news),
|
|
115
|
+
})
|
|
116
|
+
.pipe(Effect.catchTag("ResponseHeadersPolicyAlreadyExists", () => getByName(name).pipe(Effect.flatMap((existing) => existing
|
|
117
|
+
? Effect.succeed({
|
|
118
|
+
ResponseHeadersPolicy: {
|
|
119
|
+
Id: existing.id,
|
|
120
|
+
LastModifiedTime: new Date(),
|
|
121
|
+
ResponseHeadersPolicyConfig: existing.config,
|
|
122
|
+
},
|
|
123
|
+
ETag: existing.etag,
|
|
124
|
+
Location: undefined,
|
|
125
|
+
})
|
|
126
|
+
: Effect.fail(new Error(`Response headers policy '${name}' already exists but could not be recovered`))))));
|
|
127
|
+
if (!created.ResponseHeadersPolicy?.Id) {
|
|
128
|
+
return yield* Effect.fail(new Error("createResponseHeadersPolicy returned no identifier"));
|
|
129
|
+
}
|
|
130
|
+
yield* session.note(created.ResponseHeadersPolicy.Id);
|
|
131
|
+
return toAttrs(created.ResponseHeadersPolicy.Id, created.ResponseHeadersPolicy.ResponseHeadersPolicyConfig, created.ETag);
|
|
132
|
+
}),
|
|
133
|
+
update: Effect.fn(function* ({ news, output, session }) {
|
|
134
|
+
const current = yield* getById(output.responseHeadersPolicyId);
|
|
135
|
+
const updated = yield* cloudfront.updateResponseHeadersPolicy({
|
|
136
|
+
Id: output.responseHeadersPolicyId,
|
|
137
|
+
IfMatch: current?.etag ?? output.etag,
|
|
138
|
+
ResponseHeadersPolicyConfig: buildConfig(output.name, news),
|
|
139
|
+
});
|
|
140
|
+
if (!updated.ResponseHeadersPolicy?.Id) {
|
|
141
|
+
return yield* Effect.fail(new Error("updateResponseHeadersPolicy returned no identifier"));
|
|
142
|
+
}
|
|
143
|
+
yield* session.note(output.responseHeadersPolicyId);
|
|
144
|
+
return toAttrs(updated.ResponseHeadersPolicy.Id, updated.ResponseHeadersPolicy.ResponseHeadersPolicyConfig, updated.ETag);
|
|
145
|
+
}),
|
|
146
|
+
delete: Effect.fn(function* ({ output }) {
|
|
147
|
+
const current = yield* getById(output.responseHeadersPolicyId);
|
|
148
|
+
if (!current)
|
|
149
|
+
return;
|
|
150
|
+
yield* cloudfront
|
|
151
|
+
.deleteResponseHeadersPolicy({
|
|
152
|
+
Id: output.responseHeadersPolicyId,
|
|
153
|
+
IfMatch: current.etag,
|
|
154
|
+
})
|
|
155
|
+
.pipe(Effect.catchTag("NoSuchResponseHeadersPolicy", () => Effect.void));
|
|
156
|
+
}),
|
|
157
|
+
};
|
|
158
|
+
}));
|
|
159
|
+
const createName = (id, props) => props.name
|
|
160
|
+
? Effect.succeed(props.name)
|
|
161
|
+
: createPhysicalName({ id, maxLength: 128, lowercase: true });
|
|
162
|
+
//# sourceMappingURL=ResponseHeadersPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResponseHeadersPolicy.js","sourceRoot":"","sources":["../../../src/AWS/CloudFront/ResponseHeadersPolicy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
+
export { CachePolicy, CachePolicyProvider } from "./CachePolicy.ts";
|
|
1
2
|
export { Distribution, DistributionProvider } from "./Distribution.ts";
|
|
2
3
|
export { Function, FunctionProvider } from "./Function.ts";
|
|
3
4
|
export { Invalidation, InvalidationProvider } from "./Invalidation.ts";
|
|
5
|
+
export { KeyGroup, KeyGroupProvider } from "./KeyGroup.ts";
|
|
4
6
|
export { KeyValueStore, KeyValueStoreProvider } from "./KeyValueStore.ts";
|
|
5
7
|
export { KvEntries, KvEntriesProvider } from "./KvEntries.ts";
|
|
6
8
|
export { KvRoutesUpdate, KvRoutesUpdateProvider } from "./KvRoutesUpdate.ts";
|
|
7
9
|
export { MANAGED_ALL_VIEWER_EXCEPT_HOST_HEADER_POLICY_ID, MANAGED_CACHING_DISABLED_POLICY_ID, MANAGED_CACHING_OPTIMIZED_POLICY_ID, } from "./ManagedPolicies.ts";
|
|
8
10
|
export { OriginAccessControl, OriginAccessControlProvider, } from "./OriginAccessControl.ts";
|
|
11
|
+
export { OriginRequestPolicy, OriginRequestPolicyProvider, } from "./OriginRequestPolicy.ts";
|
|
12
|
+
export { PublicKey, PublicKeyProvider } from "./PublicKey.ts";
|
|
13
|
+
export { ResponseHeadersPolicy, ResponseHeadersPolicyProvider, } from "./ResponseHeadersPolicy.ts";
|
|
9
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/AWS/CloudFront/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EACL,+CAA+C,EAC/C,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/AWS/CloudFront/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EACL,+CAA+C,EAC/C,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EACL,qBAAqB,EACrB,6BAA6B,GAC9B,MAAM,4BAA4B,CAAC"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
+
export { CachePolicy, CachePolicyProvider } from "./CachePolicy.js";
|
|
1
2
|
export { Distribution, DistributionProvider } from "./Distribution.js";
|
|
2
3
|
export { Function, FunctionProvider } from "./Function.js";
|
|
3
4
|
export { Invalidation, InvalidationProvider } from "./Invalidation.js";
|
|
5
|
+
export { KeyGroup, KeyGroupProvider } from "./KeyGroup.js";
|
|
4
6
|
export { KeyValueStore, KeyValueStoreProvider } from "./KeyValueStore.js";
|
|
5
7
|
export { KvEntries, KvEntriesProvider } from "./KvEntries.js";
|
|
6
8
|
export { KvRoutesUpdate, KvRoutesUpdateProvider } from "./KvRoutesUpdate.js";
|
|
7
9
|
export { MANAGED_ALL_VIEWER_EXCEPT_HOST_HEADER_POLICY_ID, MANAGED_CACHING_DISABLED_POLICY_ID, MANAGED_CACHING_OPTIMIZED_POLICY_ID, } from "./ManagedPolicies.js";
|
|
8
10
|
export { OriginAccessControl, OriginAccessControlProvider, } from "./OriginAccessControl.js";
|
|
11
|
+
export { OriginRequestPolicy, OriginRequestPolicyProvider, } from "./OriginRequestPolicy.js";
|
|
12
|
+
export { PublicKey, PublicKeyProvider } from "./PublicKey.js";
|
|
13
|
+
export { ResponseHeadersPolicy, ResponseHeadersPolicyProvider, } from "./ResponseHeadersPolicy.js";
|
|
9
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/AWS/CloudFront/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EACL,+CAA+C,EAC/C,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/AWS/CloudFront/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EACL,+CAA+C,EAC/C,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EACL,qBAAqB,EACrB,6BAA6B,GAC9B,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import * as ecs from "@distilled.cloud/aws/ecs";
|
|
2
|
+
import { Region } from "@distilled.cloud/aws/Region";
|
|
3
|
+
import type { Input } from "../../Input.ts";
|
|
4
|
+
import * as Provider from "../../Provider.ts";
|
|
5
|
+
import { Resource } from "../../Resource.ts";
|
|
6
|
+
import { AWSEnvironment, type AccountID } from "../Environment.ts";
|
|
7
|
+
import type { Providers } from "../Providers.ts";
|
|
8
|
+
import type { RegionID } from "../Region.ts";
|
|
9
|
+
export type CapacityProviderName = string;
|
|
10
|
+
export type CapacityProviderArn = `arn:aws:ecs:${RegionID}:${AccountID}:capacity-provider/${CapacityProviderName}`;
|
|
11
|
+
export interface CapacityProviderProps {
|
|
12
|
+
/**
|
|
13
|
+
* Capacity provider name. If omitted, a deterministic name is generated.
|
|
14
|
+
*
|
|
15
|
+
* Names beginning with `aws`, `ecs`, or `fargate` are reserved by AWS.
|
|
16
|
+
* Changing this triggers a replacement.
|
|
17
|
+
*/
|
|
18
|
+
name?: string;
|
|
19
|
+
/**
|
|
20
|
+
* ARN of the EC2 Auto Scaling Group that backs this capacity provider.
|
|
21
|
+
*
|
|
22
|
+
* Cannot be changed after creation; changing this triggers a replacement.
|
|
23
|
+
*/
|
|
24
|
+
autoScalingGroupArn: Input<string>;
|
|
25
|
+
/**
|
|
26
|
+
* Managed scaling configuration applied by ECS to the underlying ASG.
|
|
27
|
+
*/
|
|
28
|
+
managedScaling?: ecs.ManagedScaling;
|
|
29
|
+
/**
|
|
30
|
+
* Whether ECS protects in-use container instances from ASG scale-in.
|
|
31
|
+
* @default "DISABLED"
|
|
32
|
+
*/
|
|
33
|
+
managedTerminationProtection?: ecs.ManagedTerminationProtection;
|
|
34
|
+
/**
|
|
35
|
+
* Whether ECS sets container instances to DRAINING when terminated by ASG.
|
|
36
|
+
* @default "DISABLED"
|
|
37
|
+
*/
|
|
38
|
+
managedDraining?: ecs.ManagedDraining;
|
|
39
|
+
/**
|
|
40
|
+
* User-defined tags to apply to the capacity provider.
|
|
41
|
+
*/
|
|
42
|
+
tags?: Record<string, string>;
|
|
43
|
+
}
|
|
44
|
+
export interface CapacityProvider extends Resource<"AWS.ECS.CapacityProvider", CapacityProviderProps, {
|
|
45
|
+
capacityProviderArn: CapacityProviderArn;
|
|
46
|
+
name: CapacityProviderName;
|
|
47
|
+
status: ecs.CapacityProviderStatus;
|
|
48
|
+
updateStatus: ecs.CapacityProviderUpdateStatus | undefined;
|
|
49
|
+
autoScalingGroupArn: string;
|
|
50
|
+
managedScaling: ecs.ManagedScaling | undefined;
|
|
51
|
+
managedTerminationProtection: ecs.ManagedTerminationProtection | undefined;
|
|
52
|
+
managedDraining: ecs.ManagedDraining | undefined;
|
|
53
|
+
tags: Record<string, string>;
|
|
54
|
+
}, never, Providers> {
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* An Amazon ECS capacity provider backed by an EC2 Auto Scaling Group.
|
|
58
|
+
*
|
|
59
|
+
* Capacity providers are associated with one or more ECS clusters via
|
|
60
|
+
* {@link Cluster#capacityProviders} and are referenced by a service or task's
|
|
61
|
+
* capacity provider strategy.
|
|
62
|
+
*
|
|
63
|
+
* Only EC2 Auto Scaling Group-backed capacity providers are currently
|
|
64
|
+
* supported. The reserved AWS providers `FARGATE` and `FARGATE_SPOT` do not
|
|
65
|
+
* need to be created and can be referenced by name on a `Cluster` directly.
|
|
66
|
+
*
|
|
67
|
+
* @section Creating Capacity Providers
|
|
68
|
+
* @example ASG-Backed Capacity Provider
|
|
69
|
+
* ```typescript
|
|
70
|
+
* const provider = yield* CapacityProvider("AppCapacityProvider", {
|
|
71
|
+
* autoScalingGroupArn: asg.autoScalingGroupArn,
|
|
72
|
+
* managedScaling: {
|
|
73
|
+
* status: "ENABLED",
|
|
74
|
+
* targetCapacity: 80,
|
|
75
|
+
* minimumScalingStepSize: 1,
|
|
76
|
+
* maximumScalingStepSize: 10,
|
|
77
|
+
* },
|
|
78
|
+
* managedTerminationProtection: "ENABLED",
|
|
79
|
+
* });
|
|
80
|
+
*
|
|
81
|
+
* yield* Cluster("AppCluster", {
|
|
82
|
+
* capacityProviders: [provider.name],
|
|
83
|
+
* defaultCapacityProviderStrategy: [
|
|
84
|
+
* { capacityProvider: provider.name, weight: 1 },
|
|
85
|
+
* ],
|
|
86
|
+
* });
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* @section Adopting Existing Capacity Providers
|
|
90
|
+
* @example Adopt an existing provider
|
|
91
|
+
* ```typescript
|
|
92
|
+
* import { adopt } from "alchemy/AdoptPolicy";
|
|
93
|
+
*
|
|
94
|
+
* yield* CapacityProvider("AppCapacityProvider", {
|
|
95
|
+
* name: "existing-provider",
|
|
96
|
+
* autoScalingGroupArn: asg.autoScalingGroupArn,
|
|
97
|
+
* }).pipe(adopt());
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export declare const CapacityProvider: import("../../Resource.ts").ResourceClass<CapacityProvider>;
|
|
101
|
+
export declare const CapacityProviderProvider: () => import("effect/Layer").Layer<Provider.Provider<CapacityProvider>, never, import("effect/unstable/http/HttpClient").HttpClient | import("../../Stage.ts").Stage | import("../../Stack.ts").Stack | Region | import("@distilled.cloud/aws/Credentials").Credentials | AWSEnvironment>;
|
|
102
|
+
//# sourceMappingURL=CapacityProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CapacityProvider.d.ts","sourceRoot":"","sources":["../../../src/AWS/ECS/CapacityProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAKrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAC1C,MAAM,MAAM,mBAAmB,GAC7B,eAAe,QAAQ,IAAI,SAAS,sBAAsB,oBAAoB,EAAE,CAAC;AAEnF,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACnC;;OAEG;IACH,cAAc,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC;IACpC;;;OAGG;IACH,4BAA4B,CAAC,EAAE,GAAG,CAAC,4BAA4B,CAAC;IAChE;;;OAGG;IACH,eAAe,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC;IACtC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAiB,SAAQ,QAAQ,CAChD,0BAA0B,EAC1B,qBAAqB,EACrB;IACE,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,EAAE,GAAG,CAAC,sBAAsB,CAAC;IACnC,YAAY,EAAE,GAAG,CAAC,4BAA4B,GAAG,SAAS,CAAC;IAC3D,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,GAAG,CAAC,cAAc,GAAG,SAAS,CAAC;IAC/C,4BAA4B,EAAE,GAAG,CAAC,4BAA4B,GAAG,SAAS,CAAC;IAC3E,eAAe,EAAE,GAAG,CAAC,eAAe,GAAG,SAAS,CAAC;IACjD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B,EACD,KAAK,EACL,SAAS,CACV;CAAG;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,eAAO,MAAM,gBAAgB,6DAE5B,CAAC;AAEF,eAAO,MAAM,wBAAwB,2RAwNlC,CAAC"}
|