# Using S3 Boards

## Registering

In order to use Amazon S3 Storage as a board, you need an Amazon S3 bucket and a user key enabled for programmatic access container created with enough permissions to access the S3 bucket. You can sign-up and create those from amazonaws.com. Please notice that after crating a bucket, it can take several minutes for this bucket to be usable.

You can then use the S3 Storage bucket, key, and secret to authenticate:

    board_register_s3(bucket = "pinsbucket",
                      key = "AAAAAAAAAAAAAAAAAAAA",
                      secret = "ABCABCABCABCABCABCABCABCABCABCABCABCABCA==")

Notice that `board_register_s3()` is just an alias with named parameters to `board_register()`; the previous code is equivalent to:

    board_register("s3", bucket = "pinsbucket",
                         key = "AAAAAAAAAAAAAAAAAAAA",
                         secret = "ABCABCABCABCABCABCABCABCABCABCABCABCABCA==")

Once the board is registered, you can pin and search using `pin()`, `pin_get()` and `pin_find()`.

## Pinning

Like in other boards, you can create pins for `iris` and `mtcars` by setting `board` to Amazon S3 Bucket’s name,

    pin(iris, description = "The iris data set", board = "s3")
    pin(mtcars, description = "The motor trend cars data set", board = "s3")

After a pin is created, the pin also becomes available in the Amazon S3 Bucket; by default, they are created as private datasets.

You can also retrieve pins back from this repo using the now familiar `pin_get()` function.

    pin_get("iris", board = "s3")

    # A tibble: 150 x 5
       Sepal.Length Sepal.Width Petal.Length Petal.Width Species
              <dbl>       <dbl>        <dbl>       <dbl> <fct>
     1          5.1         3.5          1.4         0.2 setosa
     2          4.9         3            1.4         0.2 setosa
     3          4.7         3.2          1.3         0.2 setosa
     4          4.6         3.1          1.5         0.2 setosa
     5          5           3.6          1.4         0.2 setosa
     6          5.4         3.9          1.7         0.4 setosa
     7          4.6         3.4          1.4         0.3 setosa
     8          5           3.4          1.5         0.2 setosa
     9          4.4         2.9          1.4         0.2 setosa
    10          4.9         3.1          1.5         0.1 setosa
    # … with 140 more rows

Notice you can also retrieve an arbitrary file using the path to the file or its URL as well:

    pin_get("iris/data.csv", board = "s3")

## Discovering

You can then search pins in your S3 board using `pin_find()`, which by default search all boards but you can also explicitly request to use this particular board:

    pin_find("data", board = "s3")

    # A tibble: 2 x 4
      name   description                   type  board
      <chr>  <chr>                         <chr> <chr>
    1 iris   The iris data set             table s3
    2 mtcars The motor trend cars data set table s3

Notice that the given ‘data’ search keyword is searched in the name and description fields for the pins available in this repo.