|
1 | | -import { lakeCluster, tableBucket } from "./lake" |
2 | 1 | import { EMAILOCTOPUS_API_KEY } from "./app" |
3 | 2 | import { domain } from "./stage" |
4 | 3 |
|
5 | | -//////////////// |
6 | | -// LAKE |
7 | | -//////////////// |
8 | | - |
9 | | -const inferenceNamespace = new aws.s3tables.Namespace("LakeInferenceNamespace", { |
10 | | - namespace: "inference", |
11 | | - tableBucketArn: tableBucket.arn, |
12 | | -}) |
13 | | - |
14 | | -new aws.s3tables.Table( |
15 | | - "LakeInferenceEventTable", |
16 | | - { |
17 | | - name: "event", |
18 | | - namespace: inferenceNamespace.namespace, |
19 | | - tableBucketArn: inferenceNamespace.tableBucketArn, |
20 | | - format: "ICEBERG", |
21 | | - metadata: { |
22 | | - iceberg: { |
23 | | - schema: { |
24 | | - fields: [ |
25 | | - { name: "event_timestamp", type: "string", required: false }, |
26 | | - { name: "event_date", type: "string", required: false }, |
27 | | - { name: "event_type", type: "string", required: false }, |
28 | | - { name: "dataset", type: "string", required: false }, |
29 | | - { name: "cf_continent", type: "string", required: false }, |
30 | | - { name: "cf_country", type: "string", required: false }, |
31 | | - { name: "cf_city", type: "string", required: false }, |
32 | | - { name: "cf_region", type: "string", required: false }, |
33 | | - { name: "cf_latitude", type: "double", required: false }, |
34 | | - { name: "cf_longitude", type: "double", required: false }, |
35 | | - { name: "cf_timezone", type: "string", required: false }, |
36 | | - { name: "duration", type: "double", required: false }, |
37 | | - { name: "request_length", type: "long", required: false }, |
38 | | - { name: "status", type: "int", required: false }, |
39 | | - { name: "ip", type: "string", required: false }, |
40 | | - { name: "is_stream", type: "boolean", required: false }, |
41 | | - { name: "session", type: "string", required: false }, |
42 | | - { name: "request", type: "string", required: false }, |
43 | | - { name: "client", type: "string", required: false }, |
44 | | - { name: "user_agent", type: "string", required: false }, |
45 | | - { name: "model", type: "string", required: false }, |
46 | | - { name: "model_tier", type: "string", required: false }, |
47 | | - { name: "model_variant", type: "string", required: false }, |
48 | | - { name: "source", type: "string", required: false }, |
49 | | - { name: "provider", type: "string", required: false }, |
50 | | - { name: "provider_model", type: "string", required: false }, |
51 | | - { name: "llm_error_code", type: "int", required: false }, |
52 | | - { name: "llm_error_message", type: "string", required: false }, |
53 | | - { name: "error_response", type: "string", required: false }, |
54 | | - { name: "error_type", type: "string", required: false }, |
55 | | - { name: "error_message", type: "string", required: false }, |
56 | | - { name: "error_cause", type: "string", required: false }, |
57 | | - { name: "error_cause2", type: "string", required: false }, |
58 | | - { name: "api_key", type: "string", required: false }, |
59 | | - { name: "workspace", type: "string", required: false }, |
60 | | - { name: "user_id", type: "string", required: false }, |
61 | | - { name: "is_subscription", type: "boolean", required: false }, |
62 | | - { name: "subscription", type: "string", required: false }, |
63 | | - { name: "response_length", type: "long", required: false }, |
64 | | - { name: "time_to_first_byte", type: "long", required: false }, |
65 | | - { name: "timestamp_first_byte", type: "long", required: false }, |
66 | | - { name: "timestamp_last_byte", type: "long", required: false }, |
67 | | - { name: "tokens_input", type: "long", required: false }, |
68 | | - { name: "tokens_output", type: "long", required: false }, |
69 | | - { name: "tokens_reasoning", type: "long", required: false }, |
70 | | - { name: "tokens_cache_read", type: "long", required: false }, |
71 | | - { name: "tokens_cache_write_5m", type: "long", required: false }, |
72 | | - { name: "tokens_cache_write_1h", type: "long", required: false }, |
73 | | - { name: "cost_input_microcents", type: "long", required: false }, |
74 | | - { name: "cost_output_microcents", type: "long", required: false }, |
75 | | - { name: "cost_cache_read_microcents", type: "long", required: false }, |
76 | | - { name: "cost_cache_write_microcents", type: "long", required: false }, |
77 | | - { name: "cost_total_microcents", type: "long", required: false }, |
78 | | - { name: "cost_input", type: "long", required: false }, |
79 | | - { name: "cost_output", type: "long", required: false }, |
80 | | - { name: "cost_cache_read", type: "long", required: false }, |
81 | | - { name: "cost_cache_write_5m", type: "long", required: false }, |
82 | | - { name: "cost_cache_write_1h", type: "long", required: false }, |
83 | | - { name: "cost_total", type: "long", required: false }, |
84 | | - ], |
85 | | - }, |
86 | | - }, |
87 | | - }, |
88 | | - }, |
89 | | - { deleteBeforeReplace: $app.stage !== "production", ignoreChanges: ["metadata"] }, |
90 | | -) |
| 4 | +// Keep the deployed names and arguments: the R2 stats sync still uses this VPC |
| 5 | +// and cluster after the legacy lake is removed. |
| 6 | +const lakeVpc = new sst.aws.Vpc("LakeVpc") |
| 7 | +const lakeCluster = new sst.aws.Cluster("LakeCluster", { vpc: lakeVpc }) |
91 | 8 |
|
92 | 9 | //////////////// |
93 | 10 | // DATABASE |
|
0 commit comments