2017-01-04 11 views
5

Tôi muốn gán quyền khác nhau cho các chức năng khác nhau được liệt kê trong serverless.yml tôiLàm cách nào để gán IamRoleStatements cấp hàm trong Serverless Framework?

functions: 
    hello: 
    handler: handler.hello 
    crawl-distributor: 
    handler: CrawlDistributor.handler 
    product-scanner: 
    handler: ProductScanner.handler 
    iamRoleStatements: 
     - Effect: Allow 
     Action: 
      - dynamodb:* 
      - lambda:* 
     Resource: "*" 

này dường như không làm việc. Khi tôi thêm iamRoleStatements ở cấp nhà cung cấp, nó hoạt động, nhưng kết thúc việc áp dụng các quyền cho tất cả các hàm.

provider: 
    name: aws 
    runtime: nodejs4.3 
    stage: api 
    region: us-east-1 
    profile: dev 
    iamRoleStatements: 
    - Effect: Allow 
     Action: 
     - dynamodb:* 
     - lambda:* 
     Resource: "*" 

Trả lời

5

Từ docs, bạn cần phải tạo ra các vai trò chức năng dưới resources và tham khảo vai trò mới này bên trong hàm của bạn.

Ví dụ:

service: my-test 

provider: 
    name: aws 
    runtime: nodejs4.3 
    stage: api 
    region: us-east-1 
    profile: dev 

functions: 
    hello: 
    handler: handler.hello 
    crawl-distributor: 
    handler: CrawlDistributor.handler 
    product-scanner: 
    role: myDynamoRole 
    handler: ProductScanner.handler 

resources: 
    Resources: 
    myDynamoRole: 
     Type: AWS::IAM::Role 
     Properties: 
     RoleName: myDynamoRole 
     AssumeRolePolicyDocument: 
      Version: '2012-10-17' 
      Statement: 
      - Effect: Allow 
       Principal: 
       Service: 
        - lambda.amazonaws.com 
       Action: sts:AssumeRole 
     Policies: 
      - PolicyName: myPolicyName 
      PolicyDocument: 
       Version: '2012-10-17' 
       Statement: 
       - Effect: Allow 
        Action: 
        - dynamodb:* 
        - lambda:* 
        Resource: "*" 
Các vấn đề liên quan