AWS CLI を使用した Lambda 関数のインストゥルメント化

AWS CLI を使用して Amazon から Splunk AppDynamics レイヤをプルするには1、次の手順を実行します。

  1. レイヤを使用するための関数の設定」を参照してください。
  2. 環境変数の設定」を参照してください。

環境変数の設定

AWS Lambda へのトレーサの挿入を完了するには、プログラミング言語とバージョンに応じて環境変数を構成します。

Node 16.x、Node 18.x、Node 20.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 のブログ記事を参照してください。

Cisco AppDynamics Lambda 拡張機能を Lambda コンテナに追加するには、次のような Dockerfile を使用する必要があります。

Node.js 20
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:20
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"]
Node.js 18
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"]
Node.js 16
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"]
Python 3.9
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"]
python 3.8
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"]
Python 3.7
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"]

コードと Cisco 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) .

サーバレス トレーサ インストゥルメンテーションの確認

サーバーレス トレーサ インストゥルメンテーションの確認」を参照してください。

1 これらのマニュアルで使用されている Amazon Web サービス、AWS ロゴ、AWS、およびその他の AWS マークは、米国およびその他の国における Amazon.com, Inc. またはその関連会社の商標です。