

# Conceder a outras contas acesso à função do Lambda
<a name="permissions-function-cross-account"></a>

Para compartilhar uma função com outra Conta da AWS, adicione uma instrução de permissões entre contas à [política baseada no recurso](access-control-resource-based.md) da função. Execute o comando [add-permission](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/add-permission.html) e especifique o ID da conta como a `principal`. 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 \
  --principal 111122223333 \
  --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](access-control-identity-based.md) 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](configuration-aliases.md) 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](access-control-identity-based.md).