Concesión de acceso a las funciones de Lambda a otras cuentas
Para compartir una función con otra Cuenta de AWS, agregue una declaración de permisos entre cuentas a la política basada en los recursos de la función. Ejecute el comando add-permissionprincipal
. En el siguiente ejemplo, se concede permiso a la cuenta 111122223333
para invocar my-function
con el alias prod
.
aws lambda add-permission \ --function-name my-function:
prod
\ --statement-id xaccount \ --action lambda:InvokeFunction \ --principal111122223333
\ --output text
Debería ver los siguientes datos de salida:
{"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"}
La política basada en recursos concede permiso a la otra cuenta para obtener acceso a la función, pero no permite a los usuarios de esa cuenta superar sus permisos. Los usuarios de la otra cuenta deben tener los permisos de usuario correspondientes para utilizar la API de Lambda.
Para limitar el acceso a un usuario o función de otra cuenta, especifique el ARN completo de la identidad como el principal. Por ejemplo, arn:aws:iam::123456789012:user/developer
.
El alias limita la versión que puede invocar la otra cuenta. Requiere que la otra cuenta incluya el alias en el ARN de la función.
aws lambda invoke \ --function-name arn:aws:lambda:us-east-2:123456789012:function:my-function:prod out
Debería ver los siguientes datos de salida:
{ "StatusCode": 200, "ExecutedVersion": "1" }
El propietario de la función puede actualizar el alias para que apunte a una nueva versión sin que el autor de la llamada tenga que cambiar la forma en que invoca la función. De este modo, no es necesario que la otra cuenta cambie su código para utilizar la nueva versión y se garantiza que solo tiene permiso para invocar la versión de la función asociada al alias.
Puede conceder acceso entre cuentas para la mayoría de acciones de la API que operen con una función existente. Por ejemplo, puede conceder acceso a lambda:ListAliases
para permitir que una cuenta obtenga una lista de alias o a lambda:GetFunction
para permitirles que descarguen el código de la función. Añada cada permiso por separado o utilice lambda:*
para conceder acceso a todas las acciones para la función especificada.
Si desea conceder a otras cuentas permiso sobre varias funciones o sobre acciones que no pueden utilizarse con una función, le recomendamos que utilice los roles de IAM.