Lambda Function无服务器权限

时间:2018-06-14 07:09:43

标签: amazon-web-services permissions aws-lambda

我一直在用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/*' 

我还需要其他任何配置吗?我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:0)

对我来说,缩进看起来不对。请确保正确使用它。

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'
      - 's3:GetObject'
    Resource:
      - 'arn:aws:s3:::input_bucket'
      - 'arn:aws:s3:::input_bucket/*'

仅供参考:我将s3:ListBuckets3:GetObject合并为一个声明。