Zum Inhalt springen

Quack bereitstellen

Diese Seite sammelt Deployment-Rezepte für einen öffentlich erreichbaren Quack-Server. Derzeit gibt es ein Rezept (AWS EC2); weitere folgen mit der Zeit.

Auf AWS EC2

Der schnellste Weg zu einem öffentlich erreichbaren Quack-Server ist das One-Click-AWS-CloudFormation-Template, das zusammen mit der Erweiterung gepflegt wird. Es stellt eine kleine EC2-Instanz bereit, auf der DuckDB und die Quack-Erweiterung hinter nginx und Let’s-Encrypt-TLS laufen. Als Ausgabe liefert es das instanzspezifische Token und die Verbindungs-URI.

One-Click-Start

  1. Öffnen Sie die Launch-Stack-URL.
  2. Klicken Sie unten rechts auf Create stack.
  3. Warten Sie etwa zwei Minuten auf CREATE_COMPLETE.
  4. Öffnen Sie den Tab Outputs des Stacks.
  5. Klicken Sie auf den Wert ConnectURL, um eine shell.duckdb.org-Sitzung zu öffnen, die bereits mit der neuen Instanz verdrahtet ist, oder kopieren Sie QuackURI und Token, um sich aus einer lokalen DuckDB-Sitzung zu verbinden (siehe unten).

Der Stack verwendet standardmäßig eine Instanz t3.micro; andere Größen sind auf der Parameters-Seite beim Start wählbar. Unterstützte Regionen: us-east-1, us-east-2, us-west-1, us-west-2, eu-west-1, eu-central-1, ap-northeast-1, ap-southeast-1.

Aus einer lokalen DuckDB verbinden

Kopieren Sie QuackURI und Token aus dem Tab Outputs des Stacks und setzen Sie sie unten ein:

-- Register the credentials once per session.
CREATE SECRET quack_credentials (
TYPE quack,
SCOPE '⟨uri⟩', -- e.g., 'quack:54.1.2.3.nip.io:443'
TOKEN '⟨token⟩'
);
-- Who did I just launch?
FROM quack_query('⟨uri⟩', 'FROM whoami()');
-- Anything else you'd normally run, shipped verbatim to the remote.
FROM quack_query('⟨uri⟩', 'SELECT 1 + 1');

Haftende Sitzung über ATTACH

ATTACH behält serverseitigen Zustand (temporäre Tabellen, SET-Variablen) über Aufrufe hinweg, was quack_query allein nicht tut.

ATTACH '⟨uri⟩' AS remote (TYPE quack);
-- Temp table lives on the remote.
FROM quack_query_by_name('remote', 'CREATE TEMP TABLE t AS SELECT range AS x FROM range(10)');
FROM quack_query_by_name('remote', 'SELECT sum(x) FROM t');
-- Session settings stick.
FROM quack_query_by_name('remote', 'SET threads = 8');
FROM quack_query_by_name('remote', 'SELECT current_setting(''threads'')');

Abbauen

Wenn Sie mit der Instanz fertig sind, löschen Sie den Stack:

Terminal window
aws cloudformation delete-stack --stack-name quack-demo --region us-east-1

Oder nutzen Sie die Schaltfläche Delete in der CloudFormation-Konsole.

Was der Stack bereitstellt

  • Eine AWS::EC2::Instance aus einem öffentlichen AMI (regionspezifische Zuordnung im Template) mit DuckDB und der Quack-Erweiterung hinter nginx und Let’s-Encrypt-TLS.
  • Eine AWS::EC2::SecurityGroup, die die Ports 80 (ACME-Challenge) und 443 (HTTPS) öffnet.
  • Eine AWS::CloudFormation::WaitCondition, die die Instanz signalisiert, sobald der RPC-Server bereit ist.
  • CFN-Outputs mit der fertigen URI, dem instanzspezifischen Token und zwei teilbaren shell.duckdb.org-URLs (QueryURL, ConnectURL).

Für Maintainer

Das CloudFormation-Template, der AMI-Buildprozess und die regionsweise AMI-Veröffentlichung liegen unter duckdblabs/duckdb-quack-infra. AMI-Updates oder die Erweiterung der unterstützten Regionenlisten geschehen dort.