Настройка доступа на запись s3, принадлежащего одной учетной записи aws, к файлу пожарного шланга, принадлежащему другой учетной записи aws
Я настроил один поток Kinesis Firehose под учетной записью A. Согласно нашему требованию, этот поток должен записывать данные в корзину s3, принадлежащую другой учетной записи aws B, что включает:
- Это ведро s3 должно быть выпадающим в соответствующих настройках пожарного шланга,
- Этот поток пожарного шланга должен иметь разрешение на запись для данного заданного сегмента 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 ответ
Вы должны следовать указаниям по:
- Доставка через аккаунт
- Предоставление доступа к данным Kinesis Firehose к месту назначения Amazon S3
В принципе:
- Ваша политика 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
Отказ от ответственности: я попробовал все вышеперечисленное и смог выбрать ведро. Однако я не получил никаких данных в ведро. Возможно, у тебя будет больше успеха, чем у меня.