

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

# 고급 연결 시나리오
<a name="connectivity-scenarios"></a>

AWS SDK for SAP ABAP 는 AWS 엔드포인트 AWS 서비스 에 HTTPS 호출을 수행하여를 사용합니다. 일반적으로 AWS 엔드포인트는 인터넷을 통해 액세스할 수 있습니다. SAP 시스템은 인터넷에 접속하여 이러한 아웃바운드 연결을 설정할 수 있어야 합니다. SDK for SAP ABAP는 인터넷에서 SAP 시스템으로의 인바운드 연결을 필요로 하지 않습니다.

다음 시나리오는 아웃바운드 연결을 설정하는 다양한 방법을 제공합니다.

**Topics**
+ [프록시 서버를 통한 연결](#proxy-server)
+ [패킷 검사 방화벽을 통한 연결](#packet-firewall)
+ [게이트웨이 엔드포인트](#gateway-endpoints)
+ [사용자 지정 인터페이스 엔드포인트](#interface-endpoints)
+ [고급 라우팅](#advanced-routing)
+ [다중 리전 엔드포인트에 액세스](#multiple-regions)

## 프록시 서버를 통한 연결
<a name="proxy-server"></a>

프록시 서버를 통해 연결을 설정하려면 다음 단계를 수행합니다.

1. SDK에서 **`SICF`** 트랜잭션으로 이동합니다.

1. **실행**을 선택합니다.

1. 메뉴에서 **클라이언트** > **프록시 서버**를 선택합니다.

1. **프록시 설정**을 **활성**으로 설정합니다.

1. **다음 주소의 프록시 없음** 필드에 모든 예외를 세미콜론으로 구분하여 나열합니다.

1. **HTTP 프로토콜** 및 **HTTPS 프로토콜** 필드에 프록시 서버의 연결 세부 정보를 지정합니다.

SDK는 프록시 서버를 인식하지 않으므로 SAP 시스템의 프록시 서버 구성을 사용하기 위한 설정이 필요하지 않습니다.

**참고**  
[Amazon EC2 인스턴스 메타데이터 인증을](https://docs.aws.amazon.com/sdk-for-sapabap/latest/developer-guide/system-authentication.html#metadata-authentication) 사용하는 경우 SAP 시스템은 프록시 서버를 사용하여 `http://169.254.169.254`의 로컬 인스턴스 메타데이터에 액세스할 수 없습니다. *다음 주소의 프록시 없음* 필드에 `169.254.169.254`을(를) 포함해야 합니다.

## 패킷 검사 방화벽을 통한 연결
<a name="packet-firewall"></a>

아웃바운드 연결을 위한 패킷 검사 방화벽을 구성할 수 있습니다. 이러한 방화벽은 SSL 트래픽을 해독한 다음 엔드포인트로 전달하기 전에 다시 암호화합니다. 이 구성에서는 일반적으로 방화벽이 AWS 서비스을(를) 사용하는 SAP 시스템에 자체 인증서를 발급해야 합니다. `STRUST`에 방화벽의 CA 인증서를 설치해야 합니다. 자세한 내용은 [HTTPS 연결](https://docs.aws.amazon.com/sdk-for-sapabap/latest/developer-guide/prerequisites.html#https-connectivity)을 참조하세요.

## 게이트웨이 엔드포인트
<a name="gateway-endpoints"></a>

일부는 인터넷 없이 VPC에 고성능 액세스를 제공하기 위해 게이트웨이 엔드포인트를 AWS 서비스 제공합니다. 이러한 엔드포인트는 SDK for SAP ABAP에 투명하며 구성이 필요하지 않습니다.

자세한 내용은 [게이트웨이 엔드포인트](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html)를 참조하세요.

## 사용자 지정 인터페이스 엔드포인트
<a name="interface-endpoints"></a>

기본 엔드포인트 확인을 사용자 지정 엔드포인트로 재정의해야 하는 경우 인터페이스 엔드포인트를 사용하여 인터넷 없이 VPC에 고성능 액세스를 제공할 수 있습니다. 자세한 내용은 [인터페이스 엔드포인트 구성](https://docs.aws.amazon.com/vpc/latest/privatelink/interface-endpoints.html)을 참조하세요.

프라이빗 DNS를 사용하지 않는 경우 이러한 엔드포인트는 자체 DNS 주소를 가지므로 ABAP 프로그램은 일반적인 엔드포인트 확인 로직을 명시적으로 재정의해야 합니다. 자세한 내용은 AWS re:Post - [인터페이스 VPC 엔드포인트의 서비스 도메인 이름을 확인할 수 없는 이유는 무엇입니까?를](https://repost.aws/knowledge-center/vpc-interface-configure-dns) 참조하세요.

다음 예제에서는 AWS STS 및에 대한 인터페이스 엔드포인트가 생성됩니다 Amazon Translate. SAP 시스템은 프라이빗 DNS를 사용하지 않으며 사용자 지정 엔드포인트로 서비스를 호출합니다. `/AWS1/IMG`에 정의된 논리적 리소스는 `vpce-0123456789abcdef-hd52vxz.translate.us-west-2.vpce.amazonaws.com`와 같은 물리적 인터페이스 엔드포인트 주소를 나타냅니다. 이렇게 하면 코드에 DNS를 하드 코딩하지 않아도 됩니다.

다음 코드에서는 `/AWS1/IMG`의 논리적 리소스가 먼저 물리적 엔드포인트 이름으로 확인됩니다. 그런 다음 AWS 세션 클래스(를 사용하여 IAM 역할을 수임)의 팩토리 메서드 AWS STS 에 제공되고 API 클래스를 번역합니다.

```
" This example assumes we have defined our logical endpoints in /AWS1/IMG
" as logical resources so that we don't hardcode our endpoints in code.
" The endpoints may be different in Dev, QA and Prod environments.
DATA(lo_config) = /aws1/cl_rt_config=>create( 'DEMO' ).
DATA(lo_resolver) = /aws1/cl_rt_lresource_resolver=>create( lo_config ).

" logical resource STS_ENDPOINT should resolve to the interface endpoint
" for example vpce-0123456789-abcdefg.sts.us-west-2.vpce.amazonaws.com
DATA(lv_sts_endpoint) = lo_resolver->resolve_lresource( 'STS_ENDPOINT' ).

" logical resource XL8_ENDPOINT should resolve to the interface endpoint
" e.g. vpce-0123456789abcdefg-12345567.translate.us-west-2.vpce.amazonaws.com
DATA(lv_xl8_endpoint) = lo_resolver->resolve_lresource( 'XL8_ENDPOINT' ).

" the session itself uses the sts service to assume a role, so the
" session creation process requires a custom endpoint, specified here
DATA(lo_session) = /aws1/cl_rt_session_aws=>create(
  iv_profile_id = 'DEMO'
  iv_custom_sts_endpoint = |https://{ lv_sts_endpoint }|
).

" now we create an API object, and override the default endpoint with 
" the custom endpoint
DATA(lo_xl8)     = /aws1/cl_xl8_factory=>create(
  io_session = lo_session
  iv_custom_endpoint = |https://{ lv_xl8_endpoint }| " provide custom endpoint
).
" now calls to lo_xl8 go to custom endpoint...
```

예제에서 볼 수 있듯이`go_xl8`에 대한 모든 메서드 호출은 엔드포인트 `https://vpce-0123456789abcdefg-12345567.translate.us-west-2.vpce.amazonaws.com`로 이동합니다. 다음 섹션에 표시된 대로 코드 대신 IMG 구성에서 라우팅 사용자 지정 엔드포인트를 정의할 수도 있습니다.

## 고급 라우팅
<a name="advanced-routing"></a>

 이전 섹션에서는 SDK 모듈의 팩토리 메서드 `iv_custom_endpoint` 인수에 사용자 지정 엔드포인트를 지정하는 방법을 보여드렸습니다. SDK를 사용하는 ABAP 프로그램 수가 증가하면 관리하기 어려울 수 있습니다. SDK 프로파일에서에서 사용자 지정 엔드포인트 AWS 서비스 로의 매핑을 구성할 수 있습니다. 각 SID, 클라이언트 및 시나리오에 대해 서비스 TLA(3자 약어)를 엔드포인트 URL에 매핑할 수 있습니다.


|  TLA  |  사용자 지정 엔드포인트 URL  | 
| --- | --- | 
| BDR | https://vpce-23456789abcdef012-3c4d5e6f.bedrock-runtime.us-east-1.vpce.amazonaws.com | 
| LMD | https://vpce-123456789abcdef01-2b3c4d5e.lambda.us-east-1.vpce.amazonaws.com | 
| S3 | https://vpce-0123456789abcdef0-1a2b3c4d.s3.us-east-1.vpce.amazonaws.com | 

 이 구성을 사용하면 공장 메서드 호출`iv_custom_endpoint`에서를 지정할 필요가 없습니다. 사용자 지정 엔드포인트는 구성 테이블에서 자동으로 선택됩니다. 구성은 SDK 프로파일에 고유하므로 필요에 따라 서로 다른 라우팅으로 여러 프로파일을 생성할 수 있습니다. 다른 SDK 프로파일 구성과 마찬가지로 라우팅은 SID 및 클라이언트별로 다르므로 다른 시스템에 대해 별도의 라우팅을 정의할 수 있습니다.

## 다중 리전 엔드포인트에 액세스
<a name="multiple-regions"></a>

AWS 엔드포인트는 SDK 프로파일에 AWS 리전 정의된 기본값에서 자동으로 결정됩니다. 프로그래밍 방식으로 지역을 지정하여 기본 리전을 재정의할 수도 있습니다. 이는 팩토리 `CREATE()` 메서드에서 재정의하거나 나중에 SDK의 구성 객체로 재정의할 수 있습니다. 자세한 내용은 [프로그래밍 방식 구성](https://docs.aws.amazon.com/sdk-for-sapabap/latest/developer-guide/features.html#programmatic-configuration)을 참조하세요.

다음 예시에서는 팩토리 `CREATE()` 메서드를 사용하여 리전을 설정하고 `us-east-1` 및`us-west-2` 리전 모두에서 Amazon SQS 대기열을 나열합니다.

```
REPORT zdemo_sqs_queue_list.
parameters: profile type /AWS1/RT_PROFILE_ID OBLIGATORY.

START-OF-SELECTION.
DATA(go_session) = /aws1/cl_rt_session_aws=>create( profile ).
data(lt_region) = VALUE stringtab(
  ( |us-east-1| )
  ( |us-west-2| )
).

LOOP AT lt_region INTO DATA(lv_region).
  DATA(go_sqs)  = /aws1/cl_sqs_factory=>create(
    io_session = go_session
    iv_region = conv /AWS1/RT_REGION_ID( lv_region )
  ).
  WRITE: / lv_region COLOR COL_HEADING.
  LOOP AT go_sqs->listqueues( )->get_queueurls( ) INTO DATA(lo_url).
    WRITE: / lo_url->get_value( ).
  ENDLOOP.
ENDLOOP.
```