

# AddPermission
<a name="API_AddPermission"></a>

Le concede permiso a un Servicio de AWS, una Cuenta de AWS o una organización de AWS para utilizar una función. Puede aplicar la política en el nivel de función o especificar un calificador para restringir el acceso a una única versión o alias. Si utiliza un calificador, el invocador debe utilizar el nombre de recurso de Amazon (ARN) completo de esa versión o alias para invocar la función. Nota: Lambda no admite la adición de políticas a la versión \$1LATEST.

Para conceder permiso a otra cuenta, especifique el ID de la cuenta como `Principal`. Para conceder permiso a una organización definida en AWS Organizations, especifique el ID de la organización como `PrincipalOrgID`. Para los Servicios de AWS, la entidad principal es un identificador de dominio definido por el servicio, como `s3.amazonaws.com` o `sns.amazonaws.com`. Para los Servicios de AWS, también puede especificar el ARN del recurso asociado como el `SourceArn`. Si concede permiso a la entidad principal del servicio sin especificar el origen, es posible que otras cuentas puedan configurar recursos en su cuenta para invocar a su función de Lambda.

Esta operación agrega una instrucción a una política de permisos basada en recursos para la función. Para obtener más información sobre las políticas para funciones, consulte [Uso de políticas basadas en recursos para Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html).

## Sintaxis de la solicitud
<a name="API_AddPermission_RequestSyntax"></a>

```
POST /2015-03-31/functions/FunctionName/policy?Qualifier=Qualifier HTTP/1.1
Content-type: application/json

{
   "Action": "string",
   "EventSourceToken": "string",
   "FunctionUrlAuthType": "string",
   "Principal": "string",
   "PrincipalOrgID": "string",
   "RevisionId": "string",
   "SourceAccount": "string",
   "SourceArn": "string",
   "StatementId": "string"
}
```

## Parámetros de solicitud del URI
<a name="API_AddPermission_RequestParameters"></a>

