【问题标题】:Error in parse_aws_s3_response, Forbidden (http 403)parse_aws_s3_response 中的错误,禁止 (http 403)
【发布时间】:2017-09-11 15:39:39
【问题描述】:

我是 我正在尝试使用 aws.s3 库将数据加载到 S3 中。下面是我的代码:

Sys.setenv("AWS_ACCESS_KEY_ID" = ".............",
       "AWS_SECRET_ACCESS_KEY" = "...............",
       "AWS_DEFAULT_REGION" = "......") 

查看存储桶:

get_bucket(bucket = "....",
           check_region = FALSE,
           verbose = TRUE)

上面的代码有效并且返回了存储桶的内容。

将对象保存到 s3:

s3save(data, 
       object = ".....",
       bucket = ".....")

错误返回:

List of 4
$ Code     : chr "AccessDenied"
$ Message  : chr "Access Denied"
$ RequestId: chr ""
$ HostId   : chr ""
- attr(*, "headers")=List of 6
..$ x-amz-request-id : chr ""
..$ x-amz-id-2       : chr ""
..$ content-type     : chr "application/xml"
..$ transfer-encoding: chr "chunked"
..$ date             : chr "Tue, 05 Sep 2017 13:23:42 GMT"
..$ server           : chr "AmazonS3"
..- attr(*, "class")= chr [1:2] "insensitive" "list"
- attr(*, "class")= chr "aws_error"
- attr(*, "request_canonical")= chr "GET\n/"| __truncated__
- attr(*, "request_string_to_sign")= car ""| __truncated__
- attr(*, "request_signature")= chr "AWS4-HMAC-SHA256 Credential=| 
__truncated__
NULL

Error in parse_aws_s3_response(r, Sig, verbose = verbose) : 
Forbidden (HTTP 403).

这个问题的任何解决方案。

【问题讨论】:

  • 我也有同样的问题
  • 我也有类似的问题。你找到解决方案了吗?
  • @T-jay 你有没有解决这个问题,或者请在下面标记答案。

标签: r amazon-s3


【解决方案1】:

您的 IAM 帐户似乎无权执行该操作。 如果您是 AWS 账户的所有者,您可以转到 AWS 服务 IAM,单击用户,选择此 IAM 用户并为其添加必要的授权。

【讨论】:

    【解决方案2】:

    @audiracmichelle,@Prakhar,使用 aws.s3 库中的函数 put_object,如下所示。函数 put_object 的 object 输入参数是对象在 s3 中应具有的名称(字符串)。

    您可以先从内存中写入一个序列化对象(在本例中为 data):

    in_mem_obj <- rawConnection(raw(0), "w")
    utils::write.table(data, in_mem_obj, sep = "\t", na = "", quote = TRUE, 
                       row.names = FALSE, fileEncoding="UTF-8")
    

    然后将对象保存到 S3 存储桶:

    put_object(rawConnectionValue(in_mem_obj),
               object = FILEPATH/FILENAME,
               bucket = BUCKET,
               headers = c('x-amz-server-side-encryption' = 'AES256'),
               key = AWS_ACCESS_KEY_ID,
               secret = AWS_SECRET_ACCESS_KEY,
               region = AWS_REGION,
               check_region = FALSE)
    

    【讨论】:

      【解决方案3】:

      我在尝试时收到了同样的错误消息

      get_bucket("collidr-api")
      

      我需要做的就是像这样添加区域名称

      get_bucket("collidr-api", region="asia-south-01")
      

      然后它起作用了。我找到了那个信息here

      【讨论】:

        猜你喜欢
        • 2011-07-12
        • 2018-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-20
        • 2018-05-15
        • 2016-05-22
        • 1970-01-01
        相关资源
        最近更新 更多