Как добавить разрешения пользователя AWS, используя без сервера? - PullRequest
0 голосов
/ 27 сентября 2018

Я создал пользователя в консоли 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 голосов
/ 27 сентября 2018

Если вы имеете в виду разрешения, которые вы предоставляете лямбда-функции во время выполнения, после ее развертывания в Serverless Framework, то вы добавляете разрешения роли в файле serverless.yaml в пределах providersection.

Вот пример разрешений для лямбды для общения с S3, выполнения других лямбд и отправки писем с помощью SES:

iamRoleStatements:
  - Effect: "Allow"
    Action:
      - "s3:PutObject"
      - "s3:DeleteObject"
      - "s3:DeleteObjects"
    Resource: arn:aws:s3:::${self:custom.s3WwwBucket}/content/pages/*
  - Effect: Allow
    Action:
      - lambda:InvokeFunction
      - lambda:InvokeAsync
    Resource: arn:aws:lambda:${self:custom.region}:*:function:${self:service}-${opt:stage}-*
  - Effect: "Allow"
    Action:
      - "ses:SendEmail"
      - "ses:SendEmailRaw"
    Resource: "arn:aws:ses:eu-west-1:01234567891234:identity/noreply@example.com"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...