AWS ログ取り込みのための Lambda 関数のデプロイ
最終更新日 - 27年2025月XNUMX日
Lambda関数のデプロイとは、コードをパッケージ化してAmazon Web Services (AWS) Lambdaにアップロードし、デプロイパッケージ(依存関係やライブラリなど、コードの実行に必要なバンドルリソース)を実行するプロセスです。Lambdaは、以下の2種類のデプロイパッケージをサポートしています。
- コンテナイメージ—機能を設定するために使用
- .zipファイルアーカイブ—LambdaコンソールまたはAPIを使用して関数を作成するために使用します
デプロイ時に、Lambda関数はAmazon CloudWatchなどの集中ログサービスに送信することで、様々なアプリケーションからログ情報を収集できます。LM LogsのAmazon Web Services統合は、ログイベントを転送するように設定されたLambda関数を使用して、AWS CloudWatchログをLogicMonitorに送信します。詳細については、 LMLogsリポジトリのAWS統合 GitHub で。
LogicMonitor にログを転送するプロセスを自動化するには、次の 2 つの方法があります。
- AWS CloudFormation スタックテンプレートJSONまたはYAMLで記述されたスクリプトを使用して、AWSリソースを単一の繰り返し可能なユニットとして自動的に設定および管理します。LogicMonitorのGitHubリポジトリにあるテンプレートを活用し、LogicMonitorの特定のCloudWatchロググループにマッピングされたパラメータを設定できます。詳細については、 LMLogsリポジトリのAWS統合 GitHub で。
- Terraformの構成—HCL (HashiCorp 構成言語) で記述されたスクリプトを使用して、さまざまなプロバイダーにわたるクラウド インフラストラクチャのセットアップと管理を自動化します。
Lambda関数のデプロイ要件
CloudFormation を使用して Lambda 関数をデプロイするには、次のものが必要です。
- LogicMonitorAPIトークン—ログ取り込みAPIはAPIトークンを使用してリクエストを認証します。詳細については、 API トークンの追加.
- CloudFormation スタックテンプレート—AWSはCloudFormationスタックテンプレートを使用して、CloudFormationコンソールからCloudFormationスタックをデプロイします。詳細については、 CloudFormationコンソールからスタックを作成する Amazonから。
Terraform を使用して Lambda 関数をデプロイするには、次のものが必要です。
- LogicMonitorAPIトークン—ログ取り込み API は API トークンを使用してリクエストを認証します。
注意: LM_COMPANY_DOMAIN が指定されていない場合、または空の文字列に設定されている場合、デフォルトで「logicmonitor.com」に設定されます。この変数でサポートされているドメインは次のとおりです。
- lmgov.us
- 翻訳会社
- ロジックモニター.com
CloudFormation スタックオプション
次の表は、CloudFormation スタックを構成するときに定義するパラメータを示しています。
| 詳細説明 | 必須 | |
FunctionName | ログ転送Lambda関数の名前。デフォルトは LMLogsForwarder. | あり |
LMIngestEndpoint | LogicMonitor アカウントの URL: https://<account>.logicmonitor.com注意: この例では、アカウント | あり |
LMAccessId | LogicMonitor API トークンのアクセス ID。 推奨事項: セキュリティのベストプラクティスに沿うために、専用の API 専用ユーザーを作成します。 | あり |
LMAccessKey | LogicMonitor API トークンのアクセス キー。 | あり |
LMRegexScrub | ログ メッセージから一致するテキストを削除するための正規表現パターン。 推奨事項: このパラメータを使用して、機密情報を含むログをフィルタリングし、LogicMonitor に送信されないようにします。 | いいえ |
FunctionMemorySize | ログ転送 Lambda 関数のメモリ サイズ。 | いいえ |
FunctionTimeoutInSeconds | ログ転送 Lambda 関数のタイムアウト。 | いいえ |
ResourceType | AWS ログの送信元を示します。また、デプロイされたサービスの場所も示します。 | いいえ |
CloudFormation のアクセス許可
CloudFormationスタックをデフォルトオプションでデプロイするには、シークレットの保存、フォワーダーコード用のS3バケットの作成、ロールとログを含むLambda関数の作成に必要な権限が必要です。必要な権限の例を以下に示します。
{
"Effect": "Allow",
"Action": [
"cloudformation:*",
"secretsmanager:CreateSecret",
"secretsmanager:TagResource",
"secretsmanager:DeleteSecret",
"s3:CreateBucket",
"s3:GetObject",
"s3:PutEncryptionConfiguration",
"s3:PutBucketPublicAccessBlock",
"s3:DeleteBucket",
"iam:CreateRole",
"iam:GetRole",
"iam:PassRole",
"iam:PutRolePolicy",
"iam:AttachRolePolicy",
"iam:DetachRolePolicy",
"iam:DeleteRolePolicy",
"iam:DeleteRole",
"iam:TagRole",
"lambda:TagResource",
"lambda:CreateFunction",
"lambda:GetFunction",
"lambda:GetFunctionConfiguration",
"lambda:GetLayerVersion",
"lambda:InvokeFunction",
"lambda:PutFunctionConcurrency",
"lambda:AddPermission",
"lambda:RemovePermission",
"lambda:DeleteFunction",
"logs:CreateLogGroup",
"logs:DescribeLogGroups",
"logs:PutRetentionPolicy",
"logs:PutSubscriptionFilter",
"logs:DeleteSubscriptionFilter"
],
"Resource": "*"
}AWS CloudFormation を使用して Lambda 関数をデプロイする
LogicMonitor GitHubリポジトリを使用してLambda関数をデプロイできます。 LMLogsリポジトリのAWS統合 GitHub で。
- LMログリポジトリのAWS統合で、READMEに移動し、 スタックを起動します。
- テンプレートでスタックオプションを設定します。詳細については、CloudFormation スタックオプション表をご覧ください。
スタックを作成すると、Lambda 関数がデプロイされ、特定の CloudWatch Logs グループにサブスクライブされて、ログが LogicMonitor に転送されます。
注意: FunctionName のデフォルト値は LMLogsForwarder です。新しい関数が作成されると、同じ名前(LMLogsForwarder)に /aws/lambda/ プレフィックスが付いた CloudWatch ロググループが作成されます。関数の作成時に別の FunctionName を指定した場合、ロググループも同じ名前(aws/lambda/myfunctionname)で作成されます。
CloudWatchロググループに転送したいログが含まれていない場合は、 ログ取り込みのための AWS サービス設定.
ログが適切な CloudWatch Logs グループに送信された場合、Lambda 関数は自動的にログ取り込み API に転送します。ログとログ異常は、ログページとアラートページの UI に表示されます。
Terraform を使用した Lambda 関数のデプロイ
コマンドラインを開き、Terraform 構成が配置されているディレクトリで次の Terraform コマンドを実行します (必要な変数を入力します)。
# terraform apply --var 'lm_access_id=<lm_access_id>' --var 'lm_access_key=<lm_access_key>' --var 'lm_company_name=<lm_company_name>'--var 'lm_company_domain=<lm_company_domain>'`詳細については、以下を参照してください LMログフォワーダーの構成例 GitHub で。