AddPermission - AWS Lambda

AddPermission

Le concede permiso a un servicio de AWS u otra cuenta 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 $LATEST.

Para conceder permiso a otra cuenta, especifique el ID de la cuenta como Principal. 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 Lambda.

Esta acción agrega una instrucción a una política de permisos basada en recursos para la función. Para obtener más información acerca de las políticas de funciones, consulte Políticas de funciones Lambda.

Sintaxis de la solicitud

POST /2015-03-31/functions/FunctionName/policy?Qualifier=Qualifier HTTP/1.1 Content-type: application/json { "Action": "string", "EventSourceToken": "string", "Principal": "string", "RevisionId": "string", "SourceAccount": "string", "SourceArn": "string", "StatementId": "string" }

Parámetros de solicitud del URI

La solicitud utiliza los siguientes parámetros URI.

FunctionName

El nombre de función Lambda, la versión o el alias.

Formatos de nombre

  • Nombre de función: my-function (solo nombre), my-function:v1 (con alias).

  • ARN de 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.

Pattern: (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

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 caracteres.

Pattern: (|[a-zA-Z0-9$_-]+)

Cuerpo de la solicitud

La solicitud acepta los siguientes datos en formato JSON.

Action

La acción que la entidad principal puede utilizar en la función. Por ejemplo, lambda:InvokeFunction o lambda:GetFunction.

Tipo: String

Pattern: (lambda:[*]|lambda:[a-zA-Z]+|[*])

Obligatorio: sí

EventSourceToken

Para funciones de Alexa Smart Home, el invocador debe suministrar un token.

Tipo: String

Limitaciones de longitud: longitud mínima de 0. La longitud máxima es de 256 caracteres.

Pattern: [a-zA-Z0-9._\-]+

Requerido: No

Principal

La cuenta o servicio 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

Pattern: [^\s]+

Obligatorio: sí

RevisionId

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: String

Requerido: No

SourceAccount

Para Amazon S3, el ID de la cuenta propietaria del recurso. También puede utilizarlo 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: String

Limitaciones de longitud: longitud máxima de 12 caracteres.

Pattern: \d{12}

Requerido: No

SourceArn

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

Pattern: arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\-])+:([a-z]{2}(-gov)?-[a-z]+-\d{1})?:(\d{12})?:(.*)

Requerido: No

StatementId

Un identificador de instrucción que diferencia la instrucción de otras en la misma política.

Tipo: String

Limitaciones de longitud: longitud mínima de 1. La longitud máxima es de 100. caracteres.

Pattern: ([a-zA-Z0-9-_]+)

Obligatorio: sí

Sintaxis de la respuesta

HTTP/1.1 201 Content-type: application/json { "Statement": "string" }

Elementos de respuesta

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

El servicio devuelve los datos siguientes en formato JSON.

Statement

La instrucción de permiso que se agrega a la política de la función.

Tipo: String

Errors

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. Más información

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 API de 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.

Código de estado HTTP: 429

Véase también

Para obtener más información sobre el uso de esta API en un SDK de AWS de un lenguaje específico, consulte: