View a markdown version of this page

AWS::Serverless::WebFunction - AWS Serverless Application Model

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

AWS::Serverless::WebFunction

Crée une fonction AWS Lambda Web qui traite les requêtes HTTP via un point de terminaison géré. Contrairement à une fonction d'événement Lambda, qui s'exécute en réponse à des appels et à des événements, une fonction Web exécute votre serveur Web et reçoit directement des requêtes HTTP. À partir d'une seuleAWS::Serverless::WebFunction, il AWS SAM génère la fonction Web, une révision immuable contenant votre code et votre configuration, et un point de terminaison qui achemine le trafic vers une ou plusieurs révisions.

Note

Lorsque vous déployez vers AWS CloudFormation, vos AWS SAM ressources sont AWS SAM transformées en CloudFormation ressources. Pour plus d’informations, consultez Générées CloudFormation ressources pour AWS SAM.

Important

Votre code de fonction doit exécuter un serveur HTTP qui écoute l'hôte et le port dans la variable d'AWS_LAMBDA_HTTP_ENDPOINTenvironnement. Le temps d'exécution n'est pas définiPORT. Par défaut, le moteur d'exécution s'exécute index.js à la racine du package de déploiement. EntryPointÀ utiliser pour exécuter un autre fichier.

Important

Le compartiment Amazon S3 qui contient votre package de déploiement doit répondre aux exigences suivantes :

  • La gestion des versions est activée.

  • Une politique de compartiment accorde lambda.amazonaws.com les s3:GetObjectVersion autorisations s3:GetObject et. Nous vous recommandons de définir la politique avec une ArnLike condition aws:SourceArn correspondant aux révisions de la fonction, par exemplearn:aws:lambda:us-east-1:111122223333:web-function/my-function/revision/*.

  • Si l'objet est chiffré avec SSE-KMS, il utilise une clé gérée par le client dont la politique en matière de clés lambda.amazonaws.com permet d'appelerkms:Decrypt. La clé AWS gérée pour Amazon S3 (aws/s3) n'est pas prise en charge, car vous ne pouvez pas modifier sa politique en matière de clés.

Pour un exemple de politique de bucket, consultez la section Politique de bucket pour Lambda dans le Guide du AWS Lambda développeur.

CodeUridoit faire référence à un objet dans Amazon S3. Les sam package commandes sam build et ne prennent pas en charge les chemins locaux pour cette ressource.

Syntaxe

Pour déclarer cette entité dans votre modèle AWS Serverless Application Model (AWS SAM), utilisez la syntaxe suivante.

YAML

Type: AWS::Serverless::WebFunction Properties: AuthType: String AutoDeploymentMode: String CodeUri: String | CodeUri EgressNetworkConnectorArn: String EndpointDescription: String EndpointName: String EndpointType: String EntryPoint: String EnvironmentVariables: Map ExecutionRoleArn: String FunctionName: String InlineCode: String KmsKeyArn: String LoggingConfig: Map MaxConcurrencyPerEnvironment: Integer ReplicaRegions: List | ReplicaRegions RevisionDescription: String RevisionWeights: RevisionWeights Runtime: String ScalingConfig: Map Tags: Map ThrottleConfig: Map Timeout: Integer

Propriétés

AuthType

Comment le point de terminaison autorise les demandes.

  • IamAuth: Lambda autorise les demandes avec Signature Version 4 et IAM. Les appelants ont besoin de cette lambda:InvokeWebFunctionEndpoint autorisation, accordée par le biais d'une politique basée sur les ressources concernant la fonction.

  • ApplicationManaged: le point de terminaison est public. Votre fonction doit autoriser elle-même chaque demande.

Valeurs valides : IamAuth, ApplicationManaged

Type : chaîne

Obligatoire : oui

CloudFormation compatibilité : cette propriété est transmise directement à la AuthType propriété d'une AWS::Lambda::WebFunctionEndpoint ressource.

AutoDeploymentMode

Comment le point de terminaison achemine le trafic entre les révisions.

  • LatestRevision: envoie 100 % du trafic vers la révision créée par ce déploiement.

  • Disabled: achemine le trafic en fonction de RevisionWeights.

Les valeurs que vous pouvez utiliser, et si elles RevisionWeights sont obligatoires, dépendent des éléments EndpointTypesuivants :

  • HomeRegion: utilisez l'une ou l'autre valeur. AvecDisabled, RevisionWeights est obligatoire.

  • MultiRegionou PerRegion : utiliserDisabled. Si vous omettezRevisionWeights, le point de terminaison achemine 100 % du trafic vers la révision créée dans la même pile, de sorte que vous pouvez créer le point de terminaison en un seul déploiement. Le trafic n'est pas transféré vers les révisions créées par les déploiements ultérieurs.

La valeur doit être résolue lors de la AWS SAM transformation du modèle. Un Ref paramètre est pris en charge. Les autres fonctions intrinsèques ne sont pas prises en charge.

Valeurs valides : LatestRevision, Disabled

Type : chaîne

Obligatoire : non

Par défaut : LatestRevision

CloudFormation compatibilité : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

CodeUri

L'emplacement Amazon S3 du package de déploiement. Spécifiez un s3://bucket/key URI ou un objet avecBucket,Key, et des Version clés facultatives. Pour les exigences relatives aux compartiments, consultez la note en haut de cette page.

Type : Chaîne | CodeUri

Obligatoire : oui

CloudFormation compatibilité : cette propriété est similaire à celle BuildConfig.CodeConfig.S3Object d'une AWS::Lambda::WebFunctionRevision ressource. AWS SAM convertit un s3:// URI en BucketKey, etVersionId.

EgressNetworkConnectorArn

L'ARN qualifié par version d'un connecteur réseau qui achemine le trafic sortant de la fonction via votre VPC. L'ARN doit se terminer par un numéro de version, par exemplearn:aws:lambda:us-east-1:123456789012:network-connector:my-connector:1. Pour utiliser la dernière version d'un connecteur dans le même modèle, spécifiez!GetAtt MyConnector.LatestVersionArn. Le connecteur ComputeTypesdoit l'êtreWebFunction.

Si vous spécifiez une chaîne littérale, AWS SAM vérifiez qu'il s'agit d'un ARN de connecteur réseau qualifié par version. Les fonctions intrinsèques sont transmises et validées par le service. La modification de cette valeur crée une nouvelle révision.

Type : chaîne

Obligatoire : non

CloudFormation compatibilité : cette propriété est transmise directement à la ServiceConfig.EgressNetworkConnectorArn propriété d'une AWS::Lambda::WebFunctionRevision ressource.

EndpointDescription

Description du point de terminaison.

Type : chaîne

Obligatoire : non

CloudFormation compatibilité : cette propriété est transmise directement à la Description propriété d'une AWS::Lambda::WebFunctionEndpoint ressource.

EndpointName

Nom du point de terminaison. La modification du nom remplace le point de terminaison. La modification remplace EndpointType également le point de terminaison, donc modifiez EndpointName en même temps. CloudFormation Impossible de remplacer une ressource dont le nom est personnalisé sans un nouveau nom.

Type : chaîne

Obligatoire : non

Par défaut : prod

CloudFormation compatibilité : cette propriété est transmise directement à la EndpointName propriété d'une AWS::Lambda::WebFunctionEndpoint ressource.

EndpointType

Où le point de terminaison dessert le trafic.

  • HomeRegion: sert depuis la région de la pile.

  • MultiRegion: réplique la fonction dans les régions ReplicaRegionset achemine chaque demande vers la région la plus proche.

  • PerRegion: expose un point de terminaison distinct dans chaque région de réplication.

MultiRegionet PerRegion exigentAutoDeploymentMode: Disabled.

Valeurs valides : HomeRegion, MultiRegion, PerRegion

Type : chaîne

Obligatoire : non

Par défaut : HomeRegion

CloudFormation compatibilité : cette propriété est transmise directement à la EndpointType propriété d'une AWS::Lambda::WebFunctionEndpoint ressource.

EntryPoint

Le fichier exécuté par le moteur d'exécution, relatif à la racine du package de déploiement. AWS SAM le transmet au moteur d'exécution dans la variable d'AWS_LAMBDA_NODEJS_ENTRYPOINTenvironnement réservée.

Vous ne pouvez pas utiliser cette propriété lorsqu'il EnvironmentVariables s'agit d'une fonction intrinsèque.

Type : chaîne

Obligatoire : non

Par défaut : index.js

CloudFormation compatibilité : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

EnvironmentVariables

Key-value paires à définir comme variables d'environnement pour la révision.

  • Les touches doivent commencer par une lettre et ne contenir que des lettres, des chiffres et des traits de soulignement.

  • Les valeurs ne doivent pas être vides et comporter au maximum 4 096 caractères.

  • AWS SAM convertit les nombres et les valeurs booléennes en chaînes de caractères.

Type: carte (map)

Obligatoire : non

CloudFormation compatibilité : cette propriété est transmise directement à la ServiceConfig.EnvironmentVariables propriété d'une AWS::Lambda::WebFunctionRevision ressource.

ExecutionRoleArn

L'ARN du rôle IAM assumé par la fonction lors de son exécution. Si vous ne spécifiez aucun rôle, AWS SAM créez-en un avec la politique AWSLambdaBasicExecutionRole gérée et l'ID logique de<resource-logical-id>Role.

Type : chaîne

Obligatoire : non

CloudFormation compatibilité : cette propriété est transmise directement à la ServiceConfig.ExecutionRoleArn propriété d'une AWS::Lambda::WebFunctionRevision ressource.

FunctionName

Nom de la fonction. Les noms de fonctions doivent être uniques au sein d'un compte dans toutes les régions. Si vous ne spécifiez pas de nom, il en AWS SAM génère un à partir de l'ID logique et de l'ID de pile, avec un maximum de 64 caractères. La modification du nom remplace la fonction, sa révision et son point de terminaison.

Type : chaîne

Obligatoire : non

CloudFormation compatibilité : cette propriété est transmise directement à la FunctionName propriété des AWS::Lambda::WebFunctionEndpoint ressources AWS::Lambda::WebFunctionAWS::Lambda::WebFunctionRevision,, et.

InlineCode

Non pris en charge pourAWS::Serverless::WebFunction. Utilisez CodeUri.

Type : chaîne

Obligatoire : non

CloudFormation compatibilité : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

KmsKeyArn

L'ARN de la AWS KMS clé utilisée pour chiffrer les variables d'environnement de la révision.

Type : chaîne

Obligatoire : non

CloudFormation compatibilité : cette propriété est transmise directement à la KmsKeyArn propriété d'une AWS::Lambda::WebFunctionRevision ressource.

LoggingConfig

La configuration de journalisation pour la révision, telle que le groupe de journaux et les niveaux de journalisation.

Type: carte (map)

Obligatoire : non

CloudFormation compatibilité : cette propriété est transmise directement à la ServiceConfig.TelemetryConfig.LoggingConfig propriété d'une AWS::Lambda::WebFunctionRevision ressource.

MaxConcurrencyPerEnvironment

Nombre maximal de demandes simultanées traitées par chaque environnement d'exécution.

Type : entier

Obligatoire : non

CloudFormation compatibilité : cette propriété est transmise directement à la ServiceConfig.MaxConcurrencyPerEnvironment propriété d'une AWS::Lambda::WebFunctionRevision ressource.

ReplicaRegions

Les régions vers lesquelles répliquer la fonction. Utilisez cette propriété avec les PerRegion points de terminaison MultiRegion et. Spécifiez une liste de codes de région et de groupes de régions, ou un objet avec IncludeRegions une optionExcludeRegions.

Type : Liste | ReplicaRegions

Obligatoire : non

CloudFormation compatibilité : cette propriété est similaire à celle Regions d'une AWS::Lambda::WebFunctionEndpoint ressource. AWS SAM développe les groupes de régions et s'applique ExcludeRegions pour produire la liste des régions.

RevisionDescription

Description de la révision créée par ce déploiement.

Type : chaîne

Obligatoire : non

CloudFormation compatibilité : cette propriété est transmise directement à la Description propriété d'une AWS::Lambda::WebFunctionRevision ressource.

RevisionWeights

Une carte des identifiants de révision par rapport aux pondérations du trafic. Utilisez cette propriété lorsque AutoDeploymentMode c'est le casDisabled. Spécifiez jusqu'à deux révisions. Chaque poids est un entier compris entre 1 et 100, et la somme des poids doit être égale à 100.

Type : RevisionWeights

Obligatoire : selon les conditions. Obligatoire quand AutoDeploymentMode c'EndpointTypeest Disabled et quandHomeRegion.

CloudFormation compatibilité : cette propriété est similaire à celle RevisionWeights d'une AWS::Lambda::WebFunctionEndpoint ressource. AWS SAM convertit la carte en une liste d'Weightobjets RevisionId et.

Runtime

Le temps d'exécution de la fonction, par exemplenodejs24.x.

Type : chaîne

Obligatoire : oui

CloudFormation compatibilité : cette propriété est transmise directement à la BuildConfig.RuntimeConfig.Runtime propriété d'une AWS::Lambda::WebFunctionRevision ressource.

ScalingConfig

La configuration de dimensionnement pour le point de terminaison, telle que le nombre maximum d'environnements d'exécution.

Type: carte (map)

Obligatoire : non

CloudFormation compatibilité : cette propriété est transmise directement à la ScalingConfig propriété d'une AWS::Lambda::WebFunctionEndpoint ressource.

Tags

Carte de paires clé-valeur qui spécifie les balises ajoutées à la fonction et au rôle d'exécution qui AWS SAM la génère.

Type: carte (map)

Obligatoire : non

CloudFormation compatibilité : cette propriété est similaire à celle Tags d'une AWS::Lambda::WebFunction ressource. La Tags propriété in AWS SAM est constituée de paires clé-valeur (alors que dans CloudFormation cette propriété, elle consiste en une liste d'Tagobjets). Ajoute également AWS SAM automatiquement une lambda:createdBy:SAM balise à la fonction et au rôle par défaut généré pour celle-ci.

ThrottleConfig

La configuration de régulation pour le point de terminaison, telle que le taux de demandes maximal.

Type: carte (map)

Obligatoire : non

CloudFormation compatibilité : cette propriété est transmise directement à la ThrottleConfig propriété d'une AWS::Lambda::WebFunctionEndpoint ressource.

Timeout

Durée maximale, en secondes, pendant laquelle la fonction peut être exécutée par requête. Les valeurs valides sont comprises entre 3 et 900.

Type : entier

Obligatoire : non

Par défaut : 30

CloudFormation compatibilité : cette propriété est transmise directement à la ServiceConfig.TimeoutSeconds propriété d'une AWS::Lambda::WebFunctionRevision ressource.

Valeurs renvoyées

Réf

Lorsque l'identifiant logique de cette ressource est fourni à la fonction Ref intrinsèque, elle renvoie l'ARN de la fonction Web. Lorsque vous avez besoin du nom de la fonction, utilisez FunctionName plutôt la valeur de.

Pour plus d'informations sur l'utilisation de la fonction Ref, consultez Ref dans le Guide de l'utilisateur AWS CloudFormation .

Ventilateur : GetAtt

Fn::GetAtt renvoie une valeur pour un attribut de ce type indiqué. Voici les attributs disponibles et des exemples de valeurs de retour.

Pour plus d'informations sur l'utilisation de Fn::GetAtt, consultez Fn::GetAtt dans le Guide de l'utilisateur AWS CloudFormation .

FunctionArn

Le nom de ressource Amazon (ARN) de la fonction Web.

State

État actuel de la fonction Web.

StateReason

La raison de l'état actuel de la fonction Web.

CreatedAt

Heure à laquelle la fonction Web a été créée.

UpdatedAt

Heure à laquelle la fonction Web a été mise à jour pour la dernière fois.

Pour référencer la révision ou le point de terminaison qui AWS SAM génère, utilisez leurs identifiants logiques, <resource-logical-id>Revision et<resource-logical-id>Endpoint. Par exemple, !GetAtt MyWebFunctionEndpoint.DomainName renvoie le nom de domaine du point de terminaison d'une fonction Web avec l'ID logiqueMyWebFunction. Pour plus d’informations, consultez CloudFormation ressources générées lorsque AWS::Serverless::WebFunction est spécifié.

Exemples

Fonction Web de base

L'exemple suivant crée une fonction Web avec un IAM-authorized point de terminaison dans la région de la pile. AWS SAM génère le rôle d'exécution, et le point de terminaison achemine tout le trafic vers la révision créée par ce déploiement.

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Resources: MyWebFunction: Type: AWS::Serverless::WebFunction Properties: Runtime: nodejs24.x AuthType: IamAuth CodeUri: Bucket: amzn-s3-demo-bucket Key: webfn.zip Version: object-version-id Timeout: 30 Outputs: EndpointUrl: Value: !Sub https://${MyWebFunctionEndpoint.DomainName}

Répartissez le trafic entre deux révisions

L'exemple suivant désactive le déploiement automatique et envoie 90 % du trafic vers une révision existante et 10 % vers une autre. Les deux révisions doivent déjà exister.

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Resources: MyWebFunction: Type: AWS::Serverless::WebFunction Properties: Runtime: nodejs24.x AuthType: IamAuth CodeUri: s3://amzn-s3-demo-bucket/webfn-v2.zip AutoDeploymentMode: Disabled RevisionWeights: rev-abc123: 90 rev-def456: 10

Multi-Region Fonction Web

L'exemple suivant reproduit la fonction dans les régions des États-Unis sauf us-west-1 et achemine chaque demande vers la région la plus proche. Comme il RevisionWeights est omis, le point de terminaison achemine tout le trafic vers la révision créée dans cette pile.

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Resources: MyWebFunction: Type: AWS::Serverless::WebFunction Properties: Runtime: nodejs24.x AuthType: IamAuth CodeUri: Bucket: amzn-s3-demo-bucket Key: webfn.zip Version: object-version-id EndpointName: prodmr EndpointType: MultiRegion AutoDeploymentMode: Disabled ReplicaRegions: IncludeRegions: - US ExcludeRegions: - us-west-1

Fonction Web avec sortie VPC

L'exemple suivant crée un connecteur réseau pour les fonctions Web et achemine le trafic sortant de la fonction via les sous-réseaux et les groupes de sécurité du connecteur.

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Resources: MyConnector: Type: AWS::Serverless::NetworkConnector Properties: ComputeTypes: - WebFunction VpcConfig: SubnetIds: - subnet-0abc123def4567890 - subnet-0def456abc7890123 SecurityGroupIds: - sg-0abc1234abcde0001 NetworkProtocol: IPv4 MyWebFunction: Type: AWS::Serverless::WebFunction Properties: Runtime: nodejs24.x AuthType: IamAuth CodeUri: Bucket: amzn-s3-demo-bucket Key: webfn.zip Version: object-version-id EgressNetworkConnectorArn: !GetAtt MyConnector.LatestVersionArn