在R语言中复用aws.s3库连接参数的方法咨询
在R的aws.s3包中复用连接参数的方法
你直接把参数列表传给object_exists无法运行,是因为这个函数需要接收单独的命名参数,而不是一个列表对象。下面给你几个实用的解决办法:
方法一:用do.call()传递参数列表
do.call()可以把列表里的元素拆解成单独的参数传给目标函数,完美适配你的需求:
library(aws.s3) # 定义参数列表 connection_args <- list( object = "some_object_name", bucket = "some_bucket_name", region = "some_region_name", key = "some_key", secret = "some_secret" ) # 用do.call调用函数 do.call(object_exists, connection_args)
方法二:设置全局AWS凭证(推荐)
如果你的整个R会话都用同一套AWS凭证,直接把凭证信息设为环境变量,后续调用aws.s3的所有函数都会自动读取这些参数,不用每次手动传:
library(aws.s3) # 设置全局环境变量 Sys.setenv( AWS_ACCESS_KEY_ID = "some_key", AWS_SECRET_ACCESS_KEY = "some_secret", AWS_REGION = "some_region_name" ) # 后续调用只需要传变化的参数(比如object和bucket) object_exists( object = "some_object_name", bucket = "some_bucket_name" )
方法三:封装成自定义函数
如果经常要针对同一个bucket做操作,可以自己封装一个函数,把固定参数写死,只留需要变化的参数(比如object名):
library(aws.s3) # 自定义函数,固化常用参数 my_object_exists <- function(target_object) { object_exists( object = target_object, bucket = "some_bucket_name", region = "some_region_name", key = "some_key", secret = "some_secret" ) } # 使用时只需要传目标对象名 my_object_exists("some_object_name")
内容的提问来源于stack exchange,提问作者Sanchez333
相关产品推荐
相关产品推荐

