【问题标题】:Lambda Function Serverless permissionLambda 函数无服务器权限
【发布时间】: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


【解决方案1】:

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

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 合并为一个语句。

【讨论】:

    猜你喜欢
    • 2017-05-25
    • 2022-09-28
    • 2017-12-15
    • 1970-01-01
    • 2018-12-11
    • 2019-02-24
    • 2019-07-23
    • 2021-03-10
    • 2021-07-09
    相关资源
    最近更新 更多