Я добился этого, создав кластер ES с Serverless и экспортировав ARN. Эта же бессерверная служба также создала лямбда-выражение «синтаксического анализа», которое будет обрабатывать все выходные журналы Cloudwatch и передавать их в ES. Затем я обратился к службе, которая записывает в Cloudwatch, в данном случае в кластер ECS, и создал SubscriptionFilter, который записывает в эту лямбду, которая впоследствии записывает в ES. Вот часть бессерверного файла YML, который создает кластер ES. Затем SubscriptionFilter в ECS YML
ElasticSearchInstance:
Type: AWS::Elasticsearch::Domain
Properties:
AdvancedOptions:
rest.action.multi.allow_explicit_index: "true"
CognitoOptions:
Enabled: True
IdentityPoolId:
Ref: CognitoIdentityPool
RoleArn:
Fn::ImportValue: CognitoAccessRoleForAmazonESArn
UserPoolId:
Ref: CognitoUserPool
DomainName: "name-of-my-es-cluster-${env:ENV}"
EBSOptions:
EBSEnabled: true
VolumeType: gp2
VolumeSize: 10
ElasticsearchClusterConfig:
InstanceType: t2.small.elasticsearch
InstanceCount: 1
DedicatedMasterEnabled: false
ZoneAwarenessEnabled: false
ElasticsearchVersion: 7.4
ECSESParsingLamba:
Type: AWS::Logs::SubscriptionFilter
Properties:
DestinationArn:
Fn::ImportValue: !Sub "parsing-lambda-name-${Environment}"
FilterPattern: "[message]"
LogGroupName: !Ref LogGroupName