Посты по тегу: Amazon

Копируем S3 баккет между AWS аккаунтами

S3

Предположим, что нам надо скопировать данные из баккета в одном аккаунте, в баккет в другом аккаунте, да еще и в другом регионе.

Что нам понадобится

  • Два AWS аккаунта (один для исходного баккета, второй для баккета назначения)
  • IAM пользователь в аккаунте с баккетом, куда мы будем копировать данные (тут есть документация, как создать IAM пользователя в аккаунте)
  • Настроенная утилита aws-cli на локальной машине с ключами ранее созданного пользователя (документация по утилите)

Шаг 1: Получаем номер аккаунта

Заходим в аккаунт назначения. Переходим в SupportSupport center и копируем номер аккаунта.

Шаг 2: Настраиваем исходный S3 баккет

Заходим в аккаунт-источник. Создаем баккет источник (если его еще не было, то что вы тут делаете? ;) документация как создать баккет). Аттачим полиси, которое представлено ниже (как приаттачить полиси). Если вы только создали баккет, то залейте несколько файлов туда для теста.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DelegateS3Access",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::DESTINATION_BUCKET_ACCOUNT_NUMBER:root"
            },
            "Action": [
                "s3:ListBucket",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::SOURCE_BUCKET_NAME/*",
                "arn:aws:s3:::SOURCE_BUCKET_NAME"
            ]
        }
    ]
}

Шаг 3: Настраиваем баккет назначения

Заходим в аккаунт назначения. Создаем баккет, куда будем копировать данные.

Шаг 4: Аттачим полиси к созданному пользователю

Аттачим к созданному пользователю полиси, которое представлено ниже (как приаттачить полиси пользователю).

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

Шаг 5: Синхронизируем данные

Если вы сделали все шаги, описанные выше, то можно начать синхронизацию.

aws s3 sync s3://SOURCE-BUCKET-NAME s3://DESTINATION-BUCKET-NAME --source-region SOURCE-REGION-NAME --region DESTINATION-REGION-NAME

Как переехать в Amazon

Предпосылки

До переезда мы арендовали несколько bare metall серверов в SoftLayer.

На всех из них крутились KVM виртуалки, была своя выделенная подсеть (даже не так, несколько подсетей). Поддерживать все это было то еще удовольствие.

Немного спасал OpsCode Chef, но не сильно. Т.к. три ветки в git, которые сливать в кучку не всегда нормально удавалось из-за шифрования критичных вещей.

Не спрашивайте почему так. Это историческое наследие и выкорчевать его было не так просто.

Последней каплей стало то, что у нас как-то пошла небольшая нагрузка и на двух физических серверах тупо не хватило памяти, чтоб добавить ее в виртуалки. Пришлось ждать два дня, пока поддержка SoftLayer'a добавит нам планки.

В этот момент было принято волевое решение - хватит это терпеть. Пора отказываться от такой схемы работы.

Подготовка инфраструктуры

Было понятно, что переезжать куда-то, кроме облаков, нет смысла. Только там есть та самая динамика, которая нас сможет удовлетворить.

Выбор не велик - DigitalOcean и Amazon AWS. Поскольку DO не предоставляет HIPAA и HiTrust, то выбор стал очевиден сразу.


Читать далее...

Amazon AWS

Мне очень нравится работать с Amazon AWS. Особенно если эта работа происходит с помощью Packer и Terraform. Эти инструменты позволяют формировать инфраструктуру быстро и непринужденно.

Но в этом есть подводные камни.

Всегда надо читать условия использования сервиса Amazon, т.к. там могут быть существенные ограничения, например, на скорость доступа к сервису. Потом может быть больно. ;)

Еще раз - всегда читайте то, что пишет Amazon о сервисе и условия предоставления услуги. Яркий тому пример - Amazon EFS.