2 개의 Lambda 함수가 있습니다-하나는 견적을 생성하고 하나는 견적을 주문으로 바꿉니다. Order lambda 함수가 신뢰할 수없는 클라이언트로부터 견적을받는 것이 아니라 견적 함수를 호출하여 견적을 재생성하고 싶습니다.
나는 내가 생각할 수있는 모든 곳을 보았지만 함수를 연결하거나 호출하는 방법을 볼 수는 없습니다 … 확실히 이것이 존재합니다!
답변
를 사용하는 방법을 찾았습니다 aws-sdk
.
var aws = require('aws-sdk');
var lambda = new aws.Lambda({
region: 'us-west-2' //change to your region
});
lambda.invoke({
FunctionName: 'name_of_your_lambda_function',
Payload: JSON.stringify(event, null, 2) // pass params
}, function(error, data) {
if (error) {
context.done('error', error);
}
if(data.Payload){
context.succeed(data.Payload)
}
});
여기에서 문서를 찾을 수 있습니다 : http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Lambda.html
답변
Lambda functions
를 통해 체인을 연결해야합니다 SNS
. 이 접근 방식은 최소한의 노력으로 우수한 성능, 대기 시간 및 확장 성을 제공합니다.
첫 번째 는 Lambda
귀하에게 메시지를 게시 SNS Topic
하고 두 번째 Lambda
는이 주제를 구독합니다. 메시지가 주제에 도착하자마자 두 번째 Lambda
는 메시지를 입력 매개 변수로 사용하여 실행됩니다.
Amazon SNS 알림을 사용하여 Lambda 함수 호출을 참조하십시오 .
이 접근 방식을 사용 하여 SNS를 통해 교차 계정 Lambda 함수를 호출 할 수도 있습니다 .
답변
다음은 파이썬 샘플 코드입니다.
from boto3 import client as boto3_client
from datetime import datetime
import json
lambda_client = boto3_client('lambda')
def lambda_handler(event, context):
msg = {"key":"new_invocation", "at": datetime.now()}
invoke_response = lambda_client.invoke(FunctionName="another_lambda_",
InvocationType='Event',
Payload=json.dumps(msg))
print(invoke_response)
Btw, 람다 역할에 이와 같은 정책을 추가해야합니다.
{
"Sid": "Stmt1234567890",
"Effect": "Allow",
"Action": [
"lambda:InvokeFunction"
],
"Resource": "*"
}
답변
이 질문이 제기 된 이후 Amazon은 Step Functions ( https://aws.amazon.com/step-functions/ )를 릴리스했습니다 .
AWS Lambda의 기본 원칙 중 하나는 비즈니스 로직에 더 집중할 수 있고이를 모두 결합하는 애플리케이션 로직에 집중할 수 없다는 것입니다. 단계 함수를 사용하면 코드를 작성하지 않고도 함수 간 복잡한 상호 작용을 조정할 수 있습니다.
답변
이 솔루션은 boto3 및 Python을 사용하여 수행됩니다.
import boto3
import json
invokeLambda = boto3.client('lambda', region_name='eu-west-1')
def lambda_handler(event, context):
invokeLambda.invoke(FunctionName = 'function_name', InvocationType = 'RequestResponse', Payload = json.dumps(event))
return True
답변
Lambda 클라이언트 문서 (Java 버전) 에서 이것을 볼 때까지 SNS를 잘라내는 것을보고있었습니다 .
AWS Lambda에 액세스하기위한 클라이언트 이 클라이언트를 사용하여 이루어진 모든 서비스 호출은 차단되며 서비스 호출이 완료 될 때까지 반환되지 않습니다.
따라서 SNS는 분명한 장점이 있습니다. 그것은 비동기 적입니다. 람다는 후속 람다가 완료되기를 기다리지 않습니다.
답변
아마존은 2016 년에 AWS 람다에 단계 함수를 도입했습니다. 이제는 단계 함수를 사용하는 것이 매우 편리하므로 단계 함수를 사용하는 것이 더 편리하다고 생각합니다. 다음과 같이 두 개의 람다 함수를 사용하여 상태 머신을 빌드 할 수 있습니다.
- 견적을 생성
- 견적을 주문으로 변환
아래와 같이 쉽게 할 수 있습니다.
여기에서 견적을 생성하는 첫 번째 상태와 순서로 변환 할 다른 상태를 가질 수 있습니다.
{
Comment: "Produce a quote and turns into an order",
StartAt: "ProduceQuote",
States: {
ProduceQuote: {
"Type": Task,
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:ProduceQuote",
"next": TurnsToOrder
}
TurnsToOrder: {
Type: Task,
Resource: "arn:aws:lambda:us-east-1:123456789012:function:ProduceQuote",
end: true
}
}
}
Steps 함수를 사용하면 여러 람다 함수를 쉽게 작성하고 순서대로 또는 병렬로 실행할 수 있습니다. 여기 람다 단계 함수에 대한 자세한 정보를 얻을 수 있습니다 :
단계 기능을