AWS Glue Error - Произошла ошибка (403) при вызове операции HeadObject: Запрещено - PullRequest
0 голосов
/ 26 мая 2020

У меня есть простое задание Glue pythonshell, и для целей тестирования у меня просто есть print («Hello World»).

Я дал ему требуемую роль AWSGlueServiceRole. Когда я пытаюсь запустить задание, возникает следующая ошибка:

Traceback (most recent call last):
  File "/tmp/runscript.py", line 114, in <module>
    temp_file_path = download_user_script(args.scriptLocation)
  File "/tmp/runscript.py", line 91, in download_user_script
    download_from_s3(args.scriptLocation, temp_file_path)
  File "/tmp/runscript.py", line 81, in download_from_s3
    s3.download_file(bucket_name, s3_key, new_file_path)
  File "/usr/local/lib/python3.6/site-packages/boto3/s3/inject.py", line 172, in download_file
    extra_args=ExtraArgs, callback=Callback)
  File "/usr/local/lib/python3.6/site-packages/boto3/s3/transfer.py", line 307, in download_file
    future.result()
  File "/usr/local/lib/python3.6/site-packages/s3transfer/futures.py", line 106, in result
    return self._coordinator.result()
  File "/usr/local/lib/python3.6/site-packages/s3transfer/futures.py", line 265, in result
    raise self._exception
  File "/usr/local/lib/python3.6/site-packages/s3transfer/tasks.py", line 255, in _main
    self._submit(transfer_future=transfer_future, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/s3transfer/download.py", line 345, in _submit
    **transfer_future.meta.call_args.extra_args
  File "/usr/local/lib/python3.6/site-packages/botocore/client.py", line 357, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/usr/local/lib/python3.6/site-packages/botocore/client.py", line 661, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (403) when calling the HeadObject operation: Forbidden

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

1 Ответ

0 голосов
/ 17 августа 2020

В Glue вам нужно прикрепить политики S3 к роли Amazon Glue, которую вы используете для выполнения задания. Когда вы определяете работу, вы выбираете роль. В этом примере это AWSGlueServiceRole-S3IAMRole. У него нет доступа к S3, пока вы его не назначите.

введите описание изображения здесь

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": "*"
        }
    ]
}
...