@alchemy.run/gcp (英语)
谷歌云为 炼金术. 宣告云跑, Firestore, Pub/Sub, BigQuery, 秘密管理器, 以及更多使用它们的代码的同类型脚本程序. 装订让你扮演IAM的角色.
npm install alchemy @alchemy.run/gcp effect
Cloud Run 函数宣布一个 Firestore 数据库并将其绑定:
// src/api.ts
import * as GCP from "@alchemy.run/gcp";
import * as Effect from "effect/Effect";
import * as HttpServerResponse from "effect/http/HttpServerResponse";
export default class Api extends GCP.Function<Api>()(
"Api",
{ main: import.meta.url, location: "us-central1" },
Effect.gen(function* () {
const links = yield* GCP.Firestore.Database("Links", {
location: "us-central1",
type: "FIRESTORE_NATIVE",
});
// Grants the role on the service's own service account.
const db = yield* GCP.Firestore.ReadWriteDatabase(links);
return {
fetch: Effect.gen(function* () {
yield* db.set("links/demo", { url: "https://alchemy.run" });
const link = yield* db.get("links/demo");
return yield* HttpServerResponse.json(link?.fields ?? {});
}).pipe(Effect.orDie),
};
}).pipe(Effect.provide(GCP.Firestore.ReadWriteDatabaseHttp)),
) {}
堆栈部署它:
// alchemy.run.ts
import * as Alchemy from "alchemy";
import * as GCP from "@alchemy.run/gcp";
import * as Effect from "effect/Effect";
import Api from "./src/api.ts";
export default Alchemy.Stack(
"MyApp",
{
providers: GCP.providers(),
state: Alchemy.localState(),
},
Effect.gen(function* () {
const api = yield* Api;
return { url: api.uri };
}),
);