Java 如何从LambdaA启用/禁用AWS LambdaB的cron
我有一个在S3事件中触发的Lambda(LoadFile)。这种情况每年发生一到两次 加载文件后,在午夜,需要激活加载的数据。有一个lambda(ActivateData)可以做到这一点。有一个cron事件将在午夜运行此lambda。事件在创建时被“禁用” 加载文件lambda加载数据后如何“启用”ActivateData lambda的cron事件 要获得额外积分,ActivateData lambda如何禁用自己的cron事件 我对用Java做这件事特别感兴趣 SAM模板使用以下内容指定激活数据lambda:Java 如何从LambdaA启用/禁用AWS LambdaB的cron,java,amazon-web-services,aws-lambda,cron,serverless,Java,Amazon Web Services,Aws Lambda,Cron,Serverless,我有一个在S3事件中触发的Lambda(LoadFile)。这种情况每年发生一到两次 加载文件后,在午夜,需要激活加载的数据。有一个lambda(ActivateData)可以做到这一点。有一个cron事件将在午夜运行此lambda。事件在创建时被“禁用” 加载文件lambda加载数据后如何“启用”ActivateData lambda的cron事件 要获得额外积分,ActivateData lambda如何禁用自己的cron事件 我对用Java做这件事特别感兴趣 SAM模板使用以下内容指定激活
Events:
ActivateFileDataEvent:
Type: Schedule
Properties:
Schedule: cron(0 0 * * ? *)
Description: Activates an already loaded file
Enabled: false
我不认为cron是处理这个用例的最理想的方法。在大多数情况下,它将处于禁用状态。更好的方法可能是使用AWS Step函数,使用现有的两个Lambda函数 Step函数将包含3个节点-
与大多数事情一样,一旦你弄明白了,事情就变得非常简单了 在SAM中:
- 将要启用的事件的名称作为环境变量存储在加载文件Lambda中
- 在“策略”部分中为该lambda授予必要的权限
AmazonEventBridge eventBridge = AmazonEventBridgeClientBuilder.defaultClient();
EnableRuleRequest request = new EnableRuleRequest();
request.setName(System.getenv("ACTIVATE_EVENT_NAME"));
try {
EnableRuleResult result = eventBridge.enableRule(request);
} catch (Throwable t){
log.error("Something went wrong, event is still disabled.",t);
}
“cron事件”指的是CloudWatch事件调度规则?你不能在aws中直接(不使用cron)让LoadFileLambda调用ActivateData lambda吗?也许我误解了你的要求:)@SusanMustafa LoadFile lambda会在工作时间发生,并且ActivateData lambda必须在当晚午夜运行。@Marcin ActivateData lambda的SAM模板(上面编辑)中设置了一个禁用的cron事件。我想从加载文件lambda启用此事件