put_object
splits the use of files vs payload into
two separate arguments: what
is now the first positional
argument and expects actual content to store, file
is now a
named argument used to store file content. The previous use of
file
for both was very dangerous as it stored filenames
instead of content without warning if the file was not found.
Old code that intended to use files such as:
put_object("foo.csv", "bucket")
has to use either of
put_object(file="foo.csv", bucket="bucket")
## or (not recommended)
put_object(, "bucket", file="foo.csv")
Any code that used file=
explicitly and no positional
arguments doesn’t need to change.
put_object
supports connections, including non-seekable
onesput_object
now closes its connections properly
(#354)
Adapt to DisplayName
being removed from the AWS API
(#437)
get_bucket
fetched incorrect list (repeating the
first chunk) if multiple fetches were required and the response included
the NextMarker
entry (#414)
s3HTTP()
(and thus all API functions) gain
write_fn=function(x) {...}
argument which allows chunk-wise
streaming output for GET
requests.sprintf()
where possible to avoid type
mismatches. (#329)bucketlist()
correctly.
(#333)region=""
and custom base_url
enables the use of single-host non-AWS back-ends (e.g., minio). (#340)s3read_using()
now cleans up after itself. (#270) It
also gains a new argument filename
which allows to specify
the actual name of the file that will be used. (#341)s3sync
has been re-factored to work on directories
instead of file lists. Please read the documentation, the arguments have
changed. The previous version has never really worked for any other
cases than sync of the working directory. Addresses many
s3sync()
issues including #346.acl
and header
arguments to
put_acl()
, ala put_object()
. (#137)put_bucket()
gains a location_constraint
argument, which - if NULL - does not pass a LocationConstraint body
argument. This is useful for S3-compatible storage. (#189)put_bucket()
when
region = "us-east-1"
. (#243)s3connection()
function to stream objects from
S3. (#217)put_object(multipart = TRUE)
to improve
memory efficiency. (h/t Andrii Degtiarov, #242)select_object()
function. (#224)put_object(multipart = TRUE)
.
(#80)s3HTTP()
argument
check_region
argument now defaults to FALSE. (#45, #46,
#106, #122, #185, #230)s3HTTP()
gains a show_progress
logical
argument specifying whether to print a progress bar for PUT, POST, and
GET requests. (#235, h/t R. Roebuck)head_object()
now simply returns as a logical without
an extraneous class.object_size()
provides a convenient
wrapper around the “content-length” attribute of
head_object()
. (#234, h/t P. Roebuck)object_exists()
is now implemented as a synonym for
head_object()
(#234, h/t P. Roebuck)s3write_using()
now attaches the correct file extension
to the temporary file being written to (just as
s3read_using()
already did). (#226, h/t @jon-mago)s3sync()
gains a direction
argument
allowing for unidirectional (upload-only or download-only)
synchronization. The default remains bi-directional.put_encryption()
,
get_encryption()
, and delete_encryption()
implement bucket-level encryption so that encryption does not need to be
specified for each put_object()
call. (#183, h/t Dan
Tenenbaum)s3sync()
. (#211, h/t Nirmal Patel)put_bucket()
only includes a LocationConstraint body
when the region != “us-east-1”. (#171, h/t David Griswold)setup_s3_url()
. (#223, h/t Peter
Foley)s3write_using()
. (#205, h/t Patrick
Miller)acl
argument was ignored by put_bucket()
.
This is now fixed. (#172)base_url
argument in s3HTTP()
now
defaults to an environment variable - AWS_S3_ENDPOINT
- or
the AWS S3 default in order to facilitate using the package with
S3-compatible storage. (#189, #191, #194)save_object()
now uses httr::write_disk()
to avoid having to load a file into memory. (#158, h/t Arturo Saco)endsWith()
in two places to reduce
(implicit) base R dependency. (#147, h/t Huang Pan)put_object()
and
put_bucket() now expose explicit
acl` arguments. (#137)get_acl()
and put_acl()
are now exported.
(#137)put_folder()
convenience function
for creating an empty pseudo-folder.put_bucket()
now errors if the request is unsuccessful.
(#132, h/t Sean Kross)setup_s3_url()
when region = ""
.bucketlist()
gains both an alias,
bucket_list_df()
, and an argument add_region
to add a region column to the output data frame.s3sync()
function. (#20)save_object()
now creates a local directory if needed
before trying to save. This is useful for object keys contains
/
.s3HTTP()
.s3readRDS()
and
s3saveRDS()
.s3readRDS()
.
(#59)put_object()
(#80)tempfile()
instead of rawConnection()
for high-level read/write functions. (#128)get_bucket()
.
(#88)get_object()
now returns a pure raw vector (without
attributes). (#94)s3sync()
relies on get_bucket(max = Inf)
.
(#20)s3HTTP()
gains a base_url
argument to
(potentially) support S3-compatible storage on non-AWS servers.
(#109)s3HTTP()
gains a dualstack
argument
provide support for “dual stack” (IPv4 and IPv6) support. (#62)get_bucket()
when
max = Inf
. (#127, h/t Liz Macfie)s3read_using()
and
s3write_using()
provide a generic interface to reading and
writing objects from S3 using a specified function. This provides a
simple and extensible interface for the import and export of objects
(such as data frames) in formats other than those provided by base R.
(#125, #99)s3HTTP()
gains a url_style
argument to
control use of “path”-style (new default) versus “virtual”-style URL
paths. (#23, #118)s3save()
gains an envir
argument.
(#115)get_bucket()
now automatically handles pagination based
upon the specified number of objects to return. (PR #104, h/t Thierry
Onkelinx)get_bucket_df()
now uses an available (but unexported)
as.data.frame.s3_bucket()
method. The resulting data frame
always returns character rather than factor columns.s3HTTP()
.
(#46, #106 h/t John Ramey)bucketlist()
now returns (in addition to past behavior
of printing) a data frame of buckets.get_bucket_df()
returns a data frame of
bucket contents. get_bucket()
continues to return a list.
(#102, h/t Dean Attali)s3HTTP()
gains a check_region
argument
(default is TRUE
). If TRUE
, attempts are made
to verify the bucket’s region before performing the operation in order
to avoid confusing out-of-region errors. (#46)object = "s3://bucket_name/object_key"
. In all cases, the
bucketname and object key will be extracted from this string (meaning
that a bucket does not need to be explicitly specified). (#100; h/t John
Ramey)get_bucket()
S3 generic and methods.=
). (#64)s3save_image()
to save an entire
workspace.Remotes
field.s3source()
as a convenience function to
source an R script directly from S3. (#54)s3save()
, s3load()
,
s3saveRDS()
, and s3readRDS()
no longer write
to disk, improving performance. (#51)s3saveRDS()
and
s3readRDS()
. (h/t Steven Akins, #50)get_object()
).
Previously available functions that did not conform to this format have
been deprecated. They continue to work, but issue a warning. (#28)bucket
and object
names was
swapped in most object-related functions and the Bucket name has been
added to the object lists returned by getbucket()
. This
means that bucket
can be omitted when object
is an object of class “s3_object”.