Amazon Lex에서 AWS Lambda 사용 - AWS Lambda

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon Lex에서 AWS Lambda 사용

Amazon Lex를 사용하여 대화 봇을 애플리케이션에 통합할 수 있습니다. Amazon Lex 봇은 사용자와 대화할 수 있는 인터페이스를 제공합니다. Amazon Lex는 사전 빌드된 Lambda 통합을 제공하므로 Amazon Lex 봇에서 Lambda 함수를 사용할 수 있습니다.

Amazon Lex 봇을 구성할 때 검증, 이행 또는 둘 모두를 수행하는 Lambda 함수를 지정할 수 있습니다. 검증을 위해, Amazon Lex는 사용자로부터 각 응답 후에 Lambda 함수를 호출합니다. Lambda 함수는 응답을 검증하고 필요한 경우 사용자에게 수정 피드백을 제공할 수 있습니다. 이행을 위해, Amazon Lex는 봇이 필요한 모든 정보를 성공적으로 수집하고 사용자로부터 확인을 수신한 후에 Lambda 함수를 호출하여 사용자 요청을 이행합니다.

Lambda 함수의 동시성을 관리하여 제공되는 최대 동시 봇 대화 수를 제어할 수 있습니다. 함수가 최대 동시성에 있을 경우 Amazon Lex API는 HTTP 429 상태 코드(요청이 너무 많음)를 반환합니다.

Lambda 함수가 예외를 발생시키는 경우 API는 HTTP 424 상태 코드(종속성 실패 예외)를 반환합니다.

Amazon Lex 봇은 Lambda 함수를 동기적으로 호출합니다. 이벤트 파라미터에는 대화에서의 각 슬롯 값과 봇에 대한 정보가 들어 있습니다. 이벤트 및 응답 필드의 정의는 Amazon Lex 개발자 안내서Lambda 이벤트 및 응답 형식을 참조하세요. Amazon Lex 메시지 이벤트의 invocationSource 파라미터는 Lambda 함수가 입력 DialogCodeHook () 을 검증해야 하는지 아니면 인텐트 () 를 충족해야 하는지를 나타냅니다. FulfillmentCodeHook

Amazon Lex와 함께 Lambda를 사용하는 방법을 보여주는 자습서 예시는 Amazon Lex 개발자 안내서연습 1: 블루프린트를 사용하여 Amazon Lex 봇 만들기를 참조하세요.

역할 및 권한

서비스 연결 역할을 함수의 실행 역할로 구성해야 합니다. Amazon Lex는 사전 정의된 권한으로 서비스 연결 역할을 정의합니다. 콘솔을 사용하여 Amazon Lex 봇을 생성하는 경우 서비스 연결 역할이 자동으로 생성됩니다. AWS CLI를 사용하여 서비스 연결 역할을 생성하려면 create-service-linked-role 명령을 사용합니다.

aws iam create-service-linked-role --aws-service-name lex.amazonaws.com

이 명령은 다음과 같은 역할을 생성합니다.

{ "Role": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "lex.amazonaws.com" } } ] }, "RoleName": "AWSServiceRoleForLexBots", "Path": "/aws-service-role/lex.amazonaws.com/", "Arn": "arn:aws:iam::account-id:role/aws-service-role/lex.amazonaws.com/AWSServiceRoleForLexBots" }

Lambda 함수가 다른 AWS 서비스를 사용하는 경우 해당 권한을 서비스 연결 역할에 추가해야 합니다.

리소스 기반 권한 정책을 사용하여 Amazon Lex 봇이 Lambda 함수를 호출할 수 있도록 합니다. Amazon Lex 콘솔을 사용하는 경우 권한 정책이 자동으로 생성됩니다. AWS CLI에서 Lambda add-permission 명령을 사용하여 권한을 설정합니다.

Amazon Lex V2의 경우 다음 명령을 실행합니다. 소스 ARN에서 AWS 리전 Amazon Lex 봇이 들어 있는 us-east-1(으)로 바꾸고 고유한 AWS 계정 번호와 봇 별칭을 사용하세요.

aws lambda add-permission \ --function-name LexCodeHook \ --statement-id LexInvoke-MyBot \ --action lambda:InvokeFunction \ --principal lex.amazonaws.com \ --source-arn "arn:aws:lex:us-east-1:123456789012:bot-alias/MYBOT/MYBOTALIAS"

Amazon Lex V1을 사용하여 Lambda 함수를 간접적으로 호출할 수도 있습니다. Amazon Lex V1의 경우 다음 명령을 실행합니다. 소스 ARN에서 AWS 리전 Amazon Lex 의도가 들어 있는 us-east-1(으)로 바꾸고 고유한 AWS 계정 번호와 의도 이름을 사용하세요.

aws lambda add-permission \ --function-name LexCodeHook \ --statement-id LexInvoke-MyIntent \ --action lambda:InvokeFunction \ --principal lex.amazonaws.com \ --source-arn "arn:aws:lex:us-east-1:123456789012 ID:intent:MYINTENT:*"

Amazon Lex V1은 더 이상 유지 관리되지 않는다는 점에 유의하세요. Amazon Lex V2를 사용하는 것이 좋습니다.