AWS Lambda Functions の分散トレーシング

セットアップ(ユーザー)

10 minutes

Lambda application, not yet manually instrumented

Observability Workshop インスタンス

事前設定済みの Ubuntu を実行する EC2 インスタンスが提供されます。

ワークショップのインストラクターが、割り当てられたワークショップインスタンスへの認証情報を提供します。

インスタンスには以下の環境変数がすでに設定されているはずです

また、ワークショップ中に使用する AWS キーとシークレットも提供されます。

AWS CLI と Terraform が利用可能であることを確認しましょう。

AWS Command Line Interface (awscli)

AWS Command Line Interface(awscli)は、AWS リソースとやり取りするために使用される API です。このワークショップでは、デプロイするリソースとやり取りするために特定のスクリプトで使用されます。

Splunk が提供するワークショップインスタンスには、すでに awscli がインストールされているはずです。

bash
which aws

期待される出力は以下のとおりです

bash
/usr/local/bin/aws
bash
sudo apt install awscli

Terraform

Terraform は Infrastructure as Code(IaC)プラットフォームで、設定ファイルにリソースを定義することでデプロイ、管理、削除を行います。Terraform は HCL を使用してリソースを定義し、さまざまなプラットフォームやテクノロジー向けの複数のプロバイダーをサポートしています。

このワークショップでは、コマンドラインで Terraform を使用して以下のリソースをデプロイします

  1. AWS API Gateway
  2. Lambda Functions
  3. Kinesis Stream
  4. CloudWatch Log Groups
  5. S3 Bucket
    • およびその他のサポートリソース

Splunk が提供するワークショップインスタンスには、すでに terraform がインストールされているはずです。

bash
which terraform

期待される出力は以下のとおりです

bash
terraform () {
        echo "Using API_TOKEN=XXX" >&2
        echo "Using REALM=us1" >&2
        command terraform "$@"
}
bash
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install terraform

Workshop ディレクトリ(Lambda)

Workshop ディレクトリ lambda は、本日使用する Lambda ベースのサンプルアプリケーションの自動インストルメンテーションと手動インストルメンテーションの両方を完了するために必要な、すべての設定ファイルとスクリプトを含むリポジトリです。

bash
cd ~/workshop/lambda && ls

期待される出力は以下のようになります

bash
auto  iam_role  manual

AWS と Terraform の変数設定

AWS 変数

AWS CLI では、サービスによってデプロイされたリソースにアクセスして管理するための認証情報が必要です。このワークショップでは、Terraform と Python スクリプトの両方がタスクを実行するためにこれらの変数を必要とします。

bash
aws configure

このコマンドは以下のようなプロンプトを表示します。キー ID とシークレットキーを入力し、リージョンを us-east-1 に設定し、出力形式はデフォルトのままにします

bash
AWS Access Key ID [None]: XXXXXXXXXXXXXXXX
AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Default region name [None]: us-east-1
Default outoput format [None]:

以下のコマンドで動作を確認できます

bash
aws lambda list-functions

結果が表示されるはずです。空の場合もあれば、いくつかの関数が表示される場合もありますが、エラーにはならないはずです。成功したら、q を押して終了します。

Terraform 変数

Terraform は、機密データや動的データを .tf 設定ファイルにハードコーディングしないようにするため、またリソース定義全体で値を再利用可能にするために、変数の受け渡しをサポートしています。

このワークショップでは、Terraform は Lambda 関数を OpenTelemetry Lambda レイヤーの正しい値でデプロイするため、Splunk Observability Cloud の取り込み値のため、そして環境とリソースを一意で即座に識別可能にするために変数を必要とします。

Terraform 変数は以下の方法で定義されます

このワークショップでは、variables.tfterraform.tfvars ファイルの組み合わせを使用して変数を設定します。

bash
vi ~/workshop/lambda/auto/terraform.tfvars
bash
o11y_access_token = "CHANGEME"
o11y_realm        = "CHANGEME"
otel_lambda_layer = ["CHANGEME"]
prefix            = "CHANGEME"

以下の方法でこれらの値を取得できます

インストラクターがこれらの値の確認をお手伝いします。

ファイルを保存してエディタを終了します。

最後に、編集した terraform.tfvars ファイルをもう一方のディレクトリにコピーします。

bash
cp ~/workshop/lambda/auto/terraform.tfvars ~/workshop/lambda/manual

ファイル権限の修正(オプション)

これらのファイルは実行可能であるはずですが、念のため設定しておきましょう

bash
chmod +x ~/workshop/lambda/auto/send_message.py
chmod +x ~/workshop/lambda/manual/send_message.py

前提条件の準備が完了しましたので、ワークショップを開始しましょう!

Last Modified ·