【发布时间】:2021-04-13 00:17:01
【问题描述】:
在 AWS Lambda 中运行我的 Python 代码时,使用 boto3 的 copy_object 方法时出现此错误。
AWS Lambda 代码
import json
import boto3
def lambda_handler(event, context):
some_binary_data = b'Here we have some data'
client = boto3.client("s3")
# Upload - Working
client.put_object(Body=some_binary_data, Bucket='test', Key="upload/binary_1.txt")
# Copy - Working
s3 = boto3.resource('s3')
copy_source = {
'Bucket': 'test',
'Key': 'upload/binary_1.txt'
}
s3.meta.client.copy(copy_source, 'test', 'upload/binary_1_copied.txt')
# Copy - NOT WORKING
# Access Denied even after adding GetObjectTagging and PutObjectTagging permissions in the policy
client.copy_object(Bucket="test", CopySource="upload/binary_1.txt", Key="upload/binary_1_copied.txt")
# Delete - Working
client.delete_object(Bucket="test", Key="upload/binary_1.txt")
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
我正在将此策略(称为 JSON)用于分配给我的 lambda 函数的角色。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:ReplicateObject",
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectTagging",
"s3:ListBucket",
"s3:PutObjectTagging",
"s3:DeleteObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::test/*",
"arn:aws:s3:::test"
]
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
}
]
}
注意 - S3-Bucket 当前包含上传/binary_1.txt 文件
【问题讨论】:
-
我猜
test不是您存储桶的实际名称? -
是的
test我的 s3 存储桶的实际名称
标签: amazon-s3 aws-lambda boto3 amazon-iam