Не удается заставить Amazon S3 Cross Region Replication между двумя учетными записями работать - PullRequest
0 голосов
/ 11 марта 2019

Я надеюсь, что кто-нибудь может помочь мне с запросом межрегиональной репликации Amazon S3. У меня есть две учетные записи Amazon AWS, каждая из которых находится в отдельном регионе. Я хочу реплицировать данные из одного сегмента в другой, и, насколько я понимаю, это должен быть простой процесс создания. Тем не менее, я действительно борюсь, и я не знаю, что я делаю неправильно. Я следовал многим инструкциям в Интернете, в том числе изучал различные учебные пособия по AWS, видел множество примеров, но не могу воспроизвести данные.

Я включил управление версиями в обеих корзинах, и ни одна из данных не зашифрована. Однако в моем исходном хранилище есть политика, которая разрешает доступ к исходным данным через условие реферала, поэтому к данным (изображениям в данном случае) можно получить доступ только через определенные домены. Все это прекрасно работает, и у меня есть подозрение, что это, возможно, ограничивает доступ из целевого сегмента.

Я следовал интерактивным инструкциям по настройке правил репликации и политик IAM.

Итак, моя политика исходного кода: -

{
"Version": "2012-10-17",
"Id": "http referrer policy",
"Statement": [
    {
        "Sid": "Allow get requests originated from list",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::SOURCEBUCKET/*",
        "Condition": {
            "StringLike": {
                "aws:Referer": [
                    "http://www.domain1.com/*",
                    "https://www.domain2.com/*",
                    "http://domain3.com/*"
                ]
            }
        }
    }
]

}

и моя политика назначения: -

{
"Version": "2008-10-17",
"Id": "S3-Console-Replication-Policy",
"Statement": [
    {
        "Sid": "S3ReplicationPolicyStmt1",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::MYSOURCEACCIDNUMBER:root"
        },
        "Action": [
            "s3:List*",
            "s3:GetBucketVersioning",
            "s3:PutBucketVersioning",
            "s3:ReplicateObject",
            "s3:ReplicateDelete"
        ],
        "Resource": [
            "arn:aws:s3:::DESTINATIONBUCKET",
            "arn:aws:s3:::DESTINATIONBUCKET/*"
        ]
    }
]

}

Может ли кто-нибудь посоветовать мне, как я могу (если нужно) добавить в политику корзины источника, которая разрешит доступ из корзины назначения? Я уверен, что проблема здесь.

Заранее спасибо.

1 Ответ

0 голосов
/ 11 марта 2019

Чтобы проверить эту ситуацию, я сделал следующее:

  • Создано Bucket-A в Account-A с версиями
  • Создано Bucket-B в Account-B с версиями
  • Настроена межрегиональная репликация на Bucket-A, выбрав «Создать новую роль» (см. Ниже)
  • Добавлена ​​политика целевого сегмента, предоставленная в пользовательском интерфейсе (соответствует вашей, выше) в Bucket-B

Процесс создал роль с именем s3crr_role_for_bucket-a_to_bucket-b, которая содержит:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:Get*",
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::bucket-a",
                "arn:aws:s3:::bucket-a/*"
            ]
        },
        {
            "Action": [
                "s3:ReplicateObject",
                "s3:ReplicateDelete",
                "s3:ReplicateTags",
                "s3:GetObjectVersionTagging"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::bucket-b/*"
        }
    ]
}

Затем я загрузил файл в Bucket-A, и он успешно реплицировал в Bucket-B.

Итак, процесс работает нормально. Если у вас возникли трудности, некоторые мысли:

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