Man*_*rek 1 amazon-s3 amazon-web-services amazon-cloudwatch
我正在尝试调用一个 lambda 函数,它将一些消息推送到 s3 存储桶中。但是每次我调用 lambda 函数时,我都会收到以下错误
ClientError: An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
Run Code Online (Sandbox Code Playgroud)
下面是我的 lambda 代码
import json
import boto3
def lambda_handler(event, context):
s3 = boto3.client("s3")
#data = json.loads(event["Records"][0]["body"])
data = event["Records"][0]["body"]
s3.put_object(Bucket="sqsmybucket",Key="data.json", Body=json.dumps(data))
#print(event)
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
Run Code Online (Sandbox Code Playgroud)
我已经检查了 s3 存储桶权限,并且所有公共访问权限都已为其打开
但是我在 cloudwatch 日志中反复收到以下错误消息
2020-06-05T23:48:20.920+05:30
[ERROR] ClientError: An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
Traceback (most recent call last):
File "/var/task/lambda_function.py", line 9, in lambda_handler
s3.put_object(Bucket="sqsmybucket",Key="data.json", Body=json.dumps(data))
File "/var/runtime/botocore/client.py", line 316, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/var/runtime/botocore/client.py", line 626, in _make_api_call
raise error_class(parsed_response, operation_name)
Run Code Online (Sandbox Code Playgroud)
请帮助我对这种情况真的一无所知。提前致谢。
请确保附加到 lambda 函数的角色具有s3:PutObject权限。
例如,所需的最小特权/权限是
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::<bucket-name>/*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3016 次 |
| 最近记录: |