

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

# 사용자 지정 자격 증명 공급자 문제 해결
<a name="custom-idp-troubleshooting"></a>

이 섹션에서는 Transfer Family의 사용자 지정 자격 증명 공급자와 관련된 문제에 대해 가능한 해결 방법을 설명합니다.

**Topics**
+ [API Gateway 통합 오류 문제 해결](#api-gateway-errors)
+ [Lambda 함수 제한 시간 문제 해결](#lambda-timeout-issues)
+ [일관된 Lambda 제한 시간 문제 해결](#lambda-timeout-auth)
+ [`KeyError` 예외 문제 해결](#keyerror-logs)

## API Gateway 통합 오류 문제 해결
<a name="api-gateway-errors"></a>

**설명**

사용자는 Transfer Family 서버로 인증할 수 없으며 자격 증명 공급자를 테스트할 때 다음과 같은 오류가 표시됩니다.

```
{
    "Response": "",
    "StatusCode": 500,
    "Message": "Internal server error"
}
```

**원인**

API Gateway 통합 오류는 다음과 같은 이유로 발생할 수 있습니다.
+ 잘못된 API Gateway 구성
+ Lambda 함수 오류가 제대로 처리되지 않음
+ API Gateway와 Lambda 간의 권한 문제
+ Lambda 함수의 잘못된 응답

**솔루션**

API Gateway 통합 오류를 해결하려면:

1. 자세한 오류 정보는 Lambda 함수 로그를 확인하세요.
   + CloudWatch 콘솔에서 **로그 그룹** > **/aws/lambda/your-function-name**으로 이동합니다.
   + 근본 원인을 나타내는 오류 메시지 또는 스택 추적 찾기

1. Lambda 함수가 올바른 형식의 응답을 반환하는지 확인합니다.

   ```
   {
       "Role": "arn:aws:iam::123456789012:role/TransferUserRole",
       "HomeDirectory": "/mybucket/home/username"
   }
   ```

1. API Gateway에 대한 자세한 CloudWatch 로깅 활성화:
   + API Gateway 콘솔에서 API를 선택하고 **스테이지를** 선택합니다.
   + 스테이지를 선택하고 **로그/추적**에서 **CloudWatch Logs**를 활성화합니다.
   + 로그 수준을 **ERROR** 또는 **INFO**로 설정

1. API Gateway 엔드포인트를 직접 테스트합니다.

   ```
   curl -X POST https://your-api-id.execute-api.region.amazonaws.com/prod/servers/your-server-id/users/username/config \
       -H "Content-Type: application/json" \
       -d '{"Password": "password"}'
   ```

1. API Gateway와 Lambda 간의 권한을 확인합니다.
   + API Gateway에 Lambda 함수를 호출할 수 있는 권한이 있는지 확인합니다.
   + Lambda 함수의 실행 역할에 필요한 권한이 있는지 확인합니다.

## Lambda 함수 제한 시간 문제 해결
<a name="lambda-timeout-issues"></a>

**설명**

사용자가 사용자 지정 자격 증명 공급자를 사용하여 Transfer Family 서버로 인증하려고 하면 지연 시간이 길어지고 인증이 실패합니다. Lambda 로그에 제한 시간 오류가 표시됩니다.

**원인**

사용자 지정 자격 증명 공급자에 사용되는 Lambda 함수의 기본 제한 시간은 3초입니다. 인증 로직이이 제한 시간보다 오래 걸리는 경우(예: 외부 데이터베이스를 쿼리하거나 타사 ID 제공업체에 API를 호출하는 경우) 함수가 제한 시간을 초과하고 인증이 실패합니다.

**솔루션**

Lambda 제한 시간 문제를 해결하려면:

1. Lambda 함수 제한 시간을 늘립니다.
   + Lambda 콘솔에서 함수로 이동하여 **구성** 탭을 선택합니다.
   + **일반 구성**에서 **편집**을 클릭합니다.
   + 제한 시간 값 증가(인증 함수의 경우 최대 15초 권장)

1. Lambda 함수 코드를 최적화합니다.
   + 데이터베이스 쿼리에 연결 풀링 사용
   + 자주 액세스하는 데이터에 대한 캐싱 구현
   + 인증 중 외부 API 호출 최소화

1. Lambda 프로비저닝된 동시성을 사용하여 콜드 스타트를 제거하는 것이 좋습니다.

   ```
   aws lambda put-provisioned-concurrency-config \
       --function-name my-authentication-function \
       --qualifier prod \
       --provisioned-concurrent-executions 5
   ```

1. CloudWatch 지표를 사용하여 Lambda 성능 모니터링 및 지속 시간 임계값에 대한 경보 설정

## 일관된 Lambda 제한 시간 문제 해결
<a name="lambda-timeout-auth"></a>

**설명**

Lambda 함수를 인증에 사용할 때 사용자에게 일관된 제한 시간이 발생합니다.

**원인**

Lambda는 인증에 사용되는 해당 AWS 서비스(예: DynamoDB, Secrets Manager 또는 기타 자격 증명 공급자)에 연결할 수 없습니다.

**솔루션**

서브넷이 AWS 서비스에 도달할 수 있는지 확인합니다. 또는 인터넷 자격 증명 공급자(예: Okta)에 연결하는 경우 Lambda 함수의 서브넷이 NAT 게이트웨이를 통해 인터넷에 연결할 수 있는지 확인합니다.

## `KeyError` 예외 문제 해결
<a name="keyerror-logs"></a>

**설명**

Transfer Family 로그 항목에 'KeyError' 예외가 표시됩니다.

**원인**

가장 가능성이 높은 원인은 사용자 또는 `identity_provider` 레코드의 형식이 잘못되었거나 필수 필드가 누락되었기 때문입니다.

**솔루션**

로그 그룹에 `ERRORS` 있는 `/aws/transfer/your-server-id` 로그에서 단서를 검토합니다.