INTEGRITY Dokumentace

Přístup k soukromému segmentu S3

Tento příklad ukazuje, jak přistupovat k privátnímu S3 bucketu, který není vystaven veřejnému internetu. V tomto návodu nakonfigurujeme Workers VPC Service pro interní úložnou službu kompatibilní s S3, vytvoříme Worker, který na tento bucket posílá požadavky, a Worker nasadíme, abychom ověřili naše změny.

Předpoklady

1. Nastavte Cloudflare Tunnel

Cloudflare Tunnel vytváří zabezpečené připojení z vaší privátní sítě ke Cloudflare. Tento tunel umožní Workers bezpečný přístup k vašim privátním prostředkům.

  1. Přejděte na Dashboard Workers VPC ↗ a vyberte Tunnels kartě.

  2. Vyberte Vytvořit pro vytvoření nového tunelu.

  3. Zadejte název tunelu (například s3-tunnel) a vyberte Uložit tunel.

  4. Vyberte svůj operační systém a architekturu. Dashboard vám poskytne konkrétní instalační pokyny pro vaše prostředí.

  5. Podle uvedených příkazů stáhněte a nainstalujte cloudflared na vašem virtuálním počítači a spusťte instalační příkaz služby s vaším unikátním tokenem.

Dashboard potvrdí, jakmile se váš tunel úspěšně připojí. Poznamenejte si ID tunelu pro další krok.

2. Vytvořte Workers VPC Service

Nejprve vytvořte službu Workers VPC Service pro své interní úložiště S3:

npx wrangler vpc service create s3-storage \
  --type http \
  --tunnel-id <YOUR_TUNNEL_ID> \
  --hostname s3.us-west-2.amazonaws.com

Workers VPC Service můžete vytvořit také pomocí IP adresy (například pokud používáte MinIO):

npx wrangler vpc service create s3-storage \
  --type http \
  --tunnel-id <YOUR_TUNNEL_ID> \
  --ipv4 10.0.1.60 \
  --http-port 9000

Poznamenejte si ID služby vrácené pro další krok.

3. Nakonfigurujte zásady segmentu S3

Nakonfigurujte S3 bucket tak, aby umožňoval anonymní přístup z vašeho VPC endpointu. To funguje pro nešifrované objekty S3:

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Sid": "AllowAnonymousAccessFromVPCE",
			"Effect": "Allow",
			"Principal": "*",
			"Action": ["s3:GetObject", "s3:ListBucket"],
			"Resource": [
				"arn:aws:s3:::your-bucket-name",
				"arn:aws:s3:::your-bucket-name/*"
			],
			"Condition": {
				"StringEquals": {
					"aws:sourceVpce": "vpce-your-endpoint-id"
				}
			}
		}
	]
}

Přímé testování přístupu k S3

Přístup k S3 můžete otestovat přímo z VM, na kterém běží váš Cloudflare Tunnel, a ověřit tak, že zásada bucketu funguje správně. Tyto příkazy by měly fungovat bez jakýchkoli přihlašovacích údajů AWS:

# Test listing bucket contents
curl -i https://s3.us-west-2.amazonaws.com/your-bucket-name/

# Test downloading a specific file
curl -i https://your-bucket-name.s3.us-west-2.amazonaws.com/test-file.txt

4. Nakonfigurujte svůj Worker

Upravte konfigurační soubor Wrangler:

{
	"$schema": "./node_modules/wrangler/config-schema.json",
	"name": "private-s3-gateway",
	"main": "src/index.js",
	// Set this to today's date
	"compatibility_date": "2026-08-28",
	"vpc_services": [
		{
			"binding": "S3_STORAGE",
			"service_id": "<YOUR_SERVICE_ID>"
		}
	]
}
"$schema" = "./node_modules/wrangler/config-schema.json"
name = "private-s3-gateway"
main = "src/index.js"
# Set this to today's date
compatibility_date = "2026-08-28"

[[vpc_services]]
binding = "S3_STORAGE"
service_id = "<YOUR_SERVICE_ID>"

5. Implementujte Worker

Ve svém kódu Workers použijte binding Workers VPC Service k odesílání požadavků do služby:

index.js
export default {
	async fetch(request, env, ctx) {
		try {
			// Fetch a file from the private S3 bucket via VPC endpoint
			const response = await env.S3_STORAGE.fetch("https://s3.us-west-2.amazonaws.com/my-bucket/data.json");

			// Use the response from S3 to perform more logic in Workers, before returning the final response
			return response;
		} catch (error) {
			return new Response("Storage unavailable", { status: 503 });
		}
	},
};

Tento návod ukazuje, jak byste mohli z vašich Workerů přistupovat k privátnímu úložišti objektů. Pomocí Workers VPC Services můžete soubory stahovat přímo a upravovat odpovědi, což vám umožní na Workers budovat rozsáhlejší full-stack a backendovou funkcionalitu.

6. Nasaďte a otestujte

Nyní můžete nasadit a otestovat Worker, který jste vytvořili:

npx wrangler deploy
# Test GET request
curl https://private-s3-gateway.workers.dev

Další kroky