【发布时间】:2018-06-14 16:11:48
【问题描述】:
我一直在使用 python 和无服务器开发 aws lambda 函数。它从 s3 存储桶中读取文件,并将其中的数据作为 csv 存储在另一个存储桶中。该代码与调用本地完美配合,但部署后我得到:
An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
这是函数:
s3_client.put_object(Body=data, Bucket=bucket_name, Key=key_name)
和部分无服务器 yml
iamRoleStatements:
- Effect: Allow
Action:
- KMS:Decrypt
Resource: '*'
- Effect: Allow
Action:
- 's3:*'
Resource:
- 'arn:aws:s3:::output_bucket'
- 'arn:aws:s3:::output_bucket/*'
- Effect: Allow
Action:
- 's3:ListBucket'
Resource:
- 'arn:aws:s3:::input_bucket'
- 'arn:aws:s3:::input_bucket/*'
- Effect: Allow
Action:
- 's3:GetObject'
Resource:
- 'arn:aws:s3:::input_bucket'
- 'arn:aws:s3:::input_bucket/*'
我还需要其他配置吗?我错过了什么明显的东西吗?
【问题讨论】:
-
lambda 附加了一个角色,该角色应该可以访问 s3,你能检查一下吗?
-
@GowthamChand 我该如何检查?错误出现在
s3_client = boto3.client('s3')因为我没有凭据,您知道如何通过 .yml 文件传递它吗?
标签: amazon-web-services permissions aws-lambda