

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

# 웹 크롤러
<a name="kb-managed-ds-webcrawler"></a>

웹 크롤러는 관리형 지식 기반에서 사용하도록 지정한 URLs에 연결하고 크롤링합니다. 웹 크롤러는 크롤링 범위 및 제한에 따라 하위 링크에 따라 시드 URLs에서 시작하여 HTML 페이지를 통과합니다. 사이트맵 URLs 시작점으로 제공할 수도 있습니다. 웹 크롤러는 [RFC 9309](https://www.rfc-editor.org/rfc/rfc9309.html)에 따라 robots.txt를 준수합니다.

**중요**  
크롤링할 웹 사이트를 선택할 때 [Amazon 사용 정책](https://aws.amazon.com/aup/) 및 기타 모든 Amazon 약관을 준수해야 합니다. 웹 크롤러는 자체 웹 페이지 또는 크롤링 권한이 있는 웹 페이지를 인덱싱하는 데만 사용합니다.

**참고**  
웹 크롤러는 문서 수준 액세스 제어(ACLs 지원하지 않습니다. 인덱싱된 모든 콘텐츠는 지식 기반에 액세스할 수 있는 모든 사용자가 액세스할 수 있습니다. ACL 필터링이 필요한 경우 이를 지원하는 커넥터(예: Amazon S3, SharePoint 또는 OneDrive)를 사용합니다.

## 지원되는 기능
<a name="kb-managed-supported-features-webcrawler"></a>
+ 여러 URLs 및 사이트맵 URLs 크롤링
+ 구성 가능한 크롤링 깊이, 속도 제한 및 links-per-URL 제한
+ 크롤링 범위 제어: 동일한 호스트 및 경로, 호스트 전용 또는 호스트 및 하위 도메인
+ URL 패턴 필터(포함 및 제외 정규식)
+ 웹 페이지에서 연결된 첨부 파일 크롤링(PDFs, 문서 등)
+ 보호된 사이트에 대한 인증: 기본, 양식 기반 또는 SAML
+ 추가, 업데이트 및 삭제된 콘텐츠에 대한 증분 콘텐츠 동기화

## 인증 방법
<a name="kb-managed-webcrawler-auth-methods"></a>

웹 크롤러는 네 가지 인증 방법을 지원합니다. 대상 사이트가 사용자를 인증하는 방법과 일치하는 메서드를 선택합니다. 로그인이 없는 퍼블릭 사이트의 경우를 사용합니다`NO_AUTH`.


**웹 크롤러 인증 방법**  

| 방법 | 인증 방법 | 사용해야 하는 경우 | 
| --- | --- | --- | 
| 인증 없음(NO\_AUTH) | 크롤러는 자격 증명 없이 요청을 보냅니다. | 로그인이 필요하지 않은 퍼블릭 웹 사이트입니다. | 
| 기본 인증(BASIC\_AUTH) | 크롤러는 보안 암호의 사용자 이름과 암호가 포함된 HTTP Authorization: Basic 헤더를 전송합니다. | HTTP 기본 인증으로 보호되는 사이트(브라우저 스타일 사용자 이름 및 암호 대화 상자). | 
| 양식 인증(FORM) | 크롤러는 HTML 양식을 제출하여 로그인합니다. 양식 필드를 찾는 로그인 URL, 자격 증명 및 XPath 표현식을 제공합니다. | 로그인에 HTML 양식을 사용하는 사이트. | 
| SAML 인증(SAML) | 크롤러는 SAML 자격 증명 공급자의 로그인 양식을 통해 로그인합니다. 양식 필드를 찾는 IdP 로그인 URL, 자격 증명 및 XPath 표현식을 제공합니다. | SAML 기반 Single Sign-On을 사용하는 사이트입니다. | 

## 사전 조건
<a name="kb-managed-prereqs-webcrawler"></a>

**크롤링하려는 웹 사이트의 경우 다음을 확인합니다.**
+ 웹 사이트와 해당 콘텐츠를 크롤링할 수 있는 권한이 있어야 합니다.
+ 사이트에 `robots.txt` 대해 크롤링하려는 URLs 허용하지 않는지 확인합니다. 웹 크롤러는 `robots.txt` 파일을 찾을 수 없는 경우 기본적으로 허용되지 않습니다.
+ 사이트에 로그인이 필요한 경우 인증 방법(기본, 양식 또는 SAML)을 식별합니다. 양식 및 SAML의 경우 로그인 페이지에서 사용자 이름 필드, 암호 필드 및 제출 버튼의 XPath 표현식을 찾습니다. XPath를 찾으려면 브라우저에서 양식 요소를 마우스 오른쪽 버튼으로 클릭하고 **검사를** 선택한 다음 개발자 도구에서 XPath를 복사합니다.

** AWS 계정에서 다음을 확인합니다.**
+ 사이트에 인증이 필요한 경우 보안 인증 정보를 [AWS Secrets Manager 보안 암호](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)에 저장하고 Amazon 리소스 이름(ARN)을 기록해 둡니다. 정확한 키-값 페어는 단원을 참조하십시오[인증 자격 증명](#kb-managed-webcrawler-credentials).
+ 지식 기반에 대한 AWS Identity and Access Management (IAM) 역할/권한 정책에 데이터 소스에 연결하는 데 필요한 권한을 포함합니다. 필요한 권한에 대한 자세한 내용은 섹션을 참조하세요[데이터 소스에 액세스할 수 있는 권한](kb-permissions.md#kb-permissions-access-ds).

## 웹 크롤러 데이터 소스를 설정하는 방법
<a name="kb-managed-webcrawler-workflow"></a>

웹 크롤러 데이터 소스 설정에는 다음 단계가 포함됩니다.

1. **(사이트에 로그인이 필요한 경우) 자격 증명을 준비합니다.** 인증 방법의 자격 증명을 AWS Secrets Manager 보안 암호에 저장합니다. [인증 자격 증명](#kb-managed-webcrawler-credentials)을(를) 참조하세요.

1. **데이터 소스를 연결합니다.** AWS Management Console 또는 API를 사용하여 지식 기반에서 웹 크롤러 데이터 소스를 생성합니다. [데이터 소스 생성](#kb-managed-ds-webcrawler-create)을(를) 참조하세요.

## 데이터 소스 생성
<a name="kb-managed-ds-webcrawler-create"></a>

------
#### [ Console ]

**웹 크롤러를 관리형 지식 기반에 연결하려면**

1. **데이터 소스**에서 데이터 소스의 이름을 입력합니다.

1. 데이터 소스 드롭다운에서 **웹 크롤러**를 선택합니다.

1. **소스**에서 **소스 URLs**(최대 10개의 시작점 URLs) 또는 **소스 사이트맵**(최대 3개의 사이트맵 URLs)을 선택합니다.

1. URLs 추가 텍스트 영역에 행당 하나씩 ** URLs** 입력합니다.

1. **인증**에서 **인증 없음**, **기본 인증**, **양식 인증** 또는 **SAML 인증을** 선택합니다. **인증 없음** 이외의 방법의 경우 보안 AWS Secrets Manager 암호를 선택하거나 생성하여 자격 증명을 저장합니다.

1. (선택 사항) **동기화 범위를** 확장하여 크롤링 깊이(0\~10), URL당 최대 링크(1\~1000), 분당 크롤링된 최대 URLs(1\~300) 및 크롤링 범위: **기본**(시드 URL과 동일한 호스트 및 동일한 초기 URL 경로), **호스트 전용**(동일한 호스트, 모든 경로) 또는 **하위 도메인**(하위 도메인을 포함한 동일한 기본 도메인)을 설정합니다.

1. (선택 사항) **URL 필터 패턴을** 확장하여 특정 URLs을 포함하거나 제외하는 정규식을 추가합니다.

------
#### [ API ]

웹 크롤러 데이터 소스를 생성하려면 Agents for Amazon Bedrock 빌드 타임 엔드포인트를 사용하여 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 요청을 전송합니다. 다음 AWS Command Line Interface 예제에서는 인증 없이 퍼블릭 사이트를 크롤링하는 데이터 소스를 생성합니다. 각 필드에 대한 설명은 다음 커넥터 파라미터 참조를 참조하세요.

```
aws bedrock-agent create-data-source \
 --name "{{WebCrawler-connector}}" \
 --knowledge-base-id "{{your-knowledge-base-id}}" \
 --data-source-configuration file://webcrawler-managed-connector.json
```

`webcrawler-managed-connector.json` 파일에는 다음이 포함됩니다.

```
{
    "type": "MANAGED_KNOWLEDGE_BASE_CONNECTOR",
    "managedKnowledgeBaseConnectorConfiguration": {
        "connectorParameters": {
            "type": "WEB",
            "version": "1",
            "connectionConfiguration": {
                "seedUrls": [
                    "{{https://docs.example.com}}"
                ],
                "authType": "NO_AUTH"
            },
            "crawlConfiguration": {
                "crawlDepth": 3,
                "maxLinksPerUrl": 100,
                "maxCrawledUrlsPerMinute": 50,
                "syncScope": "SUB_DOMAINS",
                "crawlAttachments": true
            },
            "filterConfiguration": {
                "exclusionPatterns": [
                    "{{https://docs.example.com/private/.*}}"
                ]
            }
        }
    }
}
```

인증된 사이트의 경우를 `BASIC_AUTH`, `FORM`또는 `authType`로 설정하고를 `secretArn`에 `SAML`추가합니다`connectionConfiguration`.

관리형 지식 기반의 경우 `CreateDataSource`는 비동기식입니다. 작업이 완료되면 데이터 소스 상태가에서 `AVAILABLE` `CREATING`로 전환됩니다.

------

## 커넥터 파라미터
<a name="kb-managed-config-webcrawler"></a>

데이터 소스 구성은 다음 커넥터 파라미터를 사용합니다. 웹 크롤러를 사용하려면에서 커넥터 유형`WEB`으로를 지정합니다`connectorParameters`. 래핑되는 필드`connectorParameters`(예: `deletionProtectionConfiguration` 및 `mediaExtractionConfiguration`)는 섹션을 참조하세요[데이터 소스 연결](kb-managed-connect-ds.md).


**connectionConfiguration**  

| Field | 필수 | 설명 | 
| --- | --- | --- | 
| seedUrls | 조건부 | 크롤링을 시작할 시드 URLs. 최대 10개 를 제공하지 않는 한 필수입니다siteMapUrls. | 
| siteMapUrls | 조건부 | 사이트맵 URLs. 최대 3. 를 제공하지 않는 한 필수입니다seedUrls. | 
| authType | 예 | 인증 유형: NO\_AUTH, BASIC\_AUTHFORM, 또는 SAML. [인증 방법](#kb-managed-webcrawler-auth-methods)을(를) 참조하세요. | 
| secretArn | 조건부 | 자격 증명이 포함된 AWS Secrets Manager 보안 암호의 ARN입니다. 이이 authType 아닌 경우 필요합니다NO\_AUTH. | 


**crawlConfiguration(선택 사항)**  

| Field | 필수 | 설명 | 
| --- | --- | --- | 
| crawlDepth | 아니요 | 최대 크롤링 깊이입니다. 범위 0\~10.는 지정된 URLs만 0크롤링합니다. 값이 높을수록 사이트 심층 링크를 따릅니다. 기본값은 2입니다. | 
| maxLinksPerUrl | 아니요 | URL당 따라야 할 최대 링크 수입니다. 범위는 1\~1000입니다. 기본값은 100입니다. | 
| maxCrawledUrlsPerMinute | 아니요 | 분당 최대 URLs크롤링(속도 제한). 범위는 1\~300입니다. | 
| implicitWaitInSeconds | 아니요 | 크롤러가 페이지를 읽기 전에 페이지가 준비 상태에 도달한 후 초 단위의 대기 시간입니다. 기본 템플릿 뒤에 로드되는 동적 JavaScript 콘텐츠가 있는 페이지의 경우이 값을 늘립니다. | 
| syncScope | 아니요 | 따를 링크의 범위입니다. PATH\_SPECIFIC (시드 URL과 동일한 호스트 및 동일한 초기 URL 경로), DOMAINS\_ONLY (시드 URL과 동일한 호스트, 모든 경로) 또는 SUB\_DOMAINS (하위 도메인을 포함한 동일한 기본 도메인). 생략하면 크롤러는 시드 URL과 동일한 호스트 및 동일한 초기 URL 경로만 크롤링합니다. | 
| crawlAttachments | 아니요 | 웹 페이지에서 연결된 파일 및 첨부 파일(예: PDFs 및 기타 문서)을 크롤링할지 여부입니다. | 


**filterConfiguration(선택 사항)**  

| Field | 필수 | 설명 | 
| --- | --- | --- | 
| inclusionPatterns | 아니요 | 정규식 목록입니다. 하나 이상의 패턴과 일치하는 URLs만 크롤링되고 인덱싱됩니다. | 
| exclusionPatterns | 아니요 | 정규식 목록입니다. 패턴과 일치하는 URLs은 크롤링되거나 인덱싱되지 않습니다. | 
| maxFileSizeInMegaBytes | 아니요 | 크롤러가 수집하는 단일 파일의 최대 크기입니다. 를 숫자 문자열로 입력합니다(예: "500"). 기본값은 "500"입니다. | 

## 인증 자격 증명
<a name="kb-managed-webcrawler-credentials"></a>

웹 사이트에 인증이 AWS Secrets Manager 필요한 경우 보안 인증 정보를 보안 암호에 저장합니다. 보안 암호 형식은 선택한 인증 유형에 따라 다릅니다.

**기본 인증(`BASIC_AUTH`)**

```
{
    "userName": "{{your-username}}",
    "password": "{{your-password}}",
    "authentication": "BASIC_AUTH"
}
```

**양식 인증(`FORM`)**

양식 기반 인증의 경우 로그인 페이지에서 사용자 이름 필드, 암호 필드 및 제출 버튼을 식별하는 XPath 표현식을 제공합니다.

```
{
    "authentication": "FORM",
    "loginPageUrl": "{{https://example.com/login}}",
    "userName": "{{your-username}}",
    "password": "{{your-password}}",
    "userNameFieldXpath": "{{//input[@name='username']}}",
    "passwordFieldXpath": "{{//input[@name='password']}}",
    "userNameButtonXpath": "{{//button[@type='submit']}}",
    "passwordButtonXpath": "{{//button[@type='submit']}}"
}
```

**SAML 인증(`SAML`)**

SAML 인증의 경우 양식 필드에 SAML 자격 증명 공급자의 로그인 페이지 URL 및 XPath 표현식을 제공합니다.

```
{
    "authentication": "SAML",
    "loginPageUrl": "{{https://your-idp.example.com/login}}",
    "userName": "{{your-username}}",
    "password": "{{your-password}}",
    "userNameFieldXpath": "{{//input[@name='username']}}",
    "passwordFieldXpath": "{{//input[@name='password']}}",
    "userNameButtonXpath": "{{//button[@type='submit']}}",
    "passwordButtonXpath": "{{//button[@type='submit']}}"
}
```

**참고**  
브라우저에서 XPath를 찾으려면 로그인 페이지에서 양식 요소를 마우스 오른쪽 버튼으로 클릭하고 **검사를** 선택합니다. 개발자 도구에서 강조 표시된 HTML을 마우스 오른쪽 버튼으로 클릭하고 **복사**를 선택한 다음 ** XPath 복사**를 선택합니다.

## 문제 해결
<a name="kb-managed-ds-webcrawler-troubleshooting"></a>


**일반적인 웹 크롤러 문제, 원인 및 수정 사항**  

| 증상 | 가능한 원인 | 수정 | 
| --- | --- | --- | 
| 동기화는 성공적으로 완료되지만 시드 URL만 인덱싱됩니다. | 사이트 탐색 링크는 표준 <a href="..."> 요소 대신 JavaScript 이벤트 핸들러(클릭, 스크롤, 동적 메뉴)를 통해 연결됩니다. 크롤러는 JavaScript를 렌더링하지만 사용자 상호 작용을 시뮬레이션하지 않으므로 해당 링크를 검색할 수 없습니다. | 크롤링하려는 페이지에 대한 추가 URLs을 제공하거나 크롤링할 모든 URL을 나열하는 사이트맵 URL을 제공합니다. 콘텐츠를 파일로 내보낼 수 있는 경우 대신 Amazon S3 커넥터를 사용하는 것이 좋습니다. | 
| 동기화는 콘텐츠를 반환하지 않거나 예상보다 적은 페이지를 반환합니다. | 사이트의 robots.txt 파일은 크롤링하려는 URLs을 허용하지 않거나 페이지에 noindex메타 태그가 있습니다. | 크롤링하려는 경로를 허용하도록 호스트robots.txt를 업데이트하거나 인덱싱하려는 페이지에서 noindex메타 태그를 제거합니다. 메타 태그를 읽으려면 크롤러가 페이지에 액세스해야 하므로 메타 태그 감지도 원하는 robots.txt 경우에서 페이지를 차단하지 마십시오. | 
| 인증 실패(HTTP 401 또는 403, 로그인 리디렉션 루프 또는 세션 제한 시간). | 자격 증명이 잘못되었거나 만료되었거나 XPath 표현식이 로그인 페이지 요소와 일치하지 않습니다. | 보안 암호의 자격 증명을 확인합니다. FORM 또는 SAML 인증의 경우 브라우저의 개발자 도구에서 각 XPath를 검증하고를 확인합니다loginPageUrl. | 
| 속도 제한(HTTP 429) 또는 불완전한 콘텐츠와 함께 동기화가 실패합니다. | 크롤러가 사이트에서 허용하는 것보다 빠르게 페이지를 가져오고 있습니다. | 페이지가 준비된 후 로드되는 동적 콘텐츠가 있는 사이트의 implicitWaitInSeconds 경우를 낮추maxCrawledUrlsPerMinute거나를 늘립니다. | 
| 페이지가 예상보다 크기 때문에 누락되었습니다. | 페이지 또는 첨부 파일이를 초과합니다maxFileSizeInMegaBytes. | 를 늘리maxFileSizeInMegaBytes거나 제한보다 큰 파일은 수집되지 않도록 허용합니다. | 