Własny magazyn · WordPress + WooCommerce
WooCommerce AWS S3
Wtyczka Alter Product zawiera gotowy moduł magazynu AWS S3. Zapisuj obsługiwane grupy plików wtyczki we własnym prywatnym buckecie, połącz go w WordPressie i przenieś istniejące pliki narzędziami migracji.
Alter Product nie pobiera dodatkowej opłaty za zwiększanie pojemności tego podłączonego magazynu. AWS rozlicza przechowywanie, żądania i transfer na Twoim koncie. Nadal obowiązują koszty hostingu WordPressa oraz zwykłe zasady planu i sesji embed.
Instrukcja odpowiada przewodnikowi we wtyczce. Nazwy pól konsoli AWS pozostają po angielsku.
Magazyn, dostarczanie plików i koszty
S3 przechowuje obiekty plików wtyczki. WordPress nadal odpowiada za uprawniony dostęp i wysyłanie plików do przeglądarki.
Prywatny magazyn dla wtyczki
Przeglądarka nie pobiera plików bezpośrednio z S3. WordPress pobiera i weryfikuje pliki z prywatnego bucketu, a następnie wydaje je przez własne endpointy. Pozostaw CORS w S3 puste oraz Block Public Access włączone. To nie jest publiczny bucket ani bezpośrednie połączenie z CDN.
Moduł obejmuje obsługiwane grupy plików Alter Product. Podłączenie bucketu nie przenosi wszystkich plików WordPressa i nie zmienia limitów osadzonych narzędzi.