La solicitud utiliza los siguientes parámetros URI.

 ** [FunctionName](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-FunctionName"></a>
El nombre de función de Lambda, la versión o el alias.  

**Formatos de nombre**
+  **Nombre de la función**: `my-function` (solo nombre), `my-function:v1` (con alias).
+  **ARN de la función**: `arn:aws:lambda:us-west-2:123456789012:function:my-function`.
+  **ARN parcial**: `123456789012:function:my-function`.
Puede incluir un número de versión o alias en cualquiera de los formatos. La limitación de longitud se aplica únicamente al ARN completo. Si solo especifica el nombre de la función, se limita a 64 caracteres de longitud.  
Limitaciones de longitud: longitud mínima de 1. La longitud máxima es de 140 caracteres.  
Patrón: `(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\d{1}:)?(\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\$LATEST|[a-zA-Z0-9-_]+))?`   
Obligatorio: sí

 ** [Qualifier](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-Qualifier"></a>
Especifique una versión o alias para agregar permisos a una versión publicada de la función.  
Limitaciones de longitud: longitud mínima de 1. La longitud máxima es de 128.  
Patrón: `(|[a-zA-Z0-9$_-]+)` 

## Cuerpo de la solicitud
<a name="API_AddPermission_RequestBody"></a>

La solicitud acepta los siguientes datos en formato JSON.

 ** [Action](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-Action"></a>
La acción que la entidad principal puede utilizar en la función. Por ejemplo, `lambda:InvokeFunction` o `lambda:GetFunction`.  
Tipo: String  
Patrón: `(lambda:[*]|lambda:[a-zA-Z]+|[*])`   
Obligatorio: sí

 ** [EventSourceToken](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-EventSourceToken"></a>
Un token que el invocador debe proveer para funciones de Alexa Smart Home.  
Tipo: cadena  
Limitaciones de longitud: longitud mínima de 0. La longitud máxima es de 256 caracteres.  
Patrón: `[a-zA-Z0-9._\-]+`   
Obligatorio: no

 ** [FunctionUrlAuthType](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-FunctionUrlAuthType"></a>
El tipo de autenticación que utiliza la URL de función. Establézcalo en `AWS_IAM` si desea restringir el acceso solo a los usuarios autenticados. Establézcalo en `NONE` si desea omitir la autenticación de IAM para crear un punto de conexión público. Para obtener más información, consulte [Modelo de seguridad y autenticación para URL de funciones de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/urls-auth.html).  
Tipo: cadena  
Valores válidos: `NONE | AWS_IAM`   
Obligatorio: no

 ** [Principal](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-Principal"></a>
El Servicio de AWS o la Cuenta de AWS que invoca la función. Si especifica un servicio, utilice el `SourceArn` o el `SourceAccount` para limitar quién puede invocar la función a través de dicho servicio.  
Tipo: String  
Patrón: `[^\s]+`   
Obligatorio: sí

 ** [PrincipalOrgID](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-PrincipalOrgID"></a>
El identificador de su organización en AWS Organizations. Úselo para conceder permisos a todas las Cuentas de AWS de esta organización.  
Tipo: cadena  
Limitaciones de longitud: longitud mínima de 12. La longitud máxima es de 34.  
Patrón: `^o-[a-z0-9]{10,32}$`   
Obligatorio: no

 ** [RevisionId](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-RevisionId"></a>
Actualice la política solo si el ID de revisión coincide con el ID especificado. Utilice esta opción para evitar la modificación de una política que haya cambiado desde que lo leyó por última vez.  
Tipo: cadena  
Obligatorio: no

 ** [SourceAccount](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-SourceAccount"></a>
Para Servicio de AWS, el ID de la Cuenta de AWS propietaria del recurso. Úselo con `SourceArn` para garantizar que el recurso pertenece a la cuenta especificada. Es posible que su propietario elimine un bucket de Amazon S3 y lo vuelva a crear otra cuenta.  
Tipo: cadena  
Limitaciones de longitud: longitud máxima de 12 caracteres.  
Patrón: `\d{12}`   
Obligatorio: no

 ** [SourceArn](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-SourceArn"></a>
Para los Servicios de AWS, el ARN del recurso de AWS que invoca la función. Por ejemplo, un bucket de Amazon S3 o un tema de Amazon SNS.  
Tenga en cuenta que Lambda configura la comparación con el operador de `StringLike`.  
Tipo: String  
Patrón: `arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\-])+:([a-z]{2}(-gov)?-[a-z]+-\d{1})?:(\d{12})?:(.*)`   
Obligatorio: no

 ** [StatementId](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-StatementId"></a>
Un identificador de instrucción que diferencia la instrucción de otras en la misma política.  
Tipo: cadena  
Limitaciones de longitud: longitud mínima de 1. La longitud máxima es de 100 caracteres.  
Patrón: `([a-zA-Z0-9-_]+)`   
Obligatorio: sí

## Sintaxis de la respuesta
<a name="API_AddPermission_ResponseSyntax"></a>

```
HTTP/1.1 201
Content-type: application/json

{
   "Statement": "string"
}
```

## Elementos de respuesta
<a name="API_AddPermission_ResponseElements"></a>

Si la acción se realiza correctamente, el servicio devuelve una respuesta HTTP 201.

El servicio devuelve los datos siguientes en formato JSON.

 ** [Statement](#API_AddPermission_ResponseSyntax) **   <a name="lambda-AddPermission-response-Statement"></a>
La instrucción de permiso que se agrega a la política de la función.  
Tipo: cadena

## Errores
<a name="API_AddPermission_Errors"></a>

Para obtener información acerca de los errores comunes a todas las acciones, consulte [Errores comunes](CommonErrors.md).

 ** InvalidParameterValueException **   
Uno de los parámetros de la solicitud no es válido.  
Código de estado HTTP: 400

 ** PolicyLengthExceededException **   
La política de permisos para el recurso es demasiado grande. Para obtener más información, consulte [Cuotas de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html).  
Código de estado HTTP: 400

 ** PreconditionFailedException **   
El RevisionId proporcionado no coincide con el RevisionId más reciente para la función o alias de Lambda. Llame a la operación de la API `GetFunction` o `GetAlias` para recuperar la última versión de RevisionId para su recurso.  
Código de estado HTTP: 412

 ** ResourceConflictException **   
El recurso ya existe o hay otra operación en marcha.  
Código de estado HTTP: 409

 ** ResourceNotFoundException **   
El recurso especificado en la solicitud no existe.  
Código de estado HTTP: 404

 ** ServiceException **   
El servicio AWS Lambda detectó un error interno.  
Código de estado HTTP: 500

 ** TooManyRequestsException **   
Se ha superado el límite de rendimiento de la solicitud. Para obtener más información, consulte [Cuotas de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html#api-requests).  
Código de estado HTTP: 429

## Véase también
<a name="API_AddPermission_SeeAlso"></a>

Para obtener más información sobre el uso de esta API en un SDK de AWS de un lenguaje específico, consulte:
+  [AWS Command Line Interface](https://docs.aws.amazon.com/goto/aws-cli/lambda-2015-03-31/AddPermission) 
+  [AWS SDK para .NET](https://docs.aws.amazon.com/goto/DotNetSDKV3/lambda-2015-03-31/AddPermission) 
+  [SDK de AWS para C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/lambda-2015-03-31/AddPermission) 
+  [AWS SDK para Go](https://docs.aws.amazon.com/goto/SdkForGoV1/lambda-2015-03-31/AddPermission) 
+  [AWS SDK para Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/lambda-2015-03-31/AddPermission) 
+  [AWS SDK para JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/lambda-2015-03-31/AddPermission) 
+  [AWS SDK para PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/lambda-2015-03-31/AddPermission) 
+  [AWS SDK para Python](https://docs.aws.amazon.com/goto/boto3/lambda-2015-03-31/AddPermission) 
+  [AWS SDK para Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/lambda-2015-03-31/AddPermission) 