Настройка доступа на запись s3, принадлежащего одной учетной записи aws, к файлу пожарного шланга, принадлежащему другой учетной записи aws

Я настроил один поток Kinesis Firehose под учетной записью A. Согласно нашему требованию, этот поток должен записывать данные в корзину s3, принадлежащую другой учетной записи aws B, что включает:

  1. Это ведро s3 должно быть выпадающим в соответствующих настройках пожарного шланга,
  2. Этот поток пожарного шланга должен иметь разрешение на запись для данного заданного сегмента s3.

До сих пор я добавил следующую политику в корзину s3 под учетной записью B (id 2), которую я хочу записать из пожарного рукава под учетной записью A (id 1).

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "avs-bi-access",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::1:root"
                ]
            },
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                “s3:PutObject”
            ],
            "Resource": [
                "arn:aws:s3:::testBucket",
                "arn:aws:s3:::testBucket/*"
            ]
        }
    ]
}

Помимо этого, в роли, используемой Firehose для учетной записи A (id 1), доверительные отношения заключаются в следующем:

{
"Version": "2012-10-17",
"Statement": [
 {
  "Sid": "",
  "Effect": "Allow",
  "Principal": {
    "Service": "firehose.amazonaws.com",
    "AWS": "arn:aws:iam::2:root"
  },
  "Action": "sts:AssumeRole"
  }
]
}

Даже после этого я не могу выбрать данный сегмент на странице конфигурации Firehose. Я думаю, я что-то упустил.

1 ответ

Вы должны следовать указаниям по:

В принципе:

  • Ваша политика S3 должна иметь принципала, указывающего на роль IAM, используемую Firehose
  • Образцы не включали AWS значение в основной роли

Вы никогда не получите ведро из другой учетной записи, отображаемой в раскрывающемся списке консоли. Вместо этого вам нужно будет выбрать сегмент при создании потока доставки Firehose с помощью вызова API/CLI, или вы можете использовать update-destination API вызов для изменения пункта назначения:

aws firehose update-destination --delivery-stream-name foo --current-delivery-stream-version-id 1 --destination-id 'destinationId-000000000001' --extended-s3-destination-update '{"BucketARN":"arn:aws:s3:::YOUR-BUCKET"}'

Вы можете получить version а также destination-id с помощью:

aws firehose describe-delivery-stream --delivery-stream-name foo

Отказ от ответственности: я попробовал все вышеперечисленное и смог выбрать ведро. Однако я не получил никаких данных в ведро. Возможно, у тебя будет больше успеха, чем у меня.

Другие вопросы по тегам