Не удается найти необходимое разрешение для создания пакетного задания S3 в IAM - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь создать S3 Batch (не AWS Batch, это S3 Batch) через boto3 и не могу определить, какие разрешения мне нужно включить для успешного создания. Я продолжаю получать «Отказано в доступе», когда пытаюсь создать задание, но оно прекрасно работает, когда я применяю политику полного доступа S3 к роли выполнения. Не очень хорошее долгосрочное решение, очевидно ...

Я почти уверен, что мне нужно добавить определенное разрешение в IAM, но я не могу понять, какое именно. Я не вижу разрешения "CreateJob" нигде. Возможно, мне нужно добавить доступ к какому-нибудь контейнеру управления s3, где написано задание?

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

Это прекрасно работает, когда применяется полная политика разрешений S3:

import boto3

s3_control_client = boto3.client('s3control', region_name='us-east-1')
response = s3_control_client.create_job([very long and boring])

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

2019-05-23 18:35:37,934 Starting new HTTPS connection (1): [ACCOUNTIDNUMBER].s3-control.us-east-1.amazonaws.com:443
2019-05-23 18:35:38,040 https://[ACCOUNTIDNUMBER].s3-control.us-east-1.amazonaws.com:443 "POST /v20180820/jobs HTTP/1.1" 403 204
2019-05-23 18:35:38,040 Response headers: {'x-amz-id-2': '[SCRUBBED]', 'x-amz-request-id': '[SCRUBBED], [SCRUBBED]', 'Date': 'Thu, 23 May 2019 18:35:38 GMT', 'Content-Type': 'application/xml', 'Content-Length': '204', 'Server': 'AmazonS3'}
2019-05-23 18:35:38,041 Response body:
b'<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>[SCRUBBED]</RequestId>

Любые идеи о том, какие разрешения мне нужно включить здесь для завершения?

1 Ответ

1 голос
/ 23 мая 2019

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

Разрешения для вашего целевого сегмента

  • s3:PutObject
  • s3:PutObjectAcl
  • s3:PutObjectTagging

Разрешения для вашей исходной корзины

  • s3:GetObject

Разрешения для вашей манифестной корзины

  • s3:GetObject
  • s3:GetObjectVersion
  • s3:GetBucketLocation

Разрешения для корзины отчетов

  • s3:PutObject
  • s3:GetBucketLocation

Вот шаблон, который вы можете использовать

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl",
        "s3:PutObjectTagging"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::{{DestinationBucket}}/*"
    },
    {
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::{{SourceBucket}}/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:GetBucketLocation"
      ],
      "Resource": [
        "arn:aws:s3:::{{ManifestBucket}}/*"
      ]
    },
    {
      "Effect":"Allow",
      "Action":[
        "s3:PutObject",
        "s3:GetBucketLocation"
      ],
      "Resource":[
        "arn:aws:s3:::{{ReportBucket}}/*"
      ]
    }
  ]
}

Вы можете проверить эту ссылку для получения дополнительной информации.

...