Search code examples
ramazon-web-servicescredentialsprofiler-paws

Using R and paws: How to set credentials using profile in config file?


I use SSO and a profile as defined in ~/.aws/config (MacOS) to access AWS services, for instance:

aws s3 ls --profile myprofilename

I would like to access AWS services from within R, using the paws() package. In order to do this, I need to set my credentials in the R code. I want to do this through accessing the profile in the ~/.aws/config file (as opposed to listing access keys in the code), but I haven't been able to figure out how to do this.

I looked at the extensive documentation here, but it doesn't seem to cover my use case.

The best I've been able to come up with is:

x = s3(config = list(credentials = list(profile = "myprofilename")))
x$list_objects()

... which throws an error: "Error in f(): No credentials provided", suggesting that the first line of code above does not connect to my profile as stored in ~/.aws/config.


Solution

  • If you have AWS cli credentials set up as a bash profile eg. ~/.aws/config:

    [profile myprof]
    region=eu-west-2
    output=json
    

    .. and credentials eg. ~/.aws/credentials:

    [myprof]
    aws_access_key_id = XXX
    aws_secret_access_key = xxx
    

    .. paws will use these if you add a line to ~/.Renviron:

    AWS_PROFILE=myprof