翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Lattice のターゲットとしての Lambda VPC 関数
Lambda 関数をターゲットとして Lattice VPC ターゲットグループに登録し、Lambda 関数のターゲットグループにリクエストを転送するリスナールールを設定できます。サービスが Lambda 関数をターゲットとするターゲットグループにリクエストを転送すると、Lambda 関数を呼び出し、リクエストの内容を JSON 形式で Lambda 関数に渡します。詳細については、「 AWS Lambda デベロッパーガイド」の「Amazon Lattice VPC AWS Lambda での の使用」を参照してください。
制限
-
Lambda 関数とターゲットグループは、同じアカウントおよび同じリージョンにある必要があります。
-
Lambda 関数に送信できるリクエストボディの最大サイズは 6 MB です。
-
Lambda 関数JSONが送信できるレスポンスの最大サイズは 6 MB です。
-
プロトコルは HTTPまたは である必要がありますHTTPS。
Lambda 関数の準備
Lattice サービスで Lambda VPC 関数を使用している場合は、次の推奨事項が適用されます。
Lambda 関数を呼び出すアクセス許可
ターゲットグループを作成し、 AWS Management Console または を使用して Lambda 関数を登録すると AWS CLI、Lattice VPC はユーザーに代わって Lambda 関数ポリシーに必要なアクセス許可を追加します。
次のAPI呼び出しを使用して、自分でアクセス許可を追加することもできます。
aws lambda add-permission \ --function-name
lambda-function-arn-with-alias-name
\ --statement-idvpc-lattice
\ --principal vpc-lattice.amazonaws.com \ --action lambda:InvokeFunction \ --source-arntarget-group-arn
Lambda 関数のバージョニング
ターゲットグループごとに 1 つの Lambda 関数を登録できます。Lambda 関数を変更でき、Lattice VPC サービスが常に最新バージョンの Lambda 関数を呼び出すようにするには、関数エイリアスを作成し、Lambda 関数を Lattice VPC サービスに登録ARNするときに関数にエイリアスを含めます。詳細については、「 AWS Lambda デベロッパーガイド」の「Lambda 関数のバージョン」および「Lambda 関数のエイリアスを作成する」を参照してください。
Lambda 関数のターゲットグループの作成
リクエストルーティングで使用されるターゲットグループを作成します。リクエストコンテンツがリスナールールとこのターゲットグループに転送するアクションに一致する場合、Lattice VPC サービスは登録された Lambda 関数を呼び出します。
コンソールを使用してターゲットグループを作成し、Lambda 関数を登録するには
で Amazon VPCコンソールを開きますhttps://console.aws.amazon.com/vpc/
。 -
ナビゲーションペインの VPCLattice で、ターゲットグループを選択します。
-
[ターゲットグループの作成] を選択します。
-
[ターゲットタイプの選択] で [Lambda 関数] を選択します。
-
[ターゲットグループ名] に、ターゲットグループの名前を入力します。
-
[Lambda イベント構造バージョン] でバージョンを選択します。詳細については、「Lattice VPC サービスからイベントを受信する」を参照してください。
-
(オプション) タグを追加するには、[タグ] を展開し、[新しいタグを追加] を選択して、タグキーとタグ値を入力します。
-
[Next (次へ)] を選択します。
-
[Lambda 関数] で、次のいずれかを実行します。
-
既存の Lambda 関数を選択します。
-
新しい Lambda 関数を作成し、その関数を選択します。
-
Lambda 関数は後ほど登録します。
-
-
[ターゲットグループの作成] を選択します。
ターゲットグループを作成し、 AWS CLIを使用して Lambda 関数を登録するには
create-target-group および register-targets コマンドを使用します。
Lattice VPC サービスからイベントを受信する
VPC Lattice サービスは、 HTTPと の両方を介したリクエストの Lambda 呼び出しをサポートしますHTTPS。サービスはイベントを JSON形式で送信し、 X-Forwarded-For
ヘッダーをすべてのリクエストに追加します。
Base64 エンコード
content-encoding
ヘッダーが存在し、コンテンツタイプが以下のいずれでもない場合、サービス Base64 は本文をエンコードします。
-
text/*
-
application/json
-
application/xml
-
application/javascript
content-encoding
ヘッダーが存在しない場合、Base64 エンコーディングはコンテンツタイプによって異なります。上述のコンテンツタイプの場合、サービスは Base64 エンコーディングせずに本文をそのまま送信します。
イベント構造の形式
LAMBDA
タイプのターゲットグループを作成または更新するときには、Lambda 関数が受け取るイベント構造のバージョンを指定できます。指定できるバージョンは V1
と V2
です。
例 サンプルイベント: V2
{
"version": "2.0",
"path": "/",
"method": "GET|POST|HEAD|...",
"headers": {
"header-key
": ["header-value
", ...],
...
},
"queryStringParameters": {
"key
": ["value
", ...]
},
"body": "request-body
",
"isBase64Encoded": true|false,
"requestContext": {
"serviceNetworkArn": "arn:aws:vpc-lattice:region
:123456789012
:servicenetwork/sn-0bf3f2882e9cc805a
",
"serviceArn": "arn:aws:vpc-lattice:region
:123456789012
:service/svc-0a40eebed65f8d69c
",
"targetGroupArn": "arn:aws:vpc-lattice:region
:123456789012
:targetgroup/tg-6d0ecf831eec9f09
",
"identity": {
"sourceVpcArn": "arn:aws:ec2:region
:123456789012
:vpc/vpc-0b8276c84697e7339
",
"type": "AWS_IAM",
"principal": "arn:aws:iam::123456789012
:assumed-role/my-role
/my-session
",
"principalOrgID": "o-50dc6c495c0c9188
",
"sessionName": "i-0c7de02a688bde9f7
",
"x509IssuerOu": "string
",
"x509SanDns": "string
",
"x509SanNameCn": "string
",
"x509SanUri": "string
",
"x509SubjectCn": "string
"
},
"region": "region
",
"timeEpoch": "1690497599177430
"
}
}
body
リクエスト本文。プロトコルが HTTP、HTTPS、または g の場合にのみ存在しますRPC。
headers
リクエストのHTTPヘッダー。プロトコルが HTTP、HTTPS、または g の場合にのみ存在しますRPC。
identity
-
ID 情報。有効なフィールドには以下のものがあります。
principal
— 認証されたプリンシパル。 AWS 認証が成功した場合にのみ表示されます。principalOrgID
— 認証されたプリンシパルの組織の ID。 AWS 認証が成功した場合にのみ表示されます。sessionName
- 認証されたセッションの名前。 AWS 認証が成功した場合にのみ表示されます。sourceVpcArn
– リクエストが発生した VPC ARNの 。ソースを特定VPCできる場合にのみ表示されます。type
– 認証ポリシーが使用され、 AWS 認証が成功AWS_IAM
した場合、値は です。
Roles Anywhere の認証情報が使用され、認証が成功すると、以下のフィールドが表示される場合があります。
x509IssuerOu
— 発行者 (OU)。x509SanDns
– サブジェクトの代替名 (DNS)。x509SanNameCn
— 発行者代替名 (名前/CN)。x509SanUri
– サブジェクトの代替名 (URI)。x509SubjectCn
— サブジェクト名 (CN)。
isBase64Encoded
本文が base64 エンコードされているかどうかを示します。プロトコルが HTTP、、または gRPC でHTTPS、リクエストボディがまだ文字列でない場合のみ存在します。
method
リクエストのHTTPメソッド。プロトコルが HTTP、HTTPS、または g の場合にのみ存在しますRPC。
path
リクエストのパス。プロトコルが HTTP、HTTPS、または g の場合にのみ存在しますRPC。
queryStringParameters
HTTP クエリ文字列パラメータ。プロトコルが HTTP、HTTPS、または g の場合にのみ存在しますRPC。
serviceArn
リクエストを受け取るARNサービスの 。
serviceNetworkArn
リクエストARNを配信するサービスネットワークの 。
targetGroupArn
リクエストを受け取るARNターゲットグループの 。
timeEpoch
時間 (秒単位)。
例 サンプルイベント: V1
{
"raw_path": "/path/to/resource
",
"method": "GET|POST|HEAD|...",
"headers": {"header-key
": "header-value
", ... },
"query_string_parameters": {"key
": "value
", ...},
"body": "request-body
",
"is_base64_encoded": true|false
}
Lattice VPC サービスに応答する
Lambda 関数からのレスポンスには、Base64 エンコーディングのステータス、ステータスコード、およびヘッダーが含まれます。本文は省略できます。
レスポンス本文にバイナリコンテンツを含めるには、コンテンツを Base64 でエンコードし、isBase64Encoded
を true
に設定する必要があります。サービスはコンテンツをデコードしてバイナリコンテンツを取得し、HTTPレスポンスの本文でクライアントに送信します。
Lattice VPC サービスは、 Connection
や などのヘッダーを尊重し hop-by-hopませんTransfer-Encoding
。サービスがクライアントにレスポンスを送信する前に計算するため、Content-Length
ヘッダーは省略できます。
Lambda 関数からのレスポンスの例を次に示します。
{ "isBase64Encoded":
false
, "statusCode":200
, "statusDescription": "200 OK
", "headers": { "Set-cookie": "cookies
", "Content-Type": "application/json" }, "body": "Hello from Lambda (optional)" }
複数値ヘッダー
VPC Lattice は、クライアントからのリクエスト、または複数の値を持つヘッダーを含むか、同じヘッダーを複数回含む Lambda 関数からのレスポンスをサポートします。 VPCLattice はすべての値をターゲットに渡します。
次の例では、 という名前の 2 つのヘッダーがあります。header1 異なる値を持つ 。
header1 = value1
header1 = value2
V2 イベント構造では、Lattice VPC はリスト内の値を送信します。例えば:
"header1": ["value1", "value2"]
V1 イベント構造では、Lattice VPC は値を 1 つの文字列にまとめます。例えば:
"header1": "value1, value2"
複数値のクエリ文字列パラメータ
VPC Lattice は、同じキーに対して複数の値を持つクエリパラメータをサポートします。
次の例では、 という名前のパラメータが 2 つあります。QS1 異なる値を持つ 。
http://www.example.com?&QS1=value1&QS1=value2
V2 イベント構造では、Lattice VPC はリスト内の値を送信します。例えば:
"QS1": ["value1", "value2"]
V1 イベント構造では、Lattice VPC は最後に渡された値を使用します。例えば:
"QS1": "value2"
Lambda 関数の登録解除
トラフィックを Lambda 関数に送信する必要がなくなった場合は、登録を解除できます。Lambda 関数の登録を解除すると、処理中のリクエストは HTTP 5XX エラーで失敗します。
Lambda 関数を置き換えるには、新しいターゲットグループを作成し、新しい関数を新しいターゲットグループに登録し、リスナールールを更新して既存のターゲットグループではなく新しいターゲットグループを使用することをお勧めします。
コンソールを使用して Lambda 関数を登録解除するには
で Amazon VPCコンソールを開きますhttps://console.aws.amazon.com/vpc/
。 -
ナビゲーションペインの VPCLattice で、ターゲットグループを選択します。
-
ターゲットグループの名前を選択して、その詳細ページを開きます。
-
[ターゲット] タブで、[登録解除] を選択します。
-
確認を求められたら、「
confirm
」と入力し、[登録解除] を選択します。
を使用して Lambda 関数の登録を解除するには AWS CLI
deregister-targets コマンドを使用します。