Como faço para conceder permissões do IAM para uma função do Lambda usando um modelo do AWS SAM?
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:
- O nome de uma política gerenciada pela AWS
- O nome de um modelo de política do AWS SAM
- Um documento de política em linha
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:
- O ARN de um perfil de execução do Lambda que tem uma política de permissões do IAM anexada.
- Uma referência a um recurso de Role que você definiu no mesmo modelo do AWS SAM.
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
AWS Serverless Application Model (AWS SAM) (repositório do AWS SAM no GitHub)
Policy templates (repositório do AWS SAM no GitHub)
Vídeos relacionados
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há um ano