Близько 10 хв

Як вивантажувати файли в Amazon S3 і ділитися публічними посиланнями

Amazon S3 - перше об’єктне сховище, і воно працює з шаблоном Amazon S3 в Aktar. Уваги потребує лише публічний доступ: S3 стандартно його блокує, тож потрібно або додати політику бакета для публічного читання, або поставити перед бакетом CloudFront.

Що знадобиться

  • Обліковий запис AWS
  • Дозвіл на створення бакетів S3 і користувачів IAM
  • Aktar, установлений на вашому Mac

Крок за кроком

  1. 1

    Створіть бакет

    У консолі S3 натисніть Create bucket, виберіть глобально унікальну назву й найближчий до вас регіон, наприклад eu-central-1. Стандартне право власності на об’єкти «Bucket owner enforced» можна залишити: Aktar не використовує ACL.

  2. 2

    Дозвольте публічне читання

    Варіант A, політика бакета: на вкладці Permissions бакета вимкніть параметри «Block public access», які блокують публічні політики бакета, а потім додайте цю політику бакета (замініть YOUR-BUCKET):

    {
      "Version": "2012-10-17",
      "Statement": [{
        "Sid": "PublicRead",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::YOUR-BUCKET/*"
      }]
    }

    Варіант B, CloudFront: залиште бакет приватним і створіть дистрибуцію CloudFront із бакетом як джерелом (через Origin Access Control). Так ви отримаєте HTTPS на власному домені й кешування.

  3. 3

    Створіть користувача IAM для Aktar

    В IAM створіть користувача й призначте йому політику, яка дозволяє лише те, що потрібно Aktar для цього бакета:

    {
      "Version": "2012-10-17",
      "Statement": [
        { "Effect": "Allow", "Action": "s3:ListBucket",
          "Resource": "arn:aws:s3:::YOUR-BUCKET" },
        { "Effect": "Allow",
          "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"],
          "Resource": "arn:aws:s3:::YOUR-BUCKET/*" }
      ]
    }

    Потім створіть для користувача access key і скопіюйте Access Key ID та Secret Access Key.

  4. 4

    Додайте ціль в Aktar

    У розділі Параметри → Цілі → Додати ціль виберіть Amazon S3 і введіть значення, наведені нижче. Кінцева точка й регіон мають відповідати регіону бакета.

  5. 5

    Перевірте й збережіть

    Натисніть Перевірити з’єднання, щоб переконатися, що в бакет можна записувати, а публічна URL-адреса роздає файли, потім Зберегти.

Параметри в Aktar

Введіть ці значення в розділі Параметри → Цілі → Додати ціль. Назви полів збігаються з програмою.

ПолеПриклад значення
ПровайдерAmazon S3
Кінцева точкаhttps://s3.eu-central-1.amazonaws.comВикористовуйте регіон свого бакета.
Регіонeu-central-1
Access Key IDAKIA…Від користувача IAM.
Secret Access Key••••••••
Бакетyour-bucket
Публічна базова URL-адресаyour-bucket.s3.eu-central-1.amazonaws.comАбо ваш домен CloudFront.

Поради

  • Якщо ви ділитеся посиланнями публічно, краще використовуйте CloudFront із власним доменом: ви отримаєте кешування, а сам бакет зможе залишатися приватним.
  • Обмежте політику IAM одним бакетом. Aktar ніколи не потребує прав на весь обліковий запис.
  • Для швидшого вивантаження вибирайте регіон поблизу себе, а якщо не використовуєте CDN, то й поблизу своєї аудиторії.
  • Для вивантажень, які видаляються самі, користувачу IAM також потрібні s3:GetLifecycleConfiguration і s3:PutLifecycleConfiguration для бакета, або ж додайте правила життєвого циклу самостійно. Див. тимчасові вивантаження.

Усунення проблем

«Перевірити з’єднання» повідомляє про помилку регіону або переспрямування

Кінцева точка й регіон мають відповідати регіону, у якому створено бакет, наприклад https://s3.eu-central-1.amazonaws.com з eu-central-1.

Вивантаження завершуються помилкою Access Denied

Користувачу IAM потрібні s3:PutObject для YOUR-BUCKET/* і s3:ListBucket для самого бакета.

Посилання повертають 403

Політики бакета немає або її досі блокує «Block public access», чи CloudFront не може читати бакет. Див. Помилки Access Denied.

Досі не виходить?Перегляньте часті запитання або запитайте на GitHub.