Чтение файла .csv из AWS S3 - запрещено - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь прочитать файл .csv из AWS S3, но я получил запрещенное сообщение, я уже установил полный доступ ко всем (только для этого случая) .. но все же не повезло ..

что япропустили?

кто-нибудь имеет опыт по этому поводу?

import boto3
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import preprocessing
from sklearn.model_selection import train_test_split
import xgboost as xgb

# Defining utility methods
# Reference: http://boto3.readthedocs.io/en/latest/guide/s3.html
# bucket: Name of bucket
# key: File name stored in S3

def write_to_s3(filename, bucket, key):
    with open(filename,'rb') as f: # Read in binary mode
        return boto3.Session().resource('s3').Bucket(bucket).Object(key).upload_fileobj(f)


def download_from_s3(filename, bucket, key):
    with open(filename,'wb') as f:
        return boto3.Session().resource('s3').Bucket(bucket).Object(key).download_fileobj(f)


# Downloading file from S3
download_from_s3('mypredictive.csv', 'my-bucket-004', 'mypredictive.csv')

# Reading CSV File
df = pd.read_csv('mypredictive.csv')

# Let's see how our data looks like
df.head(2)

====

  ~/anaconda3/envs/python3/lib/python3.6/site-packages/botocore/client.py in _make_api_call(self, operation_name, api_params)
    659             error_code = parsed_response.get("Error", {}).get("Code")
    660             error_class = self.exceptions.from_code(error_code)
--> 661             raise error_class(parsed_response, operation_name)
    662         else:
    663             return parsed_response

ClientError: An error occurred (403) when calling the HeadObject operation: Forbidden

1 Ответ

0 голосов
/ 18 марта 2019

просто хочу поделиться:

эта ошибка вызвана тем, что служебная роль SageMaker (роль, которую я использую для создания записной книжки SageMaker) не имеет разрешения для вашей конкретной корзины s3, чтобы предоставить роли службы SageMaker доступ к вашей корзине.Вы можете добавить нижеприведенную политику к своей роли службы SageMaker (по умолчанию AmazonSageMaker-ExcutionRole):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:ListBucket",
                "kms:*"
            ],
            "Resource": [
                "arn:aws:s3:::*"
            ]
        }
    ]
}

ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...