2017-01-04 1 views
5

Я хочу, чтобы назначить различные права доступа для различных функций, перечисленных в моем serverless.ymlКак назначить уровень функции IamRoleStatements в безсерверной платформе?

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

Это не похоже на работу. Когда я добавляю iamRoleStatements на уровне провайдера, он работает, но заканчивает применение разрешений ко всем функциям.

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

ответ

5

docs С, вам нужно создать функцию роль при resources и ссылки на эту новую роль в вашей функции.

Пример:

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: "*" 
Смежные вопросы