>  기사  >  백엔드 개발  >  유형 오류가 있는 sqs에 의해 트리거된 golang의 aws 람다

유형 오류가 있는 sqs에 의해 트리거된 golang의 aws 람다

PHPz
PHPz앞으로
2024-02-09 13:46:13743검색

golang中的aws lambda由sqs触发并出现类型错误

php 편집자 Baicao가 이번에는 golang의 AWS Lambda에 대한 질문을 가져왔습니다. AWS SQS를 사용하여 Lambda 함수를 트리거할 때 유형 오류가 발생할 수 있습니다. 이 문제로 인해 Lambda 함수가 SQS 메시지를 정상적으로 처리할 수 없게 되어 개발자에게 불필요한 문제가 발생할 수 있습니다. 이 기사에서는 이 문제의 원인을 살펴보고 개발자가 이러한 유형 오류 딜레마를 성공적으로 해결하는 데 도움이 되는 솔루션을 제공할 것입니다.

질문 내용

API 게이트웨이와 SQS로 트리거되는 람다를 개발 중입니다.

으아악

하지만 sqs 또는 apigateway 이벤트를 사용할 때 내 스위치 유형이 인식되지 않습니다. 이는 항상 기본 문에 속합니다. 예를 들어 sqs의 경우 다음 이벤트를 사용합니다.

으아악

다음 메시지를 받았습니다:

으아악

내가 뭘 잘못했는지 아세요? 나는 golang을 처음 사용하기 때문에 여기서 길을 잃었습니다.

그리고 regcode.handlersqs에 직접 이벤트를 보내려고 했는데 유형 변환 오류가 발생했습니다. 이렇게:

으아악

sqsevent가 비어 있습니다.

Solution

내가 뭘 잘못했는지 아시나요?

AWS 람다 핸들러는 func 中参数的类型,然后创建与您的签名匹配的 event 유형을 반영합니다.

그러면 func 的第二个参数声明为 event events.SQSEvent,AWS 将获取其类型 events.SQSEvent이런 객체를 생성하여 전달하세요.

마찬가지로, func 中使用 event events.APIGatewayProxyRequest,AWS 将反映 event 应该是 events.APIGatewayProxyRequest만들면 됩니다.

즉, AWS는 수신 요청이 SQS에서 오는지 API에서 오는지 확인하지 않습니다. 이는 핸들러의 서명에 따라서만 결정됩니다. 따라서 당신이 func 中使用 event 接口{},AWS 将准确创建您指定要创建的内容,即 interface{}에 있고 다른 유형이 아닌 경우.

이것이 스위치가 작동하지 않는 이유입니다. 이 문제를 해결하는 가장 쉬운 방법은 두 개의 람다 함수(SQS용과 API용)를 사용하는 것입니다.

위 내용은 유형 오류가 있는 sqs에 의해 트리거된 golang의 aws 람다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제