AWS Lambda Functions の分散トレーシング
セットアップ(ユーザー)

Observability Workshop インスタンス #
事前設定済みの Ubuntu を実行する EC2 インスタンスが提供されます。
ワークショップのインストラクターが、割り当てられたワークショップインスタンスへの認証情報を提供します。
インスタンスには以下の環境変数がすでに設定されているはずです
- ACCESS_TOKEN: Observability Cloud にデータを取り込むためのトークン
- REALM: このワークショップで使用するレルム
また、ワークショップ中に使用する AWS キーとシークレットも提供されます。
AWS CLI と Terraform が利用可能であることを確認しましょう。
AWS Command Line Interface (awscli) #
AWS Command Line Interface(awscli)は、AWS リソースとやり取りするために使用される API です。このワークショップでは、デプロイするリソースとやり取りするために特定のスクリプトで使用されます。
Splunk が提供するワークショップインスタンスには、すでに awscli がインストールされているはずです。
- 以下のコマンドで、インスタンスに aws コマンドがインストールされているか確認します
which aws期待される出力は以下のとおりです
/usr/local/bin/aws- インスタンスに aws コマンドがインストールされていない場合は、以下のコマンドを実行します
sudo apt install awscliTerraform #
Terraform は Infrastructure as Code(IaC)プラットフォームで、設定ファイルにリソースを定義することでデプロイ、管理、削除を行います。Terraform は HCL を使用してリソースを定義し、さまざまなプラットフォームやテクノロジー向けの複数のプロバイダーをサポートしています。
このワークショップでは、コマンドラインで Terraform を使用して以下のリソースをデプロイします
- AWS API Gateway
- Lambda Functions
- Kinesis Stream
- CloudWatch Log Groups
- S3 Bucket
- およびその他のサポートリソース
Splunk が提供するワークショップインスタンスには、すでに terraform がインストールされているはずです。
- インスタンスに terraform コマンドがインストールされているか確認します
which terraform期待される出力は以下のとおりです
terraform () {
echo "Using API_TOKEN=XXX" >&2
echo "Using REALM=us1" >&2
command terraform "$@"
}- インスタンスに terraform コマンドがインストールされていない場合は、以下の Terraform 推奨のインストールコマンドに従ってください
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 terraformWorkshop ディレクトリ(Lambda) #
Workshop ディレクトリ lambda は、本日使用する Lambda ベースのサンプルアプリケーションの自動インストルメンテーションと手動インストルメンテーションの両方を完了するために必要な、すべての設定ファイルとスクリプトを含むリポジトリです。
- ホームディレクトリにワークショップディレクトリがあることを確認します
cd ~/workshop/lambda && ls期待される出力は以下のようになります
auto iam_role manualAWS と Terraform の変数設定 #
AWS 変数 #
AWS CLI では、サービスによってデプロイされたリソースにアクセスして管理するための認証情報が必要です。このワークショップでは、Terraform と Python スクリプトの両方がタスクを実行するためにこれらの変数を必要とします。
- このワークショップ用の access key ID、secret access key、region で awscli を設定します
aws configureこのコマンドは以下のようなプロンプトを表示します。キー ID とシークレットキーを入力し、リージョンを us-east-1 に設定し、出力形式はデフォルトのままにします
AWS Access Key ID [None]: XXXXXXXXXXXXXXXX
AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Default region name [None]: us-east-1
Default outoput format [None]:以下のコマンドで動作を確認できます
aws lambda list-functions結果が表示されるはずです。空の場合もあれば、いくつかの関数が表示される場合もありますが、エラーにはならないはずです。成功したら、q を押して終了します。
Terraform 変数 #
Terraform は、機密データや動的データを .tf 設定ファイルにハードコーディングしないようにするため、またリソース定義全体で値を再利用可能にするために、変数の受け渡しをサポートしています。
このワークショップでは、Terraform は Lambda 関数を OpenTelemetry Lambda レイヤーの正しい値でデプロイするため、Splunk Observability Cloud の取り込み値のため、そして環境とリソースを一意で即座に識別可能にするために変数を必要とします。
Terraform 変数は以下の方法で定義されます
- main.tf ファイルまたは variables.tf で変数を定義します
- 以下のいずれかの方法で変数の値を設定します
- ホストレベルで環境変数を設定します。定義と同じ変数名に TF_VAR_ をプレフィックスとして付けます
- terraform.tfvars ファイルで変数の値を設定します
- terraform apply 実行時に引数として値を渡します
このワークショップでは、variables.tf と terraform.tfvars ファイルの組み合わせを使用して変数を設定します。
- vi または nano を使用して、auto または manual ディレクトリ内の terraform.tfvars ファイルを開きます
vi ~/workshop/lambda/auto/terraform.tfvars- 変数に値を設定します。CHANGEME プレースホルダーをインストラクターから提供された値に置き換えてください。
o11y_access_token = "CHANGEME"
o11y_realm = "CHANGEME"
otel_lambda_layer = ["CHANGEME"]
prefix = "CHANGEME"以下の方法でこれらの値を取得できます
o11y_access_token:export | grep ACCESS_TOKENを実行すると、返された値を使用できますo11y_realm: お使いのレルム(例us1、eu0など)otel_lamba_layer: こちら から提供されるus-east-1の値を使用しますprefix: 名前の短縮形を使用します(すべて小文字)
インストラクターがこれらの値の確認をお手伝いします。
ファイルを保存してエディタを終了します。
最後に、編集した terraform.tfvars ファイルをもう一方のディレクトリにコピーします。
cp ~/workshop/lambda/auto/terraform.tfvars ~/workshop/lambda/manualファイル権限の修正(オプション) #
これらのファイルは実行可能であるはずですが、念のため設定しておきましょう
chmod +x ~/workshop/lambda/auto/send_message.py
chmod +x ~/workshop/lambda/manual/send_message.py前提条件の準備が完了しましたので、ワークショップを開始しましょう!
