Como faço para conceder permissões do IAM para uma função do Lambda usando um modelo do AWS SAM?

4 minuto de leitura
0

Quero conceder permissões às funções do AWS Lambda na minha aplicação AWS Serverless Application Model (AWS SAM). Como faço para definir um perfil de execução do Lambda com permissões com escopo definido em um modelo do AWS SAM?

Breve descrição

Para definir um perfil de execução do Lambda em um modelo do AWS SAM, você pode usar as seguintes propriedades de recursos da AWS::Serverless::Function:

  • Policies: permitem que você crie um novo perfil de execução usando políticas predefinidas que podem ter como escopo sua função do Lambda.
  • Role: permite que você defina um perfil do AWS Identity and Access Management (IAM) para usar como perfil de execução da função.
  • PermissionsBoundary: permite que você defina um limite de permissões do IAM para o perfil de execução que você cria.

Observação: as propriedades Policies e Roles não podem ser usadas juntas. Usar a propriedade Role é útil quando seu perfil de execução exige permissões muito específicas para usar políticas predefinidas.

Resolução

Especifique políticas para um novo perfil de execução do Lambda

Para a propriedade Policies, insira qualquer combinação das seguintes opções:

Observação: os modelos de políticas do AWS SAM têm como escopo recursos específicos da AWS. Consulte a Tabela de modelos de políticas para obter uma lista de modelos de políticas e as permissões que eles concedem às suas funções do Lambda.

A seguir estão alguns exemplos de modelos YAML do AWS SAM com Policies definidas:

Exemplo de modelo YAML do AWS SAM com uma política gerenciada pela AWS nomeada

AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31' b
Resources:
  MyFunction:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: index.handler
      Runtime: nodejs8.10
      CodeUri: 's3://my-bucket/function.zip'
      Policies:
      # Give the Lambda service access to poll your DynamoDB Stream
      - AmazonDynamoDBFullAccess

Exemplo de modelo YAML do AWS SAM com um modelo de política do AWS SAM (SQSPollerPolicy) definido

MyFunction:
  Type: 'AWS::Serverless::Function'
  Properties:
    CodeUri: ${codeuri}
    Handler: hello.handler
    Runtime: python2.7
    Policies:
      - SQSPollerPolicy:
          QueueName:
            !GetAtt MyQueue.QueueName

Exemplo de modelo YAML do AWS SAM com um documento de política em linha definido

AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Resources:
  MyFunction:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: index.handler
      Runtime: nodejs8.10
      CodeUri: 's3://my-bucket/function.zip'
      Policies:
      - Statement:
        - Sid: SSMDescribeParametersPolicy
          Effect: Allow
          Action:
          - ssm:DescribeParameters
          Resource: '*'
        - Sid: SSMGetParameterPolicy
          Effect: Allow
          Action:
          - ssm:GetParameters
          - ssm:GetParameter
          Resource: '*'

(Opcional) Especifique um limite de permissões do IAM

Para definir as permissões máximas permitidas para o perfil de execução da sua função do Lambda, use um limite de permissões do IAM.

Para definir um limite de permissões do IAM, faça o seguinte em seu modelo YAML do AWS SAM:

Especifique o nome de recurso da Amazon (ARN) de um limite de permissões

Para a propriedade PermissionsBoundary, insira o ARN de um limite de permissões. Por exemplo:

Properties:
  PermissionsBoundary: arn:aws:iam::123456789012:policy/LambdaBoundaries

Observação: você pode definir PermissionsBoundary somente se estiver criando uma nova função com seu modelo do AWS SAM. Você não pode definir um limite de permissões para um Role existente que você especificar.

Especificar um perfil de execução do Lambda

Para a propriedade Role, insira uma das seguintes opções:

Observação: se você não especificar um Role no seu modelo do AWS SAM, um perfil de execução será criado quando implantar sua aplicação. Esse perfil de execução inclui todas as Policies que você definir.

Exemplo de modelo YAML do AWS SAM com a propriedade Role definida

AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Resources:
  MyFunction:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: index.handler
      Runtime: nodejs8.10
      CodeUri: 's3://my-bucket/function.zip'
      Role: arn:aws:iam::111111111111:role/SAMPolicy

Empacotar e implantar sua aplicação

1.Na interface de linha de comando do AWS SAM (CLI do AWS SAM), execute o comando sam build para criar e empacotar sua aplicação.
Observação: se você receber erros ao executar os comandos da AWS CLI, utilize a versão mais recente da AWS CLI.

2.Execute o comando sam deploy para implantar seu pacote de aplicações do AWS SAM.

Para obter mais informações, consulte Building applications e Deploying serverless applications.


Informações relacionadas

Getting started with AWS SAM

AWS Serverless Application Model (AWS SAM) (repositório do AWS SAM no GitHub)

Policy templates (repositório do AWS SAM no GitHub)

Políticas gerenciadas e em linha

Validating AWS SAM template files

AWS OFICIAL
AWS OFICIALAtualizada há 3 anos