【问题标题】:S3 Policy Issue when uploading via Lambda通过 Lambda 上传时的 S3 策略问题
【发布时间】:2018-02-15 08:57:51
【问题描述】:

我正在使用 AWS Lambda 将文件上传到 S3 并使用命令

s3 = boto3.resource('s3')
s3.meta.client.upload_file("/tmp/" + fileName, [BUCKET NAME], fileName)

Lambda 策略也被定义为

{
        "Action": [
            "s3:PutObject"
        ],
        "Resource": "arn:aws:s3:::[BUCKET NAME]",
        "Effect": "Allow"
},

但是当我运行该函数时,它给出了错误

(<class 'boto3.exceptions.S3UploadFailedError'>, 
S3UploadFailedError('Failed to upload /tmp/[FILE NAME] to [BUCKET 
NAME]/[FILE NAME]: An error occurred (AccessDenied) when calling the 
PutObject operation: Access Denied',), <traceback object at 
0x7f61e9d2ec48>)

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-lambda boto boto3


    【解决方案1】:

    看来你不见了

    “/*”

    在政策的资源中。对于对象级操作,资源应该是

    “arn:aws:s3:::examplebucket/*”。

    另外请确保没有拒绝访问的存储桶策略。

    更多信息:

    【讨论】:

      【解决方案2】:

      您还需要允许 ListBucket 策略,以便以编程方式将对象放入 s3。

      所以,你的政策是:

      {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": ["s3:ListBucket"],
            "Resource": ["arn:aws:s3:::BUCKET_NAME"]
          },
          {
            "Effect": "Allow",
            "Action": [
              "s3:PutObject"
            ],
            "Resource": ["arn:aws:s3:::BUCKET_NAME/*"]
          }
        ]
      } 
      

      【讨论】:

        【解决方案3】:

        您对该角色与 lambda.amazonaws.com 是否有信任关系?

        同样根据您的政策,应如下所示,

        {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Sid": "statement1",
                    "Effect": "Allow",
                    "Action":   ["s3:PutObject"],
                    "Resource": "arn:aws:s3:::[BUCKET NAME]/*"
                }
            ]
        }
        

        我看到存储桶名称末尾缺少 /*。

        参考文档:http://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html

        【讨论】:

          猜你喜欢
          • 2021-04-01
          • 2021-07-11
          • 2017-12-30
          • 2021-06-04
          • 2020-10-22
          • 1970-01-01
          • 2019-11-18
          • 2019-02-14
          • 2013-01-21
          相关资源
          最近更新 更多