Desejo usar políticas baseadas em recursos do AWS Lambda para conceder permissão a serviços da AWS.
Descrição breve
Você pode usar a AWS Command Line Interface (AWS CLI) com o Lambda para conceder permissão aos serviços da AWS usando políticas baseadas em recursos. Para obter mais informações, consulte Uso de políticas baseadas em recursos para o AWS Lambda.
Resolução
O exemplo a seguir adiciona permissão para o EventBridge e valida se a função do Lambda invoca a política baseada em recursos.
Observação:
Confirmar se a função do Lambda não tem uma política de recursos configurada
Alguns serviços da AWS, como o EventBridge, criam uma política baseada em recursos para a função Lambda. Verifique se a política baseada em recursos não tem permissão para o EventBridge com o comando get-policy da AWS CLI semelhante ao seguinte:
aws lambda get-policy --region your-region --function-name your-function
An error occurred (ResourceNotFoundException) when calling the GetPolicy operation: The resource you requested does not exist.
Esse erro confirma que a função Lambda não tem uma política baseada em recursos configurada.
Adicionar permissões para o EventBridge
Execute o comando add-permission da AWS CLI para invocar a função Lambda semelhante à seguinte:
aws lambda add-permission --region your-region --function-name your-function --statement-id "your-event-permission" --action "lambda:InvokeFunction" --principal "events.amazonaws.com" --source-arn "arn:aws:events:your-region:xxxxxxxxxxxxx:rule/your-event"
{
"Statement": "{\"Sid\":\"your-event-permission\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:your-region:xxxxxxxxxxxxx:function:your-function\",\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:events:your-region:xxxxxxxxxxxxx:rule/your-event\"}}}"
}
Verifique as permissões para a política baseada em recursos da função do Lambda
Execute o comando get-policy da AWS CLI novamente, semelhante ao seguinte:
aws lambda get-policy --region your-region --function-name your-function
{
"Version": "2012-10-17",
"Id": "default",
"Statement": [
{
"Sid": "your-event-permission",
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:your-region:xxxxxxxxxxxxx:function:your-function",
"Condition": {
"ArnLike": {
"AWS:SourceArn": "arn:aws:events:your-region:xxxxxxxxxxxxx:rule/your-event"
}
}
}
]
}
(Opcional) Remova a permissão de uma política baseada em recursos de função do Lambda
Se você não precisar mais de um serviço da AWS para acionar a função do Lambda, poderá executar o comando remove-permission da AWS CLI semelhante ao seguinte:
aws lambda remove-permission --region your-region --function-name your-function --statement-id "your-event-permission"
Observação: a cota de política baseada em recursos da função do Lambda é de 20 KB. Para obter mais informações, consulte Cotas do Lambda.
Informações relacionadas
Como faço para resolver o erro “The final policy size is bigger than the limit” (O tamanho final da política é maior que o limite) do Lambda?