Definição das permissões e funções do IAM para o Lambda@Edge - Amazon CloudFront

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Definição das permissões e funções do IAM para o Lambda@Edge

Para configurar o Lambda@Edge, você deve configurar permissões específicas do IAM e uma função de execução do IAM. O Lambda @Edge também cria funções vinculadas a serviços para replicar funções do Lambda para CloudFront regiões e permitir o uso de arquivos de log. CloudWatch CloudFront

Permissões do IAM necessárias para associar funções do Lambda @Edge a distribuições CloudFront

Além das permissões do IAM que você precisa usarAWS Lambda, o usuário precisa das seguintes permissões do IAM para associar funções do Lambda às distribuições: CloudFront

  • lambda:GetFunction

    Permite que o usuário obtenha informações de configuração para a função do Lambda e um URL pré-assinado para baixar um arquivo .zip que contém a função.

    Para o recurso, especifique o ARN da versão da função que você deseja executar quando ocorrer um CloudFront evento, conforme mostrado no exemplo a seguir:

    arn:aws:lambda:us-east-1:123456789012:function:TestFunction:2

  • lambda:EnableReplication*

    Adiciona uma permissão à política de recurso que concede ao serviço de replicação do Lambda permissão para obter o código e a configuração da função.

    Importante

    O asterisco (*) no final da permissão é necessário: lambda:EnableReplication*

    Para o recurso, especifique o ARN da versão da função que você deseja executar quando ocorrer um CloudFront evento, conforme mostrado no exemplo a seguir:

    arn:aws:lambda:us-east-1:123456789012:function:TestFunction:2

  • lambda:DisableReplication*

    Adiciona uma permissão à política de recurso que concede ao serviço de replicação do Lambda permissão para que a função seja excluída.

    Importante

    O asterisco (*) no final da permissão é necessário: lambda:DisableReplication*

    Para o recurso, especifique o ARN da versão da função que você deseja executar quando ocorrer um CloudFront evento, conforme mostrado no exemplo a seguir:

    arn:aws:lambda:us-east-1:123456789012:function:TestFunction:2

  • iam:CreateServiceLinkedRole

    Permite que o usuário crie uma função vinculada ao serviço que é usada pelo Lambda @Edge para replicar funções do Lambda em. CloudFront Depois que essa função é criada pela primeira distribuição que você usa com o Lambda@Edge, não é necessário adicionar a permissão a outras distribuições usadas com o Lambda@Edge.

  • cloudfront:UpdateDistribution ou cloudfront:CreateDistribution

    Use cloudfront:UpdateDistribution para atualizar uma distribuição ou cloudfront:CreateDistribution para criar uma distribuição.

Para obter mais informações, consulte a documentação a seguir:

Função de execução de função para primários de serviço

Você deve criar uma função do IAM que possa ser presumidas pelos principais de serviço lambda.amazonaws.com e edgelambda.amazonaws.com. Essa função é assumida pelos principais de serviço quando executarem sua função. Para obter mais informações, consulte a seção Criar funções e anexar políticas (console) do Guia do usuário do IAM.

Você adiciona essa função sob a guia Trust Relationship (Relação de confiança) no IAM (não a adicione sob a guia Permissions (Permissões)).

Aqui está um exemplo de política de confiança da função:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com", "edgelambda.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

Para obter informações sobre as permissões necessárias para conceder à função de execução, consulte Gerenciar permissões: como usar uma função do IAM (função de execução) no Guia do desenvolvedor do AWS Lambda. Observe o seguinte:

  • Por padrão, sempre que um CloudFront evento aciona uma função Lambda, os dados são gravados em Logs. CloudWatch Se você quiser usar esses registros, a função de execução precisa de permissão para gravar dados CloudWatch nos registros. Você pode usar o predefinido AWSLambdaBasicExecutionRole para conceder permissão à função de execução.

    Para obter mais informações sobre CloudWatch registros, consulteLogs de funções de borda.

  • Se o código da sua função Lambda acessar outros recursos da AWS, como leitura de um objeto em um bucket do S3, a função de execução precisará de permissão para executar essa operação.

