【问题标题】:Lambda function: Amazon S3 API get-bucket-tagging getting permission errorLambda 函数:Amazon S3 API get-bucket-tagging 获取权限错误
【发布时间】:2019-09-20 20:30:27
【问题描述】:

我想在我的 AWS Lambda 函数(python 3.6 环境)中获取 S3 存储桶对象标签。我在本地环境中成功获取对象标签,但是当我在 AWS lambda 函数中运行它时,我收到错误:

"errorMessage": "调用GetObjectTagging操作时发生错误(AccessDenied):访问被拒绝","

虽然我已经创建了 IAM 角色,其中包含对 s3 存储桶和对象的所有写入。

IAM 角色政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "elastictranscoder:*",
                "s3:*"
            ],
            "Resource": "*"
        }
    ]
} 

代码是:

python
import boto3

s3 = boto3.client('s3')
bucket = 'bucket_name'
key = 'SampleVideo_360x240_2mb (1)----swae.mp4'
response = s3.get_object_tagging(
        Bucket=bucket,
         Key=key,
     )
tag_set = response.get("TagSet")
print(tag_set)

【问题讨论】:

  • 我认为这里删除了“*”,您需要检查 Lambda 是否附加了确切的角色,如果是,请检查存储桶是否在同一个帐户中,如果是,它们是否有任何拒绝声明在里面。

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


【解决方案1】:

为了测试这种情况,我做了以下操作:

  • 使用您作为内联策略提供的权限创建了一个 IAM 角色
  • 使用您的代码创建了一个 AWS Lambda 函数(但使用了我自己的存储桶和密钥)

Lambda 代码在函数中:

import boto3

def lambda_handler(event, context):

    s3 = boto3.client('s3')
    bucket = 'my-bucket'
    key = 'foo.jpg'
    response = s3.get_object_tagging(
            Bucket=bucket,
             Key=key,
         )
    tag_set = response.get("TagSet")
    print(tag_set)

我将该函数作为测试调用,它成功运行并产生了以下输出:

START RequestId: 9e21b6b5-5456-4ec7-9488-0c11c1d52fca Version: $LATEST
[{'Key': 'cheese', 'Value': 'gruyere'}]
END RequestId: 9e21b6b5-5456-4ec7-9488-0c11c1d52fca
REPORT RequestId: 9e21b6b5-5456-4ec7-9488-0c11c1d52fca  Duration: 1218.70 ms    Billed Duration: 1300 ms    Memory Size: 128 MB Max Memory Used: 60 MB  

所以,对我来说一切正常!

【讨论】:

  • 我的示例现在正在处理真实事件。但在测试时它仍然给出同样的错误,我认为我给出了错误,因为我附加了这么多无用的 IAM 策略。
  • 如果它适用于“真实事件”,但不适用于测试,请检查您在 Lambda 控制台中配置的测试数据。您可以在测试数据中指定 Bucket 和 Key 来指向您自己的文件。您可能会收到错误消息,因为您的测试数据指向的存储桶不在您的帐户中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-02
  • 2023-03-13
  • 1970-01-01
  • 2017-07-09
相关资源
最近更新 更多