Link Search Menu Expand Document Documentation Menu

使用 AWS Lambda 安排报告

您可以将 AWS Lambda 与 Reporting CLI 工具配合使用,以指定 AWS Lambda 函数来触发报告生成。

这要求您使用 AMD64 系统和 Docker。

先决条件

要将 Reporting CLI 与 AWS Lambda 配合使用,您需要执行以下初步步骤。

步骤 1:使用 Dockerfile 创建容器镜像

您需要通过运行 Dockerfile 来组装容器镜像。运行 Dockerfile 时,它会下载使用 Reporting CLI 所需的 OpenSearch 工件。要了解有关 Dockerfile 的更多信息,请参阅Dockerfile 参考

将以下示例配置复制到 Dockerfile 中

# Define function directory
ARG FUNCTION_DIR="/function"

# Base image of the docker container
FROM node:lts-slim as build-image

# Include global arg in this stage of the build
ARG FUNCTION_DIR

# AWS Lambda runtime dependencies
RUN apt-get update && \
    apt-get install -y \
        g++ \
        make \
        unzip \
        libcurl4-openssl-dev \
        autoconf \
        automake \
        libtool \
        cmake \
        python3 \
        libkrb5-dev \
        curl

# Copy function code
WORKDIR ${FUNCTION_DIR}
RUN npm install @opensearch-project/reporting-cli && npm install aws-lambda-ric

# Build Stage 2: Copy Build Stage 1 files in to Stage 2. Install chrome, then remove chrome to keep the dependencies.
FROM node:lts-slim
# Include global arg in this stage of the build
ARG FUNCTION_DIR
# Set working directory to function root directory
WORKDIR ${FUNCTION_DIR}
# Copy in the build image dependencies
COPY --from=build-image ${FUNCTION_DIR} ${FUNCTION_DIR}

# Install latest chrome dev package and fonts to support major char sets (Chinese, Japanese, Arabic, Hebrew, Thai and a few others)
# Note: this installs the necessary libs to make the bundled version of Chromium that Puppeteer installs, work.
RUN apt-get update \
    && apt-get install -y wget gnupg \
    && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
    && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
    && apt-get update \
    && apt-get install -y google-chrome-stable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 \
      --no-install-recommends \
    && apt-get remove -y google-chrome-stable \
    && rm -rf /var/lib/apt/lists/*

ENTRYPOINT ["/usr/local/bin/npx", "aws-lambda-ric"]

ENV HOME="/tmp"
CMD [ "/function/node_modules/@opensearch-project/reporting-cli/src/index.handler" ]

接下来,在包含 Dockerfile 的同一目录中运行以下构建命令

docker build -t opensearch-reporting-cli .

步骤 2:使用 Amazon ECR 创建私有存储库

您需要按照说明创建镜像存储库,请参阅通过 AWS 管理控制台开始使用 Amazon ECR

将您的存储库命名为 opensearch-reporting-cli

除了 Amazon ECR 说明外,您还需要对 Reporting CLI 进行一些调整,以使其在此过程的后续步骤中正常运行。

步骤 3:将镜像推送到私有存储库

您需要从 AWS ECR 控制台获取几个命令,以便在 Dockerfile 目录中运行。

  1. 创建存储库后,从“**私有存储库**”中选择它。
  2. 选择“**查看推送命令**”。
  3. 在 Dockerfile 目录中,按顺序复制并运行“**opensearch-reporting-cli 的推送命令**”中显示的每个命令。

有关 Docker 推送命令的更多详细信息,请参阅 Amazon ECR 用户指南中的推送 Docker 镜像

步骤 4:使用容器镜像创建 Lambda 函数

现在您已经为 Reporting CLI 创建了容器镜像,您需要创建一个定义为容器镜像的函数。

  1. 打开 AWS Lambda 控制台并选择函数
  2. 选择“**创建函数**”,然后选择“**容器镜像**”并填写函数名称。
  3. 在“**容器镜像 URI**”中,选择“**浏览镜像**”并选择 opensearch-reporting-cli 作为镜像存储库。
  4. 在“**镜像**”中选择镜像,然后选择“**选择镜像**”。
  5. 在“**架构**”中,选择“**x86_64**”。
  6. 选择“**创建函数**”。
  7. 转到“**Lambda**”>“**函数**”,然后选择您创建的函数。
  8. 选择“**配置 > 一般配置 > 编辑超时**”,并将 lambda 中的超时设置为 5 分钟,以允许 Reporting CLI 生成报告。
  9. 将“**临时存储**”设置更改为至少 1024MB。默认设置不足以支持报告生成。

  10. 接下来,通过提供 JSON 格式的值或提供 AWS Lambda 环境变量来测试该函数。
  • 如果函数包含固定值(例如电子邮件地址),则不需要 JSON 文件。您可以在 AWS Lambda 中指定环境变量。
  • 如果函数采用可变键值对,则需要使用与命令选项相同的命名约定在 JSON 中指定值,例如 --credentials 选项需要用户名和密码。

以下示例显示了为发件人和收件人电子邮件地址提供的固定值

{
  "url": "https://playground.opensearch.org/app/dashboards#/view/084aed50-6f48-11ed-a3d5-1ddbf0afc873",
  "transport": "ses",
  "from": "sender@amazon.com", 
  "to": "recipient@amazon.com", 
  "subject": "Test lambda docker image"
}

要了解有关 AWS Lambda 函数的更多信息,请参阅 AWS Lambda 文档中的将 Lambda 函数部署为容器镜像

步骤 5:添加触发器以启动 AWS Lambda 函数

设置触发器以开始运行报告。AWS Lambda 可以使用任何 AWS 服务作为触发器,例如 SNS、S3 或 AWS CloudWatch EventBridge。

  1. 在“**触发器**”部分,选择“**添加触发器**”。
  2. 从列表中选择一个触发器。例如,您可以设置 AWS CloudWatch 事件。要了解有关可以安排的 Amazon ECR 事件的更多信息,请参阅来自 Amazon ECR 的示例事件
  3. 选择“**测试**”以启动函数。

(可选)步骤 6:添加 Amazon SES 的角色权限

如果您想使用 Amazon SES 进行电子邮件传输,则需要设置权限。

  1. 选择“**配置**”并选择“**执行角色**”。
  2. 在“**摘要**”中,选择“**权限**”。
  3. 选择“**{}JSON**”以打开 JSON 策略编辑器。
  4. 为您要使用的 Amazon SES 资源添加权限。

以下示例提供了发送电子邮件操作的资源 ARN

{
"Effect": "Allow",
"Action": [
      "ses:SendEmail",
      "ses:SendRawEmail"
            ],
"Resource": "arn:aws:ses:us-west-2:555555511111:identity/username@amazon.com"
}

要了解有关设置角色权限的更多信息,请参阅 AWS Lambda 用户指南中的权限

剩余 350 字符

有问题?

想贡献力量?