この記事は英語の原文を日本語に翻訳したものです。原文: https://opentelemetry.io/docs/specs/semconv/resource/faas/

翻訳元: open-telemetry/semantic-conventions v1.44.0(コミット e10a930

Function as a Service

参考:

FaaSのリソース属性

Status: Development

type: faas

Description: サーバーレスインスタンス。

[!warning] このEntity定義には、roleを持たない属性が含まれています。 安定版のEntityは、roleが定義されていない属性を持ってはなりません(MUST NOT)。

Attributes:

RoleKeyStabilityRequirement LevelValue TypeDescriptionExample Values
Otherfaas.nameDevelopmentRequiredstringこのランタイムインスタンスが実行する単一の関数の名前。[1]my-function; myazurefunctionapp/some-function-name
Othercloud.resource_idDevelopmentRecommendedstring監視対象のクラウドリソースに対する、クラウドプロバイダー固有のネイティブ識別子(AWSのARN、Azureの完全修飾リソースID、GCPの完全なリソース名など)。[2]arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function; //run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID; /subscriptions/<SUBSCRIPTION_GUID>/resourceGroups/<RG>/providers/Microsoft.Web/sites/<FUNCAPP>/functions/<FUNC>
Otherfaas.instanceDevelopmentRecommendedstring文字列としての実行環境ID。同じ関数・関数バージョンへの他の呼び出しで再利用される可能性があります。[3]2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de
Otherfaas.max_memoryDevelopmentRecommendedintサーバーレス関数が利用できるメモリ量をバイトに変換した値。[4]134217728
Otherfaas.versionDevelopmentRecommendedstring実行されている関数の不変のバージョン。[5]26; pinkfroid-00002

[1] faas.name: これは、FaaSプラットフォーム上で設定・デプロイされた関数の名前であり、通常はコールバック関数の名前(code.namespace/code.function.nameスパン属性に格納されている場合があります)とは異なります。

一部のクラウドプロバイダーでは、上記の定義は曖昧です。次に挙げるクラウドプロバイダー・製品については、この属性(およびその結果としてスパン名)に、次の関数名の定義を使用しなければなりません(MUST)。

  • Azure: 完全な名前<FUNCAPP>/<FUNC>、つまりfunction app名の後にスラッシュと関数名を続けたもの(この形式は、その関数のリソースJSONでも見られます)。 これは、Azureのfunction appが通常TracerProviderを共有する複数の関数をホストできるため、スパン属性を使用しなければならないことを意味します(MUST。cloud.resource_id属性も参照してください)。

[2] cloud.resource_id: 一部のクラウドプロバイダーでは、起動時に完全なIDを決定できない場合があるため、代わりにcloud.resource_idをスパン属性として設定する必要があるかもしれません。

cloud.resource_idに使用する正確な値は、クラウドプロバイダーによって異なります。 この属性を設定する場合、当てはまるのであれば次のよく知られた定義を使用しなければなりません(MUST)。

  • AWS Lambda: 関数のARN。 同じランタイムインスタンスが複数の異なるエイリアスから呼び出し可能である場合があるため、「呼び出されたARN」を直接使用せず、エイリアスのサフィックスを、解決済みの関数バージョンに置き換えるように注意してください。
  • GCP: リソースのURI
  • Azure: 呼び出された関数(function app ではなく)の完全修飾リソースIDで、次の形式を持ちます。 /subscriptions/<SUBSCRIPTION_GUID>/resourceGroups/<RG>/providers/Microsoft.Web/sites/<FUNCAPP>/functions/<FUNC>。 これは、Azureのfunction appが通常TracerProviderを共有する複数の関数をホストできるため、スパン属性を使用しなければならないことを意味します(MUST)。

[3] faas.instance: - AWS Lambda: (完全な)ログストリーム名を使用します。

[4] faas.max_memory: この属性は設定することが推奨されます。例えば、メモリが少なすぎると、Java版のAWS Lambda関数が正しく動作しなくなることがあります。AWS Lambdaでは、環境変数AWS_LAMBDA_FUNCTION_MEMORY_SIZEがこの情報を提供します(1,048,576を掛ける必要があります)。

[5] faas.version: クラウドプロバイダーとプラットフォームに応じて、次を使用してください。

  • AWS Lambda: 関数バージョン(10進数の文字列として表される整数)。
  • Google Cloud Run(Services): リビジョン(関数名にリビジョンのサフィックスを付けたもの)。
  • Google Cloud Functions: K_REVISION環境変数の値。
  • Azure Functions: 該当しません。この属性は設定しないでください。

注: リソース属性faas.instanceは、スパン属性faas.invocation_idとは異なります。詳細はFaaSスパンのセマンティック規約を参照してください。

リソース属性の代わりにスパン属性を使う

FaaSのリソース属性を、代わりにスパン属性として適用したほうがよい場合があります。 詳細はFaaSのトレース規約を参照してください。