Płać AWS za wykorzystane zasoby
Alter Product nie nalicza dodatkowej opłaty za zwiększanie pojemności podłączonego bucketu. Opłaty AWS zależą od użycia, regionu i klasy przechowywania. Sprawdź aktualny cennik S3 zamiast zakładać stałą stawkę.
Ponieważ pliki wydaje WordPress, ruch może również zużywać transfer hostingu. S3 nie oznacza zerowego transferu hostingu ani nieograniczonej przepustowości serwera. Transfer obejmuje pliki i wspólne modele pobierane z Alter. JS/CSS/WASM nie pomniejsza limitu transferu. Twoje pliki udostępniane z własnego hostingu lub S3 są wyłączone.
Utwórz bucket z obsługiwanymi ustawieniami
Poniższe nazwy pól odpowiadają angielskiej konsoli AWS oraz instrukcji wbudowanej we wtyczkę.
Utwórz bucket ogólnego przeznaczenia
Zaloguj się do AWS, otwórz Amazon S3 i wybierz General purpose buckets → Create bucket. Wybierz region oraz nazwę z małych liter, cyfr i myślników, bez kropek. Skopiuj pełną nazwę bucketu, łącznie z końcówką dodaną przez AWS.
- Zastosuj ustawienia z tabeli i kliknij Create bucket.
- Zachowaj pełną nazwę, region oraz 12-cyfrowy identyfikator konta AWS właściciela bucketu.
- Pozostaw Cross-origin resource sharing (CORS) puste. Z S3 łączy się serwer WordPress.
| Pole w AWS | Ustawienie |
|---|---|
| Bucket type | General purpose |
| Bucket namespace | Account Regional namespace (zalecane) |
| Object Ownership | ACLs disabled / Bucket owner enforced |
| Block Public Access | Block all public access (wszystkie cztery ustawienia) |
| Bucket Versioning | Enable |
| Default encryption | Server-side encryption with Amazon S3 managed keys (SSE-S3 / AES256) |
| Bucket Key | Disable |
| Advanced settings → Object Lock | Disable |
Wymuś HTTPS
Dodaj regułę transportu bez upubliczniania bucketu i nadawania dostępu do obiektów.
Dodaj politykę bucketu
Otwórz Permissions → Bucket policy → Edit. Zastąp oba wystąpienia EXAMPLE-BUCKET pełną nazwą bucketu. Jeśli polityka już istnieje, zachowaj jej reguły i dodaj tę po sprawdzeniu całego dokumentu.
- Sprawdź komunikaty edytora i kliknij Save changes.
- Potwierdź zapis reguły. Pozostaw Block all public access włączone.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyInsecureTransport",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::EXAMPLE-BUCKET",
"arn:aws:s3:::EXAMPLE-BUCKET/*"
],
"Condition": {
"Bool": {
"aws:SecureTransport": "false",
"aws:PrincipalIsAWSService": "false"
}
}
}
]
}Przygotuj ograniczone uprawnienia IAM
Użyj osobnej polityki dla tego bucketu i prefiksu zamiast AdministratorAccess lub AmazonS3FullAccess.
Utwórz politykę wtyczki
W IAM → Policies → Create policy → JSON wklej poniższy dokument. Zastąp każde EXAMPLE-BUCKET pełną nazwą bucketu. Prefiks alter-product musi odpowiadać Folder prefix w WordPressie; przy innym prefiksie zmień go w każdym Resource dotyczącym obiektów.
- Sprawdź politykę, kliknij Next i nadaj nazwę, np. AlterProductS3Storage.
- Kliknij Create policy i zachowaj nazwę do konfiguracji użytkownika.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ReadRequiredBucketControls",
"Effect": "Allow",
"Action": [
"s3:GetBucketVersioning",
"s3:GetBucketOwnershipControls",
"s3:GetBucketPublicAccessBlock",
"s3:GetEncryptionConfiguration"
],
"Resource": "arn:aws:s3:::EXAMPLE-BUCKET"
},
{
"Sid": "WriteAndReadVersionedPluginObjects",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::EXAMPLE-BUCKET/alter-product/objects/*",
"arn:aws:s3:::EXAMPLE-BUCKET/alter-product/.storage-tests/*"
]
},
{
"Sid": "RecoverJournalOwnedObjects",
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::EXAMPLE-BUCKET/alter-product/objects/*"
},
{
"Sid": "DeleteOnlyConnectionTestVersions",
"Effect": "Allow",
"Action": "s3:DeleteObjectVersion",
"Resource": "arn:aws:s3:::EXAMPLE-BUCKET/alter-product/.storage-tests/*"
}
]
}Utwórz osobnego użytkownika i klucz
Wybierz IAM → Users → Create user. Pozostaw Provide user access to the AWS Management Console niezaznaczone.
- Wybierz Next → Attach policies directly i przypisz tylko powyższą politykę. Dokończ Create user.
- Otwórz Security credentials → Access keys → Create access key tego użytkownika. Dla tej ręcznej konfiguracji wybierz Other → Next, a następnie Create access key.
- Zachowaj Access key ID i Secret access key w menedżerze haseł. Sekret jest pokazywany tylko raz. Wpisz klucze bezpośrednio w WordPressie przez HTTPS, nie w wiadomościach ani screenshotach.
Zapisz i przetestuj połączenie w WordPressie
W panelu sklepu otwartym przez HTTPS przejdź do Alter Product → Settings → Storage. Wybierz AWS S3 i + / Add connection.
Uzupełnij dane połączenia
Wybierz New connection. Ta sama instrukcja jest dostępna pod AWS S3 setup guide.
- Kliknij Save connection i poczekaj na potwierdzenie.
- Kliknij Test connection. Zapisz zmiany pól przed ponownym testem.
- Sprawdź wynik w oknie oraz kolumnie Last connection test. Puste pola kluczy po zapisaniu są zamierzone.
| Pole | Wartość |
|---|---|
| Bucket name | Pełna nazwa bucketu, bez ARN, s3:// i adresu HTTPS; bez kropek. |
| Folder prefix | alter-product, zgodnie z IAM. Litery, cyfry, myślniki, podkreślenia i oddzielone katalogi; bez ukośnika na początku i końcu. |
| Bucket owner AWS account ID | 12-cyfrowy identyfikator konta właściciela, bez spacji. |
| AWS region | Rzeczywisty region bucketu. Formularz domyślnie wskazuje eu-central-1. |
| AWS access key ID / AWS secret access key | Zachowana para kluczy dedykowanego użytkownika IAM. |
| Use temporary AWS credentials | Niezaznaczone dla stałego klucza tego użytkownika IAM. Włącz tylko dla tymczasowych poświadczeń i podaj AWS session token. |
Jeżeli test się nie powiedzie
Sprawdź nazwę bucketu, właściciela, region, wymagane ustawienia i dokładny prefiks w WordPressie oraz IAM. Pozostaw CORS puste; nie wyłączaj blokady publicznego dostępu.
Zapisany bucket, prefiks, właściciel i region określają tożsamość połączenia. Dla innego miejsca wybierz New connection. Edit → Reconnect wymienia poświadczenia, zachowując istniejące odwołania plików.
Przekaż pomocy wynik testu bez kluczy. Pozytywny test jest wymagany przed ustawieniem S3 jako domyślnego magazynu.
Ustaw domyślny magazyn i migruj istniejące pliki
Domyślny magazyn i migracja to osobne działania.
Używaj S3 dla nowych grup
Kliknij Make default w wierszu zapisanego połączenia. Wtyczka testuje połączenie i zmienia domyślny magazyn tylko po sukcesie. Dotyczy to nowych grup plików; istniejące grupy i ich kolejne rewizje zachowują zapisane miejsce do czasu migracji.
Przenieś obsługiwane istniejące grupy
Przed pierwszą migracją zachowaj wspólną kopię bazy, salts WordPressa i plików. Zacznij od środowiska testowego lub małej grupy. Otwórz Migrate w wierszu docelowego S3; samo otwarcie panelu nie kopiuje plików.
Auto migration obejmuje obsługiwane grupy poza wybranym celem. Nie oznacza migracji pozostałych plików WordPressa.
- Kliknij Start migration. Wtyczka testuje S3, przygotowuje grupę, kopiuje ją, weryfikuje i przełącza odwołania.
- Pozostaw stronę otwartą. Pause zatrzymuje po bieżącej grupie, a Resume migration wznawia zapisany postęp. Po zamknięciu strony otwórz ją ponownie, aby wznowić wykonywanie kolejnych kroków.
- Przy błędzie grupy sprawdź komunikat i Advanced, usuń przyczynę i wznów. Nie ponawiaj w ciemno operacji z niepewnym wynikiem wysyłki.
- Po Migration completed sprawdź zwykły odczyt, edycję, podglądy i pliki zamówień. Grupy powstałe podczas skanowania mogą wymagać kolejnego przebiegu.
Usunięcie wiersza nie usuwa plików
W razie potrzeby najpierw przełącz domyślny magazyn. Remove wycofuje połączenie z listy, ale istniejące pliki i zapisane poświadczenia pozostają dostępne. Nie jest to polecenie usuwania obiektów z AWS.
Wspólny magazyn dla kilku węzłów WordPressa
Wspólny cel S3 może zmniejszyć zależność od dysku jednego węzła. Load balancer nadal wymaga prawidłowo współdzielonej instalacji WordPressa.
Warunki pracy kilku węzłów
Dla jednej instalacji WordPressa za load balancerem zapewnij łącznie:
- Jeden spójny zapis do SQL i wspólny stan bazy wtyczki.
- Współdzielony katalog uploads dla plików nadal przechowywanych lokalnie i zachowanych źródeł migracji.
- Te same oryginalne salts WordPressa na każdym węźle, aby odczytywać poświadczenia i zaszyfrowane pliki.
- Prywatny katalog tymczasowy na każdym węźle do pracy przy transferach.
- Spójną konfigurację wtyczki i dostęp do tego samego prywatnego bucketu oraz wersji obiektów S3.
- Używaj standardowego wpdb z natywnym mysqli i tabelami InnoDB. Dodatki routujące bazę, takie jak HyperDB, nie są obsługiwane; równoważenie obciążenia dotyczy tu warstwy HTTP.
Zachowaj możliwość odtworzenia i rotacji kluczy
Przechowuj bazę, salts i wskazywane wersje plików jako spójną całość.
Kopie, ponowne połączenie i weryfikacja
Użyj Edit → Reconnect do wymiany poświadczeń tego samego zapisanego połączenia. Zanim wycofasz stary klucz, sprawdź bieżące i historyczne pliki, także inne zapisane połączenia używające tych kluczy.
Pozostaw wersjonowanie S3 włączone i zachowuj wersje wskazywane przez wtyczkę. Nie stosuj reguł lifecycle usuwających potrzebne historyczne wersje. Sprawdź wspólne odtwarzanie bazy, salts i plików.
Tymczasowe poświadczenia wygasają i wymagają nowego ważnego tokenu oraz kluczy; wtyczka nie odnawia ich automatycznie. Monitoruj wykorzystanie AWS oraz transfer hostingu wraz z rozwojem sklepu.