Я пытаюсь читать / писать на S3 из R в EC2, используя write_using()
из пакета aws.s3
.
Что я сделал до сих пор
К EC2 подключен IAM, который позволяет выполнять чтение / запись в определенную корзину AWS S3
Я связал IAM с EC2. Я также создал корзину (в этом примере, пожалуйста, предположите, что она называется my-unique-bucket
)
Когда я вхожу в EC2 и открываю R, тогда запускаю что-то вроде s3write_using(mtcars, FUN = write.csv, object = "mtcars.csv", bucket = "my-unique-bucket")
Понятно
List of 4
$ Code : chr "AccessDenied"
$ Message : chr "Access Denied"
$ RequestId: chr "3B942C125C154B49"
$ HostId : chr "0dgc4Iuv3EXdQxMgkh4Qkxt+aADzxsVYp6pq2k3/OjSztFlV1nftjn4MkIvNZ+wCVqzeJsttY44="
- attr(*, "headers")=List of 6
..$ x-amz-request-id : chr "3B942C125C154B49"
..$ x-amz-id-2 : chr "0dgc4Iuv3EXdQxMgkh4Qkxt+aADzxsVYp6pq2k3/OjSztFlV1nftjn4MkIvNZ+wCVqzeJsttY44="
..$ content-type : chr "application/xml"
..$ transfer-encoding: chr "chunked"
..$ date : chr "Tue, 18 Jun 2019 12:57:45 GMT"
..$ server : chr "AmazonS3"
..- attr(*, "class")= chr [1:2] "insensitive" "list"
- attr(*, "class")= chr "aws_error"
NULL
Error in parse_aws_s3_response(r, Sig, verbose = verbose) :
Forbidden (HTTP 403).
Я бы ожидал, что это сработает? Вместо этого это выглядит как проблема аутентификации
Далее
Я не уверен, что попробовать дальше, так как я надеялся, что вышесказанное сработает.
Учитывая, что это не так, нужно ли мне как-то аутентифицировать EC2 (или сеанс R, запущенный на EC2)? Я бы подумал, что аутентификация с использованием учетных данных root противоречит цели IAM (поскольку у пользователя root есть разрешения на все, в то время как IAM, связанный с экземпляром, имеет только права на чтение / запись в S3). Так что я не уверен, что это правильно (кажется, что был бы лучший способ - то есть, чтобы S3 знал, что у EC2 есть IAM, разрешающий доступ). Но я не уверен, как это сделать или где я ошибся при попытке этого