登录
首页 >  Golang >  Go问答

AWS Golang S3 管理器上传问题:拒绝访问

来源:stackoverflow

时间:2024-02-20 21:15:24 319浏览 收藏

一分耕耘,一分收获!既然都打开这篇《AWS Golang S3 管理器上传问题:拒绝访问》,就坚持看下去,学下去吧!本文主要会给大家讲到等等知识点,如果大家对本文有好的建议或者看到有不足之处,非常欢迎大家积极提出!在后续文章我会继续更新Golang相关的内容,希望对大家都有所帮助!

问题内容

我正在使用 s3 上传管理器将大文件上传到 s3。

if _, err := uploader.uploadwithcontext(ctx, &s3manager.uploadinput{
        bucket:          aws.string(s.config.gets3exportbucket()),
        key:             aws.string(key),
        body:            bytes.newreader(buf.bytes()),
        contentencoding: aws.string("gzip"),
        contenttype:     aws.string("application/json"),
    }); err != nil {
        return fmt.errorf("failed to upload file, %w", err)
    }

根据此 aws 文档,我也向我的 lambda 提供了权限。

#Created Policy for IAM Role
resource "aws_iam_policy" "s3_write_policy" {
  name        = "${local.namespace}-s3-write-access"
  description = "Allow Lambda to access s3 where back will be written"
  policy      = data.aws_iam_policy_document.s3_write_policy.json
}

data "aws_iam_policy_document" "s3_write_policy" {
  statement {
    sid       = "WriteObjectActions"
    effect    = "Allow"
    actions   = [
      "s3:AbortMultipartUpload",
      "s3:GetObject",
      "s3:ListBucket",
      "s3:ListBucketMultipartUploads",
      "s3:PutObject",]
    resources = [
      aws_s3_bucket.db_export.arn]
  }
}

但是,我不断收到来自 s3 的访问被拒绝错误。


解决方案


您不仅需要提供对存储桶的访问权限,还需要提供对存储桶内所有对象的访问权限。

尝试此政策

data "aws_iam_policy_document" "s3_write_policy" {
  statement {
    sid       = "WriteObjectActions"
    effect    = "Allow"
    actions   = [
      "s3:AbortMultipartUpload",
      "s3:GetObject",
      "s3:ListBucket",
      "s3:ListBucketMultipartUploads",
      "s3:PutObject",]
    resources = [
      aws_s3_bucket.db_export.arn,
      "${aws_s3_bucket.db_export.arn}/*"]
  }
}

好了,本文到此结束,带大家了解了《AWS Golang S3 管理器上传问题:拒绝访问》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>