如何使用无服务器添加AWS用户权限?

时间:2018-09-27 13:22:58

标签: node.js amazon-web-services serverless-framework aws-serverless

我已经在AWS控制台中创建了一个用户,该用户只能访问Lambda服务。

我的问题是,使用无服务器框架,在我的 serverless.yaml 中,是否可以向用户以及可能的任何其他服务添加S3完全访问权限? 谢谢。

handler.js

 'use strict';
const aws = require('aws-sdk');
const s3 =  new aws.S3({ apiVersion: '2006-03-01' });

module.exports.helloWorld = (event, context, callback) => {

  const params = {};
  s3.listBuckets(params, function(err, data) {
    if (err) console.log(err, err.stack); 
    else     console.log(data);          
  });

  const response = {
    statusCode: 200,
    message: JSON.stringify({message: 'Success!'})
  };
  callback(null, response);
};

serverless.yaml

provider:
  name: aws
  runtime: nodejs8.10
  region: eu-blah-1
  iamRoleStatements:
    - Effect: "Allow"
      Action:
        - "s3:ListBucket"
        - "s3:PutObject"
        - "s3:GetObject"
      Resource: "arn:aws:s3:::examplebucket/*"


functions:
  helloWorld:
    handler: handler.helloWorld
    events:
      - http:
          path: hello-world
          method: get
          cors: true

1 个答案:

答案 0 :(得分:1)

如果您要引用的是Lambda函数在执行时所拥有的权限,那么在无服务器框架对其进行部署之后,您可以在serverless.yaml文件的{ {1}}部分。

以下是Lambda与S3交谈,执行其他Lambda和使用SES发送电子邮件的权限示例:

provider