Я создаю несколько файлов html, используя комбинацию R и R. Загрузить несколько файлов с индивидуальной идентификацией в AWS s3 легко с помощью команды for l oop и put object. Вот пример:
for (i in 1:nrow(Data)){
rmarkdown::render(input = "report.Rmd",
output_format = "html_document",
output_file = paste("output/report_", i, ".html", sep =''))}
library(aws.s3)
Sys.setenv(AWS_ACCESS_KEY_ID = "XXXX",
AWS_SECRET_ACCESS_KEY = "YYYYY",
AWS_DEFAULT_REGION = "ZZZZ")
# put_object to upload to AWS
for (i in 1:nrow(Data)){
put_object(file = paste("/Users/me/output/report_", i, ".html", sep = ''),
object = paste("report_", i, ".html", sep = ''), bucket = "mybucket")}
Я пытаюсь понять, как сделать то же самое с Google Cloud Storage.
library(googleCloudStorageR)
library(googleAuthR)
Sys.setenv("GCS_DEFAULT_BUCKET" = "reports",
"GCS_AUTH_FILE" = "file/path/to.json")
Я могу без проблем загрузить один вывод:
gcs_upload(file = "output/report_1.html", bucket = "reports")
Когда я пытаюсь загрузить несколько файлов с индивидуальными именами с помощью al oop, это не удается.
for (i in 1:nrow(Data)){
gcs_upload(file = paste("output/report_", i, ".html", sep = ""), bucket = "reports")
}
Этот код будет записывать первый html вывод, иногда второй и никогда не полный набор.
Любая помощь приветствуется.
ОБНОВЛЕНИЕ: я отказался от этой попытки. Обходной путь - использовать для l oop для загрузки в AMZN и запланировать повторяющуюся передачу в GCS с помощью команд GCS. Другие обходные пути используют интерфейс командной строки, но я не хочу использовать go таким образом. Я подозреваю, что отсутствие ответа на этот поток указывает на небольшую потребность в создании загрузки из R в GCS. Отдельно хочу поблагодарить того, кто написал пакет R aws s3. Красиво работает!