Funções vinculadas ao serviço para o Lambda@Edge

O Lambda@Edge usa funções vinculadas a serviços do AWS Identity and Access Management (IAM). Uma função vinculada ao serviço é um tipo exclusivo de função do IAM vinculada diretamente a um serviço. As funções vinculadas a serviços são predefinidas pelo serviço e incluem todas as permissões de que ele precisa para chamar outros serviços da AWS em seu nome.

O Lambda@Edge usa a seguinte função vinculada a serviço do IAM:

  • AWSServiceRoleForLambdaReplicator: o Lambda@Edge usa essa função para permitir que ele mesmo replique funções para Regiões da AWS.

  • AWSServiceRoleForCloudFrontLogger— CloudFront usa essa função para enviar arquivos de log para sua CloudWatch conta, para ajudá-lo a depurar erros de validação do Lambda @Edge.

Quando você adiciona pela primeira vez um gatilho Lambda @Edge CloudFront, uma função chamada AWSServiceRoleForLambdaReplicator é criada automaticamente para permitir que o Lambda @Edge replique funções para. Regiões da AWS Essa função é necessária para usar as funções do Lambda@Edge. O ARN para a função AWSServiceRoleForLambdaReplicator é semelhante a:

arn:aws:iam::123456789012:role/aws-service-role/replicator.lambda.amazonaws.com/AWSServiceRoleForLambdaReplicator

A segunda função, chamadaAWSServiceRoleForCloudFrontLogger, é criada automaticamente quando você adiciona a associação da função Lambda @Edge para permitir o envio de arquivos de log de erros do Lambda @Edge CloudFront para o. CloudWatch O ARN para a função AWSServiceRoleForCloudFrontLogger é semelhante a:

arn:aws:iam::account_number:role/aws-service-role/logger.cloudfront.amazonaws.com/AWSServiceRoleForCloudFrontLogger

Uma função vinculada a serviço facilita a configuração e o uso do Lambda@Edge, pois você não precisa adicionar manualmente as permissões necessárias. Lambda@Edge define as permissões de suas funções vinculadas ao serviço e apenas Lambda@Edge pode assumir as funções. As permissões definidas incluem a política de confiança e a política de permissões. A política de permissões não pode ser anexada a nenhuma outra entidade do IAM.

Você deve remover todos os recursos associados CloudFront ou do Lambda @Edge antes de excluir uma função vinculada ao serviço. Isso ajuda a proteger seus recursos do Lambda@Edge, certificando-se de não remover uma função vinculada ao serviço que ainda seja necessária para acessar os recursos ativos.

Para obter informações sobre outros produtos que oferecem suporte a funções vinculadas ao serviço, consulte Serviços da AWS compatíveis com o IAM e procure os serviços que contêm Yes (Sim) na coluna Service-Linked Role (Função vinculada a serviço).

Permissões de função vinculada ao serviço para o Lambda@Edge

O Lambda@Edge usa duas funções vinculadas a serviços: AWSServiceRoleForLambdaReplicator e AWSServiceRoleForCloudFrontLogger. As seções a seguir descrevem as permissões para cada uma dessas funções.

Permissões de função vinculada ao serviço para o replicador do Lambda

Essa função vinculada ao serviço permite que o Lambda replique funções do Lambda@Edge para Regiões da AWS.

A função vinculada ao serviço AWSServiceRoleForLambdaReplicator conta com o seguinte serviço para assumir a função: replicator.lambda.amazonaws.com

A política de permissões da função permite que o Lambda@Edge conclua as seguintes ações nos recursos especificados:

  • Ação: lambda:CreateFunction em arn:aws:lambda:*:*:function:*

  • Ação: lambda:DeleteFunction em arn:aws:lambda:*:*:function:*

  • Ação: lambda:DisableReplication em arn:aws:lambda:*:*:function:*

  • Ação: iam:PassRole em all AWS resources

  • Ação: cloudfront:ListDistributionsByLambdaFunction em all AWS resources

Permissões de função vinculadas ao serviço para registrador CloudFront

Essa função vinculada ao serviço permite enviar arquivos de log CloudFront para sua CloudWatch conta, para ajudá-lo a depurar erros de validação do Lambda @Edge.

A função vinculada ao serviço AWSServiceRoleForCloudFrontLogger conta com o seguinte serviço para assumir a função: logger.cloudfront.amazonaws.com

A política de permissões da função permite que o Lambda@Edge conclua as seguintes ações nos recursos especificados:

  • Ação: logs:CreateLogGroup em arn:aws:logs:*:*:log-group:/aws/cloudfront/*

  • Ação: logs:CreateLogStream em arn:aws:logs:*:*:log-group:/aws/cloudfront/*

  • Ação: logs:PutLogEvents em arn:aws:logs:*:*:log-group:/aws/cloudfront/*

Você deve configurar permissões para permitir que uma entidade do IAM (como um usuário, grupo ou função) exclua uma função vinculada ao serviço do Lambda@Edge. Para obter mais informações, consulte Permissões de perfil vinculado a serviços no Guia do usuário do IAM.

Criação de funções vinculadas ao serviço para o Lambda@Edge

Normalmente, não é necessário criar manualmente as funções vinculadas a serviços para o Lambda@Edge. O serviço cria as funções automaticamente nas seguintes situações:

  • Quando você cria um acionador pela primeira vez, o serviço cria uma função AWSServiceRoleForLambdaReplicator. Caso a função ainda não exista, isso permitirá ao Lambda replicar as funções do Lambda@Edge para Regiões da AWS.

    Se você excluir a função vinculada ao serviço, a função será criada novamente quando você adicionar um novo gatilho para o Lambda@Edge em uma distribuição.

  • Quando você atualiza ou cria uma CloudFront distribuição que tem uma associação Lambda @Edge, o serviço cria uma funçãoAWSServiceRoleForCloudFrontLogger, se a função ainda não existir, que permite enviar seus arquivos de log CloudFront para. CloudWatch

    Se você excluir a função vinculada ao serviço, a função será criada novamente quando você atualizar ou criar uma CloudFront distribuição que tenha uma associação Lambda @Edge.

Se você precisar criar manualmente essas funções vinculadas ao serviço, execute os seguintes comandos usando a AWS CLI:

Para criar a função AWSServiceRoleForLambdaReplicator

aws iam create-service-linked-role --aws-service-name replicator.lambda.amazonaws.com

Para criar a função AWSServiceRoleForCloudFrontLogger

aws iam create-service-linked-role --aws-service-name logger.cloudfront.amazonaws.com

Edição de funções vinculadas ao serviço do Lambda@Edge

O Lambda@Edge não permite que você edite as funções vinculadas a serviços AWSServiceRoleForLambdaReplicator ou AWSServiceRoleForCloudFrontLogger. Depois que o serviço criar uma função vinculada a serviço, você não poderá alterar o nome da função, pois várias entidades podem fazer referência a ela. No entanto, você poderá editar a descrição de uma função usando o IAM. Para ter mais informações, consulte Editar um perfil vinculado ao serviço no Guia do usuário do IAM.

Compatível com Regiões da AWS funções CloudFront vinculadas a serviços

CloudFront suporta o uso de funções vinculadas a serviços para Lambda @Edge no seguinte: Regiões da AWS

  • Leste dos EUA (Norte da Virgínia): us-east-1

  • US East (Ohio) – us-east-2

  • US West (N. California) – us-west-1

  • US West (Oregon) – us-west-2

  • Asia Pacific (Mumbai) – ap-south-1

  • Ásia-Pacífico (Seul) – ap-northeast-2

  • Asia Pacific (Singapore) – ap-southeast-1

  • Ásia-Pacífico (Sydney) – ap-southeast-2

  • Ásia-Pacífico (Tóquio) (ap-northeast-1)

  • Europe (Frankfurt) – eu-central-1

  • Europe (Ireland) – eu-west-1

  • Europe (London) – eu-west-2

  • South America (São Paulo) – sa-east-1