Download PDF
Download page AppDynamics AWS Lambda Extension を使用して、実行時にサーバレス APM をインストゥルメントする.
AppDynamics AWS Lambda Extension を使用して、実行時にサーバレス APM をインストゥルメントする
このページでは、実行時にサーバレストレーサを挿入するための推奨方法である AppDynamics AWS Lambda Extension for Serverless APM(AppDynamics Lambda 拡張機能)の使用方法について説明します。このオプションを使用して、Node.js または Python アプリケーションにレイヤを動的に追加します。
AppDynamics AWS Lambda 拡張機能は、Node.js サーバーレス トレーサ バージョン 23.3.404 では機能しません。
このドキュメントは、AppDynamics と組み合わせて AppDynamics AWS Lambda Extension for Serverless APM を使用するための情報を提供することを目的としています。AWS Lambda は AWS によって管理され、AppDynamics ソリューションとは別の製品です。
- AWS Lambda に関連する質問については、「AWS Lambda Documentation」を参照してください。
- AppDynamics AWS Lambda Extension for Serverless APM に関連する質問については、「AWS Lambda 向けサーバレス APM」を参照してください。
はじめる前に
AWS Lambda 向けサーバーレス APM に登録し、環境変数を設定すると、インストゥルメンテーションを開始できます。セットアップが次の要件を満たしていることを確認します。
既存の AWS Lambda 関数が Node.js バージョン 12.x、14.x、16.x、18.x または Python 3.7 ~ 3.9 で作成されている
- AWS Lambda 向けアクティブサーバレス APM のサブスクリプション
- AppDynamics SaaS コントローラバージョン 4.5.11 以降
- サポートされる AWS リージョン:eu-central-1、eu-north-1、eu-west-1、eu-west-2、eu-west-3、ap-northeast-1、ap-northeast-2、ap-south-1、ap-southeast-1、ap-southeast-2、ca-central-1、sa-east-1、us-east-1、us-east-2、us-west-1、us-west-2
AWS Lambda レイヤを使用して実行時にサーバレストレーサを挿入する
Node.js または Python サーバレストレーサをインストールするには、AppDynamics AWS Lambda Extension for Serverless APM を実装するレイヤを使用するように Lambda 関数を構成します。これを実行する方法は、Lambda 関数が zip アーカイブとしてパッケージ化されているか、コンテナイメージとしてパッケージ化されているかによって異なります。
zip アーカイブとしてパッケージ化されている場合に AWS Lambda Extension を関数に追加する
Amazon から AppDynamics レイヤをプルするには、AWS Management Console UI または AWS CLI を使用して、Lambda に Amazon Resource Number(ARN)を追加します。
AWS UI を使用した Lambda 関数のインストゥルメント化
- AWS Management Console コンソールで、[Compute > Lambda] を選択します。
- [AWS Lambda] パネルから、インストゥルメント化する lambda を選択します。
- [Layers] を選択します。
- クリック Add a layer.
- [Choose a layer] で、[Specify an ARN. ] を選択します。
[Specify an ARN, ] で、AWS レイヤ情報を入力します。
arn:aws:lambda:us-west-2:338050622354:layer:appdynamics-lambda-extension:22
BASHARN リージョンは、ラムダが展開されている AWS リージョンに基づいて変更されます。たとえば、ラムダが Europe (Frankfurt) eu-central-1 の場合、次を使用します。
arn:aws:lambda:eu-central-1:338050622354:layer:appdynamics-lambda-extension:22
BASHクリック Add.
レイヤがラムダに追加されたことを確認するには、[Layers] をクリックします。[Layers] の下に、appdynamics-lambda-extension が表示されます。
- 「環境変数の設定」を参照してください。
AWS CLI を使用した Lambda 関数のインストゥルメント化
AWS CLI を使用して Amazon から AppDynamics レイヤをプルするには、次の手順を実行します。
- 「レイヤを使用するための関数の設定」を参照してください。
- 「環境変数の設定」を参照してください。
環境変数の設定
AWS Lambda へのトレーサの挿入を完了するには、プログラミング言語とバージョンに応じて環境変数を構成します。
Node 10.x、Node 12.x、Node 14.x、Node 16.x、Node 18.x、Python 3.8、および Python 3.9
環境変数 AWS_LAMBDA_EXEC_WRAPPER
を値 /opt/appdynamics-extension-script:
で追加します。
AWS_LAMBDA_EXEC_WRAPPER = /opt/appdynamics-extension-script
Python 3.7 の場合
環境変数 APPDYNAMICS_PYTHON_AUTOINSTRUMENT
を値を true:
に設定して追加します。
APPDYNAMICS_PYTHON_AUTOINSTRUMENT = true
コンテナイメージとしてパッケージ化されている場合に AWS Lambda Extension を関数に追加する
Lambda 関数がコンテナイメージとして展開されている場合、関数設定を通じて Lambda レイヤを追加することはできません。代わりに、ビルドプロセス中にコンテナイメージの一部として拡張機能をパッケージ化する必要があります。詳しくは、この AWS のブログ記事を参照してください。
AppDynamics Lambda 拡張機能を Lambda コンテナに追加するには、次のような Dockerfile を使用する必要があります。
FROM amazon/aws-cli:2.2.4 AS downloader
ARG version_number=10
ARG access_key
ARG secret_key
ARG region
ARG cachebust
ENV AWS_ACCESS_KEY_ID=${access_key}
ENV AWS_SECRET_ACCESS_KEY=${secret_key}
ENV AWS_REGION=${region}
ENV VERSION_NUMBER=${version_number}
RUN yum install -y jq curl
RUN echo "Cache Bust: $cachebust"
RUN aws lambda get-layer-version-by-arn --arn arn:aws:lambda:$AWS_REGION:716333212585:layer:appdynamics-lambda-extension:$VERSION_NUMBER | jq -r '.Content.Location' | xargs curl -o extension.zip
FROM public.ecr.aws/lambda/nodejs:18
COPY --from=downloader /aws/extension.zip .
RUN yum install -y unzip && unzip extension.zip -d /opt && rm -f extension.zip
COPY package.json ./
RUN npm install
COPY app.js ./
# You can overwrite command in `serverless.yml` template
CMD ["app.handler"]
FROM amazon/aws-cli:2.2.4 AS downloader
ARG version_number=10
ARG access_key
ARG secret_key
ARG region
ARG cachebust
ENV AWS_ACCESS_KEY_ID=${access_key}
ENV AWS_SECRET_ACCESS_KEY=${secret_key}
ENV AWS_REGION=${region}
ENV VERSION_NUMBER=${version_number}
RUN yum install -y jq curl
RUN echo "Cache Bust: $cachebust"
RUN aws lambda get-layer-version-by-arn --arn arn:aws:lambda:$AWS_REGION:716333212585:layer:appdynamics-lambda-extension:$VERSION_NUMBER | jq -r '.Content.Location' | xargs curl -o extension.zip
FROM public.ecr.aws/lambda/nodejs:16
COPY --from=downloader /aws/extension.zip .
RUN yum install -y unzip && unzip extension.zip -d /opt && rm -f extension.zip
COPY package.json ./
RUN npm install
COPY app.js ./
# You can overwrite command in `serverless.yml` template
CMD ["app.handler"]
FROM amazon/aws-cli:2.2.4 AS downloader
ARG version_number=10
ARG access_key
ARG secret_key
ARG region
ARG cachebust
ENV AWS_ACCESS_KEY_ID=${access_key}
ENV AWS_SECRET_ACCESS_KEY=${secret_key}
ENV AWS_REGION=${region}
ENV VERSION_NUMBER=${version_number}
RUN yum install -y jq curl
RUN echo "Cache Bust: $cachebust"
RUN aws lambda get-layer-version-by-arn --arn arn:aws:lambda:$AWS_REGION:716333212585:layer:appdynamics-lambda-extension:$VERSION_NUMBER | jq -r '.Content.Location' | xargs curl -o extension.zip
FROM public.ecr.aws/lambda/nodejs:14
COPY --from=downloader /aws/extension.zip .
RUN yum install -y unzip && unzip extension.zip -d /opt && rm -f extension.zip
COPY package.json ./
RUN npm install
COPY app.js ./
# You can overwrite command in `serverless.yml` template
CMD ["app.handler"]
FROM amazon/aws-cli:2.2.4 AS downloader
ARG version_number=10
ARG access_key
ARG secret_key
ARG region
ARG cachebust
ENV AWS_ACCESS_KEY_ID=${access_key}
ENV AWS_SECRET_ACCESS_KEY=${secret_key}
ENV AWS_REGION=${region}
ENV VERSION_NUMBER=${version_number}
RUN yum install -y jq curl
RUN echo "Cache Bust: $cachebust"
RUN aws lambda get-layer-version-by-arn --arn arn:aws:lambda:$AWS_REGION:716333212585:layer:appdynamics-lambda-extension:$VERSION_NUMBER | jq -r '.Content.Location' | xargs curl -o extension.zip
FROM public.ecr.aws/lambda/nodejs:12
COPY --from=downloader /aws/extension.zip .
RUN yum install -y unzip && unzip extension.zip -d /opt && rm -f extension.zip
COPY package.json ./
RUN npm install
COPY app.js ./
# You can overwrite command in `serverless.yml` template
CMD ["app.handler"]
FROM amazon/aws-cli:2.2.4 AS downloader
ARG version_number=10
ARG access_key
ARG secret_key
ARG region
ARG cachebust
ENV AWS_ACCESS_KEY_ID=${access_key}
ENV AWS_SECRET_ACCESS_KEY=${secret_key}
ENV AWS_REGION=${region}
ENV VERSION_NUMBER=${version_number}
RUN yum install -y jq curl
RUN echo "Cache Bust: $cachebust"
RUN aws lambda get-layer-version-by-arn --arn arn:aws:lambda:$AWS_REGION:716333212585:layer:appdynamics-lambda-extension:$VERSION_NUMBER | jq -r '.Content.Location' | xargs curl -o extension.zip
FROM public.ecr.aws/lambda/nodejs:10
COPY --from=downloader /aws/extension.zip .
RUN yum install -y unzip && unzip extension.zip -d /opt && rm -f extension.zip
COPY package.json ./
RUN npm install
COPY app.js ./
# You can overwrite command in `serverless.yml` template
CMD ["app.handler"]
FROM amazon/aws-cli:2.2.4 AS downloader
ARG version_number=10
ARG access_key
ARG secret_key
ARG region
ARG cachebust
ENV AWS_ACCESS_KEY_ID=${access_key}
ENV AWS_SECRET_ACCESS_KEY=${secret_key}
ENV AWS_REGION=${region}
ENV VERSION_NUMBER=${version_number}
RUN yum install -y jq curl
RUN echo "Cache Bust: $cachebust"
RUN aws lambda get-layer-version-by-arn --arn arn:aws:lambda:$AWS_REGION:716333212585:layer:appdynamics-lambda-extension:$VERSION_NUMBER | jq -r '.Content.Location' | xargs curl -o extension.zip
FROM public.ecr.aws/lambda/python:3.9
COPY --from=downloader /aws/extension.zip .
RUN yum install -y unzip && unzip extension.zip -d /opt && rm -f extension.zip
COPY app.py ./
# You can overwrite command in `serverless.yml` template
CMD ["app.handler"]
FROM amazon/aws-cli:2.2.4 AS downloader
ARG version_number=10
ARG access_key
ARG secret_key
ARG region
ARG cachebust
ENV AWS_ACCESS_KEY_ID=${access_key}
ENV AWS_SECRET_ACCESS_KEY=${secret_key}
ENV AWS_REGION=${region}
ENV VERSION_NUMBER=${version_number}
RUN yum install -y jq curl
RUN echo "Cache Bust: $cachebust"
RUN aws lambda get-layer-version-by-arn --arn arn:aws:lambda:$AWS_REGION:716333212585:layer:appdynamics-lambda-extension:$VERSION_NUMBER | jq -r '.Content.Location' | xargs curl -o extension.zip
FROM public.ecr.aws/lambda/python:3.8
COPY --from=downloader /aws/extension.zip .
RUN yum install -y unzip && unzip extension.zip -d /opt && rm -f extension.zip
COPY app.py ./
# You can overwrite command in `serverless.yml` template
CMD ["app.handler"]
FROM amazon/aws-cli:2.2.4 AS downloader
ARG version_number=10
ARG access_key
ARG secret_key
ARG region
ARG cachebust
ENV AWS_ACCESS_KEY_ID=${access_key}
ENV AWS_SECRET_ACCESS_KEY=${secret_key}
ENV AWS_REGION=${region}
ENV VERSION_NUMBER=${version_number}
RUN yum install -y jq curl
RUN echo "Cache Bust: $cachebust"
RUN aws lambda get-layer-version-by-arn --arn arn:aws:lambda:$AWS_REGION:716333212585:layer:appdynamics-lambda-extension:$VERSION_NUMBER | jq -r '.Content.Location' | xargs curl -o extension.zip
FROM public.ecr.aws/lambda/python:3.7
COPY --from=downloader /aws/extension.zip .
RUN yum install -y unzip && unzip extension.zip -d /opt && rm -f extension.zip
COPY app.py ./
# You can overwrite command in `serverless.yml` template
CMD ["app.handler"]
コードと AppDynamics Lambda 拡張を含むコンテナイメージを作成するには、現在のディレクトリに正しい Dockerfile があることを確認し、docker build コマンドを使用します。次に例を示します。
docker build --build-arg version_number=$version_number --build-arg access_key=$(aws configure get aws_access_key_id) --build-arg secret_key=$(aws configure get aws_secret_access_key) --build-arg region=$(aws configure get region) -t <your tag> --build-arg cachebust=$(date +%s) .
サーバレス トレーサ インストゥルメンテーションの確認
「サーバーレス トレーサ インストゥルメンテーションの確認」を参照してください。
これらのマニュアルで使用されている Amazon Web サービス、AWS ロゴ、AWS、およびその他の AWS マークは、米国およびその他の国における Amazon.com, Inc. またはその関連会社の商標です。