View a markdown version of this page

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

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS::Serverless::WebFunction

マネージドエンドポイントを介して HTTP リクエストを処理する AWS Lambda Web 関数を作成します。呼び出しとイベントに応答して実行される Lambda イベント関数とは異なり、ウェブ関数はウェブサーバーを実行し、HTTP リクエストを直接受信します。単一の からAWS::Serverless::WebFunction、 は Web Function、コードと設定を含むイミュータブルなリビジョン、およびトラフィックを 1 つ以上のリビジョンにルーティングするエンドポイント AWS SAM を生成します。

注記

にデプロイすると AWS CloudFormation、 は AWS SAM リソースを CloudFormation リソース AWS SAM に変換します。詳細については、「の生成済み CloudFormation リソース AWS SAM」を参照してください。

重要

関数コードは、 AWS_LAMBDA_HTTP_ENDPOINT環境変数のホストとポートをリッスンする HTTP サーバーを実行する必要があります。ランタイムは を設定しませんPORT。デフォルトでは、ランタイムはデプロイパッケージのルートindex.jsで実行されます。EntryPoint を使用して別のファイルを実行します。

重要

デプロイパッケージを保持する Amazon S3 バケットは、次の要件を満たしている必要があります。

  • バージョニングが有効になっています。

  • バケットポリシーは、 s3:GetObjectおよび のs3:GetObjectVersionアクセス許可を付与lambda.amazonaws.comします。ポリシーの範囲は、 など、関数のリビジョンaws:SourceArnに一致する ArnLike条件を使用することをお勧めしますarn:aws:lambda:us-east-1:111122223333:web-function/my-function/revision/*。

  • オブジェクトが SSE-KMS で暗号化されている場合、キーポリシーで lambda.amazonaws.comの呼び出しが許可されているカスタマーマネージドキーを使用しますkms:Decrypt。Amazon S3 (aws/s3) の AWS マネージドキーは、キーポリシーを変更できないため、サポートされていません。

バケットポリシーの例については、 AWS Lambda デベロッパーガイドの「Lambda のバケットポリシー」を参照してください。

CodeUri は Amazon S3 のオブジェクトを参照する必要があります。sam build および sam package コマンドは、このリソースのローカルパスをサポートしていません。

構文

AWS Serverless Application Model (AWS SAM) テンプレートでこのエンティティを宣言するには、次の構文を使用します。

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

プロパティ

AuthType

エンドポイントがリクエストを承認する方法。

  • IamAuth: Lambda は、署名バージョン 4 と IAM を使用してリクエストを承認します。呼び出し元には、 関数のリソースベースのポリシーを通じて付与された アクセスlambda:InvokeWebFunctionEndpoint許可が必要です。

  • ApplicationManaged: エンドポイントはパブリックです。関数は、すべてのリクエスト自体を承認する必要があります。

有効な値:IamAuth、ApplicationManaged|

タイプ: 文字列

必須: はい

CloudFormation 互換性: このプロパティは、 AWS::Lambda::WebFunctionEndpointリソースの AuthTypeプロパティに直接渡されます。

AutoDeploymentMode

エンドポイントがリビジョン間でトラフィックをルーティングする方法。

  • LatestRevision: このデプロイが作成するリビジョンにトラフィックの 100% を送信します。

  • Disabled: RevisionWeights に従ってトラフィックをルーティングします。

使用できる値と、 RevisionWeights が必要かどうかは、EndpointType によって異なります。

  • HomeRegion: いずれかの値を使用します。ではDisabled、 RevisionWeights が必要です。

  • MultiRegion または PerRegion: を使用しますDisabled。を省略するとRevisionWeights、エンドポイントはトラフィックの 100% を同じスタックで作成されたリビジョンにルーティングするため、エンドポイントを 1 回のデプロイで作成できます。トラフィックは、後のデプロイで作成されるリビジョンには移動しません。

がテンプレートを AWS SAM 変換するとき、値は解決する必要があります。パラメータRefへの がサポートされています。その他の組み込み関数はサポートされていません。

有効な値:LatestRevision、Disabled|

タイプ: 文字列

必須: いいえ

デフォルト: LatestRevision

CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 CloudFormation 同等のものはありません。

CodeUri

デプロイパッケージの Amazon S3 の場所。Bucket、、KeyおよびオプションのVersionキーを使用して s3://bucket/key URI またはオブジェクトを指定します。バケットの要件については、このページの上部にある注記を参照してください。

タイプ: 文字列 | CodeUri

必須: はい

CloudFormation 互換性: このプロパティは resourceAWS::Lambda::WebFunctionRevision. AWS SAM converts an s3:// URI into Bucket、Key、および の BuildConfig.CodeConfig.S3Objectプロパティに似ていますVersionId。

EgressNetworkConnectorArn

関数のアウトバウンドトラフィックを VPC 経由でルーティングするネットワークコネクタのバージョン修飾 ARN。ARN は、 などのバージョン番号で終わる必要がありますarn:aws:lambda:us-east-1:123456789012:network-connector:my-connector:1。同じテンプレートで最新バージョンのコネクタを使用するには、 を指定します!GetAtt MyConnector.LatestVersionArn。コネクタの ComputeTypes は である必要がありますWebFunction。

リテラル文字列を指定すると、 AWS SAM はそれがバージョン認定ネットワークコネクタ ARN であることを確認します。組み込み関数は、サービスによって渡され、検証されます。この値を変更すると、新しいリビジョンが作成されます。

タイプ: 文字列

必須: いいえ

CloudFormation 互換性: このプロパティは、 AWS::Lambda::WebFunctionRevisionリソースの ServiceConfig.EgressNetworkConnectorArnプロパティに直接渡されます。

EndpointDescription

エンドポイントの説明。

タイプ: 文字列

必須: いいえ

CloudFormation 互換性: このプロパティは、 AWS::Lambda::WebFunctionEndpointリソースの Descriptionプロパティに直接渡されます。

EndpointName

エンドポイントの名前。名前を変更すると、エンドポイントが置き換えられます。を変更するとエンドポイントEndpointTypeも置き換えられるため、 EndpointNameは同時に変更します。 CloudFormation は、新しい名前のないカスタム名前のリソースを置き換えることはできません。

タイプ: 文字列

必須: いいえ

デフォルト: prod

CloudFormation 互換性: このプロパティは、 AWS::Lambda::WebFunctionEndpointリソースの EndpointNameプロパティに直接渡されます。

EndpointType

エンドポイントがトラフィックを処理する場所。

  • HomeRegion: スタックのリージョンから を提供します。

  • MultiRegion: は、関数を ReplicaRegions のリージョンにレプリケートし、各リクエストを最も近いリージョンにルーティングします。

  • PerRegion: は、レプリカリージョンごとに個別のエンドポイントを公開します。

MultiRegion と には PerRegionが必要ですAutoDeploymentMode: Disabled。

有効な値: HomeRegion、MultiRegion、PerRegion

タイプ: 文字列

必須: いいえ

デフォルト: HomeRegion

CloudFormation 互換性: このプロパティは、 AWS::Lambda::WebFunctionEndpointリソースの EndpointTypeプロパティに直接渡されます。

EntryPoint

デプロイパッケージのルートを基準にして、ランタイムが実行するファイル。 AWS SAM はそれをリザーブドAWS_LAMBDA_NODEJS_ENTRYPOINT環境変数のランタイムに渡します。

EnvironmentVariables が組み込み関数である場合、このプロパティを使用することはできません。

タイプ: 文字列

必須: いいえ

デフォルト: index.js

CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 CloudFormation 同等のものはありません。

EnvironmentVariables

リビジョンの環境変数として設定するキーと値のペア。

  • キーは文字で始まり、文字、数字、アンダースコアのみを含める必要があります。

  • 値は空ではなく、最大 4,096 文字である必要があります。

  • AWS SAM は数値とブール値を文字列に変換します。

タイプ: マップ

必須: いいえ

CloudFormation 互換性: このプロパティは、 AWS::Lambda::WebFunctionRevisionリソースの ServiceConfig.EnvironmentVariablesプロパティに直接渡されます。

ExecutionRoleArn

関数が実行時に引き受ける IAM ロールの ARN。ロールを指定しない場合、 はAWSLambdaBasicExecutionRoleマネージドポリシーと論理 ID が のロール AWS SAM を作成します<resource-logical-id>Role。

タイプ: 文字列

必須: いいえ

CloudFormation 互換性: このプロパティは、 AWS::Lambda::WebFunctionRevisionリソースの ServiceConfig.ExecutionRoleArnプロパティに直接渡されます。

FunctionName

関数の名前 関数名は、すべてのリージョンでアカウント内で一意である必要があります。名前を指定しない場合、 は論理 ID とスタック ID から 64 文字以内で AWS SAM 名前を生成します。名前を変更すると、関数、そのリビジョン、およびそのエンドポイントが置き換えられます。

タイプ: 文字列

必須: いいえ

CloudFormation 互換性: このプロパティは、AWS::Lambda::WebFunction、、AWS::Lambda::WebFunctionRevisionおよび AWS::Lambda::WebFunctionEndpointリソースの FunctionNameプロパティに直接渡されます。

InlineCode

AWS::Serverless::WebFunction をサポートしていません。CodeUri を使用します。

タイプ: 文字列

必須: いいえ

CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 CloudFormation 同等のものはありません。

KmsKeyArn

リビジョンの環境変数の暗号化に使用される AWS KMS キーの ARN。

タイプ: 文字列

必須: いいえ

CloudFormation 互換性: このプロパティは、 AWS::Lambda::WebFunctionRevisionリソースの KmsKeyArnプロパティに直接渡されます。

LoggingConfig

ロググループやログレベルなど、リビジョンのログ記録設定。

タイプ: マップ

必須: いいえ

CloudFormation 互換性: このプロパティは、 AWS::Lambda::WebFunctionRevisionリソースの ServiceConfig.TelemetryConfig.LoggingConfigプロパティに直接渡されます。

MaxConcurrencyPerEnvironment

各実行環境が処理する同時リクエストの最大数。

タイプ: 整数

必須: いいえ

CloudFormation 互換性: このプロパティは、 AWS::Lambda::WebFunctionRevisionリソースの ServiceConfig.MaxConcurrencyPerEnvironmentプロパティに直接渡されます。

ReplicaRegions

関数をレプリケートするリージョン。このプロパティは、 MultiRegionおよび PerRegionエンドポイントで使用します。リージョンコードとリージョングループのリスト、または IncludeRegionsとオプションの を持つオブジェクトを指定しますExcludeRegions。

タイプ: List | ReplicaRegions

必須: いいえ

CloudFormation 互換性: このプロパティは resourceAWS::Lambda::WebFunctionEndpoint. AWS SAM expands リージョングループの Regionsプロパティに似ており、 を適用ExcludeRegionsしてリージョンリストを生成します。

RevisionDescription

このデプロイが作成するリビジョンの説明。

タイプ: 文字列

必須: いいえ

CloudFormation 互換性: このプロパティは、 AWS::Lambda::WebFunctionRevisionリソースの Descriptionプロパティに直接渡されます。

RevisionWeights

リビジョン IDsトラフィックの重みのマップ。が の場合AutoDeploymentMode、このプロパティを使用しますDisabled。最大 2 つのリビジョンを指定します。各重みは 1~100 の整数で、重みの合計は最大 100 である必要があります。

タイプ: RevisionWeights

必須: 条件的。AutoDeploymentMode が Disabledで、 EndpointType が の場合に必要ですHomeRegion。

CloudFormation 互換性: このプロパティは resource. AWS SAM converts の RevisionWeightsプロパティに似ていますAWS::Lambda::WebFunctionEndpoint。マップを オブジェクトRevisionIdと Weight オブジェクトのリストに変換します。

Runtime

関数のランタイム。例: nodejs24.x。

タイプ: 文字列

必須: はい

CloudFormation 互換性: このプロパティは、 AWS::Lambda::WebFunctionRevisionリソースの BuildConfig.RuntimeConfig.Runtimeプロパティに直接渡されます。

ScalingConfig

実行環境の最大数など、エンドポイントのスケーリング設定。

タイプ: マップ

必須: いいえ

CloudFormation 互換性: このプロパティは、 AWS::Lambda::WebFunctionEndpointリソースの ScalingConfigプロパティに直接渡されます。

Tags

関数と が AWS SAM 生成する実行ロールに追加されたタグを指定するキーと値のペアのマップ。

タイプ: マップ

必須: いいえ

CloudFormation 互換性: このプロパティは、 AWS::Lambda::WebFunctionリソースの Tagsプロパティに似ています。の AWS SAM Tagsプロパティはキーと値のペアで構成されます ( CloudFormation このプロパティはTagオブジェクトのリストで構成されます)。また、 は、 関数とそれに対して生成されるデフォルトのロールにlambda:createdBy:SAMタグ AWS SAM を自動的に追加します。

ThrottleConfig

最大リクエストレートなど、エンドポイントのスロットリング設定。

タイプ: マップ

必須: いいえ

CloudFormation 互換性: このプロパティは、 AWS::Lambda::WebFunctionEndpointリソースの ThrottleConfigプロパティに直接渡されます。

Timeout

リクエストごとに関数が実行できる最大時間を秒単位で表します。有効な値は 3~900 です。

タイプ: 整数

必須: いいえ

デフォルト: 30

CloudFormation 互換性: このプロパティは、 AWS::Lambda::WebFunctionRevisionリソースの ServiceConfig.TimeoutSecondsプロパティに直接渡されます。

戻り値

参照番号

このリソースの論理 ID がRef組み込み関数に提供されると、ウェブ関数の ARN が返されます。関数名が必要な場合は、FunctionName代わりに の値を使用します。

Ref 関数の使用方法の詳細については、「AWS CloudFormation ユーザーガイド」の「Ref」を参照してください。

Fn::GetAtt

Fn::GetAtt は、このタイプの指定された属性の値を返します。利用可能な属性とサンプル戻り値は以下のとおりです。

Fn::GetAtt の使用の詳細については、「AWS CloudFormation ユーザーガイド」の「Fn::GetAtt」を参照してください。

FunctionArn

ウェブ関数の Amazon リソースネーム (ARN)。

State

ウェブ関数の現在の状態。

StateReason

ウェブ関数の現在の状態の理由。

CreatedAt

ウェブ関数が作成された時刻。

UpdatedAt

Web 関数が最後に更新された時刻。

が AWS SAM 生成するリビジョンまたはエンドポイントを参照するには、論理 IDs<resource-logical-id>Revisionおよび を使用します<resource-logical-id>Endpoint。たとえば、 は論理 ID を持つウェブ関数のエンドポイントのドメイン名!GetAtt MyWebFunctionEndpoint.DomainNameを返しますMyWebFunction。詳細については、「CloudFormation AWS::Serverless::WebFunctionが指定されているときに生成される リソース」を参照してください。

例

基本的なウェブ関数

次の例では、スタックの Region に IAM 認可エンドポイントを持つ Web 関数を作成します。 は実行ロール AWS SAM を生成し、エンドポイントはすべてのトラフィックをこのデプロイが作成するリビジョンにルーティングします。

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}

2 つのリビジョン間でトラフィックを分割する

次の例では、自動デプロイを無効にし、トラフィックの 90% を既存のリビジョンに送信し、10% を別のリビジョンに送信します。両方のリビジョンがすでに存在している必要があります。

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

マルチリージョンウェブ関数

次の例では、 関数を を除く米国リージョンにレプリケートus-west-1し、各リクエストを最も近いリージョンにルーティングします。RevisionWeights は省略されるため、エンドポイントはすべてのトラフィックをこのスタックで作成されたリビジョンにルーティングします。

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

VPC 出力を使用したウェブ関数

次の例では、Web Functions のネットワークコネクタを作成し、コネクタのサブネットとセキュリティグループを介して関数のアウトバウンドトラフィックをルーティングします。

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