# Amazon S3 beállítása a letöltésekhez

> Korlátozott jogú AWS-felhasználó és tároló létrehozása, a bucket-szabály, és az S3-fájl bekötése a licencelt termékbe.

Az API Manager a frissítési és letöltési fájlokat Amazon S3-ról is ki tudja szolgálni. A fájl linkjét beilleszted a termék **Letölthető fájlok** részének **Fájl URL** mezőjébe, a bővítmény pedig biztonságos, lejáró linkbe csomagolja, ugyanúgy, mint a helyi szerveren tárolt fájlokat.

Ez a fejezet az API Manager S3-kapcsolatát írja le. Ha a WooCommerce letölthető termékeit általában szeretnéd S3-ra szinkronizálni, ahhoz külön bővítmény való.

## Az S3 beállításai a bolton

Az S3 kulcsai az **API Manager → Konfiguráció → Letöltések** fülön vannak.

![Az Amazon S3 és a letöltési linkek beállításai a Letöltések fülön](./kepek/alapfunkciok-amazon-s3-beallitasok.webp)

*Az Amazon S3 és a letöltési linkek beállításai a Letöltések fülön* (https://minta-bolt.hu/wp-admin/admin.php?page=wcam_api_manager_settings&tab=downloads)

A kép az **AWS-hozzáférési kulcs ID**, az **AWS titkos hozzáférési kulcs** és az **Amazon S3 régió** mezőt mutatja, alatta a **Letöltési linkek** résszel.

| Beállítás | Mit csinál |
|---|---|
| **AWS-hozzáférési kulcs ID** | Az AWS-felhasználó hozzáférési kulcsának azonosítója. |
| **AWS titkos hozzáférési kulcs** | A titkos kulcs, az adatbázisban erősen titkosítva tárolódik. |
| **Amazon S3 régió** | Az a régió, ahol a tároló (bucket) van. |
| **URL-lejárati idő** | A letöltési linkek érvényessége napokban. |

A kulcsokat biztonságosabb a `wp-config.php` fájlban megadni, így nem kerülnek az adatbázisba:

```php
define( 'WC_AM_AWS3_ACCESS_KEY_ID', 'a_te_hozzaferesi_kulcsod' );
define( 'WC_AM_AWS3_SECRET_ACCESS_KEY', 'a_te_titkos_kulcsod' );
```

## 1. Korlátozott jogú AWS-felhasználó

A cél egy olyan felhasználó, aki csak az S3-tárolókat olvashatja, és más Amazon-szolgáltatáshoz nem fér hozzá. Így nem kell a fő (root) fiók kulcsait használnod, amelyek az AWS-fiók minden szolgáltatásához hozzáférést adnak.

1. Jelentkezz be az AWS-be (vagy hozz létre fiókot), és nyisd meg az Identity and Access Management (IAM) felületet.
2. A biztonsági hitelesítő adatoknál válaszd a **Users** (felhasználók) listát, és hozz létre egy új felhasználót programozott hozzáféréssel.
3. Adj neki csak S3-olvasási jogot, más szolgáltatást ne.
4. A létrehozás utolsó lépésében töltsd le a `.csv` fájlt, és tárold biztonságos helyen. Ebben van az **Access Key ID** és a **Secret Access Key**, amelyet a `wp-config.php`-ba vagy az API Manager beállításaiba kell írnod. A titkos kulcsot és a `.csv` fájlt csak ezen a sikerképernyőn kapod meg, később már nem tudod megnézni.

A korlátozott felhasználók létrehozására más módszerek is vannak, a lényeg az, hogy a hozzáférés csak a szükséges erőforrásokra szűküljön.

## 2. Tároló létrehozása és fájl feltöltése

1. Nyisd meg az Amazon S3 felületet, és kattints a **Create bucket** gombra.
2. Adj nevet a tárolónak, és válaszd ki a régiót. A tároló neve nem kell, hogy egyezzen az IAM-felhasználó nevével, a kettő független.
3. A varázsló további lépéseiben fogadd el az alapértelmezett beállításokat, módosítani nem kell semmit.
4. A létrehozott tárolóba töltsd fel a terméked fájlját. Zip fájlnál a Content-Type legyen `application/zip`.

Alapból csak a root fióknak van hozzáférése a tárolóhoz és a fájlokhoz, a vásárlóknak és az új IAM-felhasználónak nincs. Ezt a következő lépésben állítod be.

## 3. Tárolószabály (bucket policy)

1. Az IAM felületen nyisd meg az új felhasználót, és másold ki a **User ARN** értékét.
2. Az S3 felületen válaszd ki a tárolót, majd **Permissions → Bucket Policy**. Az oldal alján kattints a **Policy generator** hivatkozásra.
3. A szabálytípusnál válaszd az **S3 Bucket Policy** lehetőséget, a **Principal** mezőbe illeszd be a User ARN-t.
4. Az **Actions** listában csak a **GetObject** legyen kijelölve.
5. Az **Amazon Resource Name (ARN)** mezőbe írd: `arn:aws:s3:::a-te-tarolod-neve/*`.
6. Kattints az **Add Statement**, majd a **Generate Policy** gombra, és másold ki a kapott kódot.
7. Illeszd be a tárolószabály mezőjébe, és mentsd.

A kész szabály így néz ki:

```json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/a-te-felhasznalod"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::a-te-tarolod-neve/*"
        }
    ]
}
```

A **Principal** a felhasználó ARN-je. A **Resource** a tároló neve `arn:aws:s3:::` előtaggal és `/*` utótaggal: a perjel a határoló, a csillag pedig a tároló alatti összes fájlt jelenti.

## 4. A fájl bekötése a termékbe

1. Az S3 felületen nyisd meg a feltöltött fájlt, és másold ki az URL-jét.
2. A terméken illeszd be a **Letölthető fájlok → Fájl URL** mezőbe.

Egy tárolóba több fájl is kerülhet, így egy helyen tarthatod őket. Ha a fájl neve változik, a termékben a linket is át kell írnod.

## Hogyan működik a letöltés?

A bővítmény biztonságos linket készít az S3-hivatkozás köré. A link akkor jön létre, amikor a vevő megnyitja a **Fiókom → Licencelt letöltések** oldalt, és akkor is, amikor a kliensszoftver frissítést kér az API-n. A link tartalmazza az S3 számára szükséges adatokat: a korlátozott IAM-felhasználó titkosított hozzáférési adatait, a kért fájlt és a lejárati időt. Az S3 ez alapján hitelesíti a kérést, és csak olvasási jogot ad.

A linkek érvényességét az **URL-lejárati idő** állítja be (a helyi felületen napokban).

## Új kiadások és új tárolók

- Új kiadásnál a legegyszerűbb ugyanazzal a fájlnévvel lecserélni a régi fájlt a tárolóban, így a termékben lévő link nem változik.
- Új tárolóhoz ismételd meg a 2. és 3. lépést, a tárolószabályban csak a User ARN-t és a tároló nevét kell átírnod.
