⚡ 2024년 4월 30일 이후에 새로운 Amazon Q 비즈니스 애플리케이션을 생성한 경우 이제 아래 제공된 업데이트된 지침을 사용하여 사용자 지정 UI를 설정할 수 있습니다. |
---|
참고: 이 가이드에 제공된 지침은 Cognito에만 적용되지만 약간의 조정을 통해 다른 OIDC 2.0 호환 ID 공급자(IdP)에도 적용됩니다.
고객은 사용자 인터페이스를 단일 플랫폼에 통합하여 피드백 처리, 기업 색상 및 템플릿 사용, 사용자 정의 로그인, 컨텍스트 전환 감소 등 사용자 정의 기능을 Amazon Q 사용자 인터페이스에 통합하는 기능을 원하는 경우가 많습니다. 코드 리포지토리에서는 사용자 인증을 위해 Amazon Cognito를 사용하고 Amazon Q SDK를 사용하여 chat_sync API를 통해 프로그래밍 방식으로 챗봇 애플리케이션을 호출하는 Amazon Q에 사용자 지정 UI를 통합하는 방법을 보여줍니다.
? 워크플로에는 다음 단계가 포함됩니다.
먼저 사용자는 Application Load Balancer 뒤에 호스팅되는 챗봇 애플리케이션에 액세스합니다.
사용자에게 Cognito로 로그인하라는 메시지가 표시됩니다.
UI 애플리케이션은 Cognito의 토큰을 Amazon Q 범위의 IAM Identity Center 토큰과 교환합니다.
UI 애플리케이션은 IAM 역할을 맡고 STS(Secure Token Service)에서 AWS 세션을 검색하며, Amazon Q와 상호 작용하기 위해 IAM Identity Center 토큰으로 강화됩니다.
? 블로그 1
? 블로그 2
Amazon Q는 ChatSync API를 사용하여 대화를 수행합니다. 신원 인식 세션 덕분에 Amazon Q는 어떤 사용자와 상호 작용하는지 알고 있습니다.
요청은 다음 필수 매개변수를 사용합니다.
applicationId : Amazon Q 대화에 연결된 Amazon Q 애플리케이션의 식별자입니다.
userMessage : 대화의 최종 사용자 메시지입니다.
Amazon Q는 응답을 JSON 객체(Amazon Q 설명서에 자세히 설명되어 있음)로 반환하며 아래에는 응답 페이로드의 몇 가지 핵심 속성이 나와 있습니다.
systemMessage : 대화에서 AI가 생성한 메시지
sourceAttributions : 대화 응답을 생성하는 데 사용되는 소스 문서입니다. RAG(검색 증강 생성)에서 이는 항상 Amazon Q에 인덱싱된 기업 지식 기반의 하나 이상의 문서를 참조합니다.
이 솔루션을 배포하기 전에 다음 필수 구성 요소가 설정되어 있는지 확인하세요.
TLS 인증서가 이미 있는 경우 이 섹션을 건너뛸 수 있습니다.
그러나 인증서가 없고 이 데모 실행을 계속하려면 다음 openssl 명령을 사용하여 도메인과 연결된 개인 인증서를 생성할 수 있습니다.
openssl req
-x509 -nodes -days 365 -sha256
-subj '/C=US/ST=Oregon/L=Portland/CN=sampleexample.com'
-newkey rsa:2048 -keyout key.pem -out cert.pem
aws acm import-certificate --certificate fileb://cert.pem --private-key fileb://key.pem
➡️ AWS CloudFormation 스택을 시작할 때 사용자 지정 TLS 인증서를 제공하지 않은 경우 UI에 액세스할 때 브라우저에서 경고가 표시된다는 점에 유의하세요. 위 지침에서는 백업으로 사용할 수 있는 자체 서명된 인증서를 생성하는 방법을 보여 주지만 프로덕션 사용 사례에는 권장되지 않습니다.
인증 기관에서 검증한 TLS 인증서를 얻어 AWS Certificate Manager로 가져와 AWS CloudFormation 스택을 시작할 때 참조해야 합니다.
개발 목적으로 자체 서명된 인증서를 계속 사용하려면 브라우저 경고 페이지를 지나서 진행할 수 있어야 합니다. Chrome을 사용하면 "연결이 비공개가 아닙니다"라는 오류 메시지(NET::ERR_CERT_AUTHORITY_INVALID)가 표시되지만 "고급"을 클릭하면 계속 진행하기 위한 링크가 표시됩니다.
스택에 대해 다음 매개변수를 제공하십시오.
• 스택 이름 – CloudFormation 스택의 이름(예: AmazonQ-UI-Demo)
• AuthName – Amazon Cognito 사용자 풀에 할당할 전역적으로 고유한 이름입니다. 도메인 이름에 cognito, aws 또는 amazon과 같은 예약어가 포함되어 있지 않은지 확인하세요.
• CertificateARN – 이전 단계에서 생성된 CertificateARN
• IdcApplicationArn – Identity Center 고객 애플리케이션 ARN. 신뢰할 수 있는 토큰 발급자를 사용하여 IAM Identity Center 애플리케이션을 생성하려면 이 스택의 일부로 Cognito 사용자 풀을 생성해야 하므로 처음 실행 시 비워 둡니다.
• PublicSubnetIds – EC2 인스턴스와 Application Load Balancer를 배포하는 데 사용할 수 있는 퍼블릭 서브넷의 ID입니다. 퍼블릭 서브넷을 2개 이상 선택하세요.
• QApplicationId – Amazon Q의 기존 애플리케이션 ID
• VPCId – 데모 배포에 사용할 수 있는 기존 VPC의 ID입니다.
대상 : Identity Center에서 고객 애플리케이션을 설정하는 대상
RoleArn : Identity Center에서 토큰 교환을 설정하는 데 필요한 IAM 역할의 ARN
TrustedIssuerUrl : Identity Center를 설정하기 위한 신뢰할 수 있는 발급자의 끝점
URL : Streamlit 앱에 액세스하기 위한 로드 밸런서 URL
AWS IAM Identity Center로 이동하여 새로운 사용자 지정 관리형 애플리케이션을 추가합니다.
애플리케이션 유형 선택 -> OAuth2.0 선택 -> 다음
새로운 사용자 정의 관리형 애플리케이션을 생성하는 옵션을 찾을 수 없는 경우 IAM ID 센터를 사용하여 조직을 활성화하십시오.
애플리케이션 이름과 설명을 입력하고 이미지에 표시된 대로 아래 옵션을 선택하세요.
이제 신뢰할 수 있는 토큰 발급자를 생성하세요.
발급자 URL -> 1단계의 TrustedIssuerUrl을 제공하고 발급자 이름을 제공하고 맵 속성을 이메일로 유지합니다.
그런 다음 IAM ID 센터 애플리케이션 인증 설정으로 다시 이동하여 이전 단계에서 생성한 신뢰할 수 있는 토큰 발급자를 선택하고[목록에 표시되지 않으면 새로 고침] Aud 클레임을 추가하고 -> 1단계의 대상을 제공한 다음 클릭합니다. 다음
애플리케이션 자격 증명 지정에서 IAM 역할 입력 -> 1단계의 RoleArn 제공
그런 다음 모든 단계를 검토하고 애플리케이션을 생성합니다.
애플리케이션이 생성되면 애플리케이션으로 이동하여 -> 할당된 사용자 및 그룹을 선택합니다.
그런 다음 ID 전파를 위한 신뢰할 수 있는 애플리케이션을 설정하고 아래 단계에 따라 Amazon Q를 ID 전파를 위한 신뢰할 수 있는 애플리케이션으로 설정합니다.
4단계: IAM Identity Center 애플리케이션이 생성되면 애플리케이션 ARN을 복사하고 Cloudformation으로 이동하여 이전에 생성된 스택을 업데이트합니다. IdcApplicationArn 매개변수에 Identity Center 애플리케이션 ARN을 입력하고 스택을 실행합니다.
5단계: 업데이트가 완료되면 Cloudformation 출력 탭으로 이동하여 URL을 복사하고 브라우저에서 URL을 엽니다.
6단계: Streamlit 앱은 Cognito로 연결하라는 메시지를 표시합니다. 첫 번째 로그인 시도에서 가입을 시도하는 경우 IAM ID 센터에 이미 존재하는 사용자에 대해 동일한 이메일 ID 및 비밀번호를 사용하십시오.
⚡ Cognito 사용자 풀과 ID 센터 모두에서 사용자를 프로비저닝할 필요가 없도록 하려면 아래 링크를 따라 ID 센터에서 두 번째 사용자 지정 앱(SAML)을 생성할 수 있습니다. 이 맞춤형 앱은 Cognito 사용자 풀의 ID 공급자 역할을 합니다.
? 동영상
? 지침
sudo -i
cd /opt/custom-web-experience-with-amazon-q-business
자세한 내용은 문제 해결을 참조하세요.
자세한 내용은 기여를 참조하세요.
이 라이브러리는 MIT-0 라이선스에 따라 라이선스가 부여됩니다. 라이센스 파일을 참조하십시오.