Conceder a outras contas acesso à função do Lambda
Para compartilhar uma função com outra Conta da AWS, adicione uma instrução de permissões entre contas à política baseada no recurso da função. Execute o comando add-permissionprincipal
. O exemplo a seguir concede permissão à conta 111122223333
para invocar my-function
com o alias prod
.
aws lambda add-permission \ --function-name my-function:
prod
\ --statement-id xaccount \ --action lambda:InvokeFunction \ --principal111122223333
\ --output text
A seguinte saída deverá ser mostrada:
{"Sid":"xaccount","Effect":"Allow","Principal":{"AWS":"arn:aws:iam::111122223333:root"},"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:us-east-1:123456789012:function:my-function"}
A política baseada em recursos concede permissão para a outra conta acessar a função, mas não permite que os usuários nessa conta excedam suas permissões. Os usuários na outra conta devem ter as permissões de usuário correspondentes para usar a API do Lambda.
Para limitar o acesso a um usuário ou função em outra conta, especifique o ARN completo da identidade como o principal. Por exemplo, arn:aws:iam::123456789012:user/developer
.
O alias limita qual versão a outra conta pode chamar. Ele exige que a outra conta inclua o alias no ARN da função.
aws lambda invoke \ --function-name arn:aws:lambda:us-east-2:123456789012:function:my-function:prod out
A seguinte saída deverá ser mostrada:
{ "StatusCode": 200, "ExecutedVersion": "1" }
Depois disso, o proprietário da função pode atualizar o alias para apontar para uma nova versão sem que o chamador precise alterar a maneira como eles invocam sua função. Isso garante que a outra conta não precise alterar o código para usar a nova versão, e ela tem permissão somente para invocar a versão da função associada ao alias.
Conceda acesso entre contas para a maioria das ações de API que operam em uma função existente. Por exemplo, é possível conceder acesso a lambda:ListAliases
para obter uma lista de aliases ou a lambda:GetFunction
para permitir que eles façam download do código da função. Adicione cada permissão separadamente ou use lambda:*
para conceder acesso a todas as ações da função especificada.
Para conceder permissão a outras contas para várias funções ou para ações que não operem em uma função, recomendamos usar as funções do IAM.