Ga naar hoofdinhoud

WP Media Folder Addon: Amazon S3-integratie

1. Inloggen op Amazon S3 vanuit WP Media Folder

Ga terug naar de WordPress Thing dashboard en klik op het menu Instellingen > WP Media Folder > Cloud > Media offloaden > Amazon S3. Plak het volgende in de formuliervelden:

  • Toegangssleutel-ID
  • Geheime toegangssleutel

 

invoersleutel

 

Daarna sla je de instellingen op en de verbinding zou succesvol moeten zijn. Ga naar de volgende stap om de AWS S3-functies te ontdekken.

 

2. Hoe werkt het? Wat kan ik doen met Amazon S3?

Hoe werkt het?

Zodra je WP Media Folder hebt verbonden met Amazon S3, selecteer dan een bucket of maak een nieuwe aan waar al je gegevens worden opgeslagen.

 

bucket-aanmaken

 

Je kunt Kopiëren naar Amazon S3 optie inschakelen, en al je nieuw geüploade media worden naar Amazon S3 verzonden.

 

kopieer-naar-aws

 

Als je je geüploade media wilt synchroniseren voordat je de Amazon S3-integratie gebruikt, klik dan op Media synchroniseren knop. Vervolgens wordt je volledige bestaande mediabibliotheek naar je S3-bucket verzonden.

Opmerking: Wanneer u deze actie uitvoert, wordt de URL van uw media vervangen door de Amazon S3 URL. Zie het voorbeeld hieronder.
Van https://joomunited.com/wp-content/uploads/2019/02/image.jpg naar >> https://s3.amazonaws.com/{bucket}/wp-media-folder-joomunited/wp-content/uploads/2019/02/image.jpg

Mapstructuur op Amazon S3: Voer een aangepast pad in waar offloaded bestanden worden opgeslagen in uw S3 bucket.

Om de media op uw site offloaden, moet u Verwijderen na upload optie inschakelen, uw mediabibliotheek wordt volledig opgeslagen op Amazon S3 in plaats van op uw server.

 

offload-media-amazon-s3

 

Door het inschakelen van Bijlage‑label optie, wordt de informatie over elk medium weergegeven wanneer je met de muis over het aws3‑label rechtsboven zweeft.

 

amazon-label

 

Wanneer je de locatie van je media wilt wijzigen of de plugin wilt verwijderen, klik dan op Media van Amazon S3 ophalen knop, worden al je media gekopieerd van Amazon naar je mediabibliotheek. Alle eerder toegevoegde links in je inhoud blijven behouden (geen gebroken link).

 

retrieve-aws

 

Opmerking: u kunt alleen bestanden van S3 naar de mediabibliotheek synchroniseren als ze via onze plug‑in zijn geüpload.

Hoe CloudFront te verbinden?

Cloudfront is geïntegreerd met onze plug‑in. Om een aangepast domein (CNAME) te maken, navigeert u eerst op het Amazon-dashboard naar Services > CloudFront of ga naar deze link.

 

cloudfront-menu

 

Vanaf hier klikt u op Maak distributie knop in de rechterhoek.

 

create-distribution-button

 

Plak vervolgens uw domein in het Origin-domein veld. Als uw domein is: "https://s3-us-west-1.amazonaws.com/joom-united" gelieve te wijzigen naar "https://joom-united.s3-us-west-1.amazonaws.com"

 

create-distribution

 

Op Standaard cachegedrag > Cache‑sleutel en origin‑verzoeken sectie, selecteert Legacy cache‑instellingen optie. Daarna, scroll naar beneden tot onderaan en klik op Maak distributie knop.

 

legacy-cache-instelling

 

Vervolgens gaat het naar distributiedetails, kopieer de domeinnaam van de distributie. Ga naar de Amazon‑instelling in WP Media Folder en plak deze in de Aangepaste domein (CNAME) veld.

 

kopieer-distributie

 

Wacht alstublieft een paar minuten totdat de afbeelding volledig is geladen wanneer het veld Laatst gewijzigd verandert van "Deploying" naar de huidige datum en tijd.

Uiteindelijk kunt u de wijzigingen zien in Bestands-URL veld in elke afbeelding.

 

file-url-cdn-s3

 

Geavanceerde instellingen en acties

U kunt een bucket selecteren om mappen en bestanden van de S3-server naar uw mediabibliotheek te importeren. Of kopieer alle bestanden van de ene bucket naar de andere.

 

copy-buckets

 

3. Maak een IAM-gebruiker aan


De Amazon S3-integratie met WP Media Folder is inbegrepen in de Add-on. Je moet deze add-on (plugin) installeren naast WP Media Folder. De add-on bevat ook integratie voor Google Drive, Google Foto, Dropbox en OneDrive.

Eerst moet je inloggen op Amazon Console of je aanmelden als je don't een AWS S3-account hebt.

Zodra u bent ingelogd op de console, moet u een nieuwe IAM-gebruiker aanmaken. Ga dan naar de IAM-gebruikerspagina in de AWS-console, klik op de knop Gebruiker toevoegen.

Stap 1: voer een naam in voor de gebruiker, klik vervolgens op de Volgende knop.

 

maak-gebruiker

 

Stap 2: Om de nieuwe gebruiker toe te staan buckets en objecten in de S3-service te beheren, moet u specifieke rechten verlenen. Klik op de “Beleid direct koppelen” knop, en voer vervolgens “S3” in het filterbeleid invoerveld in. Selecteer de “AmazonS3FullAccess” beleid, klik dan op de Volgende knop.

 

gebruiker-permissie

 

Stap 3: Als alles er goed uitziet, klik dan op de Gebruiker aanmaken knop.

 

beoordeling-gebruiker

 

Maak een toegangssleutel aan

Na het succesvol aanmaken van een nieuwe gebruiker, moet je navigeren naar Access management > Users > {select a user} > Security credentials tab.

 

beveiligingsreferenties

 

Scroll vervolgens naar beneden bij Access keys sectie, en klik op Create access key knop.

 

maak-toegangssleutel

 

Bij stap 1: Beste praktijken & alternatieven voor toegangssleutel, selecteer Applicatie die buiten AWS draait optie. Klik vervolgens op Volgende knop.

 

stap1-creeer-sleutel

 

Vervolgens stap 2: geef een naam aan de beschrijving in het veld. Klik vervolgens op Create access key knop.

 

stap2-naam-sleutel

 

Uiteindelijk wordt een scherm voor het ophalen van toegangssleutels weergegeven met beveiligingsreferenties voor de gebruiker, die bestaan uit een Toegangssleutel-ID en een geheime toegangssleutel. Amazon zal deze niet opnieuw tonen, dus download ze alstublieft als een .csv en kopieer ze ook ergens veilig. Als u ze verliest, kunt u altijd een nieuwe set sleutels maken vanuit de console, maar u kunt de geheime sleutel later niet meer ophalen.

 

step3-retrieve-access-key

 

Maak een bucket aan

Om Amazon S3 te gebruiken, moet u een nieuwe bucket aanmaken. Ga naar het bucket‑gebied: https://s3.console.aws.amazon.com/s3/buckets. Klik vervolgens op Bucket aanmaken knop.

 

bucket-aanmaken

 

In de Algemene configuratie, voert u de bucketnaam in, selecteert u een AWS‑regio, en in de Objecteigendom sectie selecteert u ACL’s ingeschakeld > Objectschrijver optie.

 

name-bucket

 

In de instellingen voor Block Public Access voor deze bucket sectie, deselecteer de optie: "Alle openbare toegang blokkeren" en selecteer de optie: "Ik erken dat de huidige..." zoals op de afbeelding hieronder.

 

block-public-access-s3

 

Laat vervolgens alle overige opties op standaard staan, en klik op Bucket aanmaken knop.

 

final-step-create-bucket

 

Ten slotte moet er een nieuwe bucket succesvol worden aangemaakt met de status van Toegangs kolom: "Objecten kunnen openbaar zijn".

 

created-new-bucket

 

Of u kunt een nieuwe bucket maken in WP Media Folder-instellingen. Navigeer naar menu Instellingen > WP Media Folder > Cloud > Offload Media > Amazon S3, klik op Bucketinstellingen en selectie knop. Onderaan de pop‑up, voer de bucketnaam in en klik op Aanmaken knop.

 

maak-bucket-wp

 

Duplicate entry 'cc46bdf9d2ec3413199a4ce0a0d95031-nl' for key 'bk24_linguise_urls.hash_translation' (500 Whoops, looks like something went wrong.)

mysqli_sql_exception

HTTP 500 Whoops, looks like something went wrong.

Duplicate entry 'cc46bdf9d2ec3413199a4ce0a0d95031-nl' for key 'bk24_linguise_urls.hash_translation'

Exception

mysqli_sql_exception

Show exception properties
mysqli_sql_exception {#896
  #sqlstate: "23000"
}
  1. foreach ($urls as $translation => $source) {
  2. $elements[] = '("'.mysqli_real_escape_string($this->_database, Request::getInstance()->getLanguage()).'", "'.mysqli_real_escape_string($this->_database, $source).'", "'.mysqli_real_escape_string($this->_database, $translation).'", "'.md5($source).'", "'.md5($translation).'")';
  3. }
  4. $query .= implode(',', $elements);
  5. $query .= ' ON DUPLICATE KEY UPDATE source=VALUES(source), translation=VALUES(translation), hash_source=VALUES(hash_source), hash_translation=VALUES(hash_translation)';
  6. $this->_database->query($query);
  7. }
  8. public function removeUrls($urls)
  9. {
  10. $query = 'DELETE FROM '.mysqli_real_escape_string($this->_database, $this->_database_table_urls).' WHERE (hash_source) IN ';
  1. foreach ($urls as $translation => $source) {
  2. $elements[] = '("'.mysqli_real_escape_string($this->_database, Request::getInstance()->getLanguage()).'", "'.mysqli_real_escape_string($this->_database, $source).'", "'.mysqli_real_escape_string($this->_database, $translation).'", "'.md5($source).'", "'.md5($translation).'")';
  3. }
  4. $query .= implode(',', $elements);
  5. $query .= ' ON DUPLICATE KEY UPDATE source=VALUES(source), translation=VALUES(translation), hash_source=VALUES(hash_source), hash_translation=VALUES(hash_translation)';
  6. $this->_database->query($query);
  7. }
  8. public function removeUrls($urls)
  9. {
  10. $query = 'DELETE FROM '.mysqli_real_escape_string($this->_database, $this->_database_table_urls).' WHERE (hash_source) IN ';
  1. public function saveUrls($urls) {
  2. if (empty($urls)) {
  3. return;
  4. }
  5. return $this->_database->saveUrls($urls);
  6. }
  7. public function removeUrls($urls) {
  8. if (empty($urls)) {
  9. return;
  1. if (isset($result->url_translations)) {
  2. Defer::getInstance()->defer(function() use ($result) {
  3. $new_urls = $result->url_translations;
  4. $new_urls = get_object_vars($new_urls);
  5. Database::getInstance()->saveUrls((array)$new_urls);
  6. });
  7. }
  8. if (isset($result->urls_untranslated)) {
  9. Defer::getInstance()->defer(function() use ($result) {
Translation->Linguise\Script\Core\{closure}()
  1. }
  2. public function finalize()
  3. {
  4. foreach ($this->_actions as $action) {
  5. call_user_func($action['function'], $action['args']);
  6. }
  7. }
  8. }
  1. Helper::prepareDataDir();
  2. // Finalize defer actions on shutdown
  3. // @codeCoverageIgnoreStart
  4. register_shutdown_function(function() {
  5. Defer::getInstance()->finalize();
  6. Database::getInstance()->close();
  7. });
  8. // @codeCoverageIgnoreEnd
  9. }
Processor->Linguise\Script\Core\{closure}()

Stack Trace

mysqli_sql_exception
mysqli_sql_exception:
Duplicate entry 'cc46bdf9d2ec3413199a4ce0a0d95031-nl' for key 'bk24_linguise_urls.hash_translation'

  at /var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Databases/Mysql.php:170
  at mysqli->query()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Databases/Mysql.php:170)
  at Linguise\Script\Core\Databases\Mysql->saveUrls()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Database.php:232)
  at Linguise\Script\Core\Database->saveUrls()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Translation.php:119)
  at Linguise\Script\Core\Translation->Linguise\Script\Core\{closure}()
  at call_user_func()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Defer.php:42)
  at Linguise\Script\Core\Defer->finalize()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Processor.php:31)
  at Linguise\Script\Core\Processor->Linguise\Script\Core\{closure}()