Настройка доступа на запись s3, принадлежащего одной учетной записи aws, к файлу пожарного шланга, принадлежащему другой учетной записи aws - PullRequest
0 голосов
/ 04 июня 2018

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

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

До сих пор я добавил следующую политику в сегмент s3 под учетной записьюB (id 2), который я хочу написать из firehose под учетной записью 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 Ответ

0 голосов
/ 04 июня 2018

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

В основном:

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

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

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

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

...