Как назначить роль IAM для неявного шлюза API в шаблоне SAM? - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть шаблон AWS SAM, который создает явный лямбда и неявный шлюз API (через свойство Events).Мне нужно назначить определенные и разные роли IAM для шлюза лямбда-и API.В то время как лямбда-роль самоочевидна из синтаксиса шаблона SAM, я не могу понять, как назначить роль шлюзу API.

Например

# template.yaml
...
Resources:
  MyLambda:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: very-important-lambda
      Handler: src/index.handler
      Runtime: nodejs8.10
      Role: !Sub "arn:aws:iam::${AWS::AccountId}:role/lambda-role-name
      CodeUri: ./build
      # Below event creates an AWS::ApiGateway::RestApi resource, but how do I give that resource an IAM Role?
      Events:
        PostDomainEvent:
          Type: Api
          Properties:
            Method: POST
            Path: "/path/resource/v1"

1 Ответ

0 голосов
/ 21 декабря 2018

Почему вы хотите добавить роль в свой API Gateway?SAM автоматически (неявно) организует, чтобы у шлюза API были разрешения для вызова функций Lambda с помощью политики ресурсов Lambda (подробнее об этом в документах шлюза API)

Если вы хотитеЧтобы установить политику ресурсов шлюза API или задать некоторые другие настройки, можно явно определить API, который используется вашим Lambda-событием.

Например, установка политики ресурсов:

RestApi:
  Type: AWS::Serverless::Api
  Properties:
    Policy: > 
      {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Principal": {
                        "AWS": "arn:aws:iam::123456789012:root"
                    },
                    "Action": "execute-api:Invoke",
                    "Resource": "arn:aws:execute-api:eu-central-1: 123456789012:7mancjlc5z/*"
                }
            ]
        }

Function:
  Type: AWS::Serverless::Function
  Properties:
    Events:
      ApiRequest:
        Type: Api
        Properties:
          Path: /v1/comments
          Method: post
          RestApiId: !Ref RestApi

Документы SAM не совсем ясны по этому вопросу, но на момент написания вышеописанная установка работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...