Ошибка аутентификации AWS S3, несмотря на правильный ключ доступа и секрет - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь скопировать файл json в таблицу в Amazon Redshift.Код похож на следующий

sql = """copy mydb.sales from 's3://example/user_x.json' credentials 'aws_access_key_id=AK;aws_secret_access_key=SK' format as json 'auto';"""

Я получаю AK и SK на

output1 = subprocess.check_output("curl -s http://example.com | grep ' \"xyz" : * ' | cut -f5 -d \" \" | cut -b2- | rev | cut -b3- | rev", shell=True)
AK = output1[:-1] #to remove the \n part from the subprocess output 

Проблема в том, что я получаю следующую ошибку:

 error:  S3ServiceException:The AWS Access Key Id you provided does not exist in our records.,Status 403,Error InvalidAccessKeyId

Теперь ясмог проверить доступ и секрет другим способом.Они точно такие же, как у меня для вывода AK или SK, как показано выше.

1 Ответ

0 голосов
/ 27 сентября 2018

Вам лучше использовать роль IAM, если это возможно.Создайте роль IAM с необходимыми разрешениями S3 для чтения файлов.Присоедините роль IAM к вашему кластеру красных смещений.Затем вы можете передать роль ARN в разделе учетных данных оператора SQL

  COPY table FROM s3path CREDENTIALS 'aws_iam_role=iam role arn here'

Политика доверия для роли должна выглядеть следующим образом

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "redshift.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Затем в консоли Redshift выберитекластера и нажмите Управление ролями IAM.Затем добавьте, выберите свою роль в IAM.

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