View a markdown version of this page

Cenários avançados de conectividade - AWS SDK para SAP ABAP

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Cenários avançados de conectividade

AWS SDK para SAP ABAP consome Serviços da AWS fazendo chamadas HTTPS para AWS endpoints. Em geral, os endpoints da AWS são acessados pela Internet. Um sistema SAP deve ser capaz de acessar a Internet para estabelecer essas conexões de saída. O SDK para SAP ABAP nunca requer uma conexão de entrada da Internet para o sistema SAP.

Os cenários a seguir oferecem maneiras diferentes de estabelecer a conexão de saída.

Conexão por meio de um servidor proxy

Para estabelecer uma conexão por meio de um servidor proxy, use as etapas a seguir.

  1. No SDK, acesse Transação SICF.

  2. Clique em Executar.

  3. No menu, escolha Cliente > Servidor proxy.

  4. Defina a Configuração de proxy como Ativa.

  5. No campo Sem proxy para os seguintes endereços, liste todas as exceções separadas por ponto e vírgula.

  6. Nos campos Protocolo HTTP e Protocolo HTTPs, especifique os detalhes da conexão do seu servidor proxy.

O SDK não conhece o servidor proxy e não exige nenhuma configuração para usar a configuração do servidor proxy do sistema SAP.

nota

Se você usa a autenticação de metadados de instância do Amazon EC2, o sistema SAP não pode usar o servidor proxy para acessar os metadados da instância local em http://169.254.169.254. Você deve incluir 169.254.169.254 no campo Sem proxy para os seguintes endereços.

nota

Você pode substituir o comportamento do servidor proxy por serviço na seção Roteamento Avançado do. /AWS1/IMG Para obter mais informações, consulte Per-service substituição do servidor proxy.

Conexão por meio de um pacote de inspeção do firewall

Você pode configurar um pacote de inspeção do firewall para conexão de saída. Esses firewalls descriptografam o tráfego SSL e, em seguida, o criptografam novamente antes de passá-lo para o endpoint. Essa configuração geralmente exige que o firewall emita seus próprios certificados para o sistema SAP que está consumindo um AWS service (Serviço da AWS). Você deve instalar o certificado CA do seu firewall em STRUST. Para obter mais informações, consulte Conectividade HTTPS.

Endpoints de gateway

Alguns Serviços da AWS oferecem endpoints de gateway para fornecer a uma VPC acesso de alto desempenho sem internet. Esses endpoints são transparentes para o SDK para SAP ABAP e não exigem nenhuma configuração.

Para obter mais informações, consulte Endpoints de gateway.

Endpoints de interface personalizada

Se precisar substituir a resolução padrão do endpoint por um endpoint personalizado, use um endpoint de interface para fornecer à sua VPC acesso de alto desempenho sem Internet. Para obter mais informações, consulte Configurar um endpoint de interface.

Quando não estão usando DNS privado, esses endpoints têm seus próprios endereços DNS, e um programa ABAP deve substituir explicitamente a lógica usual de resolução de endpoints. Para obter mais informações, consulte AWS re:Post — Por que não consigo resolver nomes de domínio de serviço para um endpoint VPC de interface?

No exemplo a seguir, um endpoint de interface é criado para AWS STS e. Amazon Translate O sistema SAP não está usando DNS privado e chama os serviços com um endpoint personalizado. Os recursos lógicos definidos em /AWS1/IMG representam os endereços dos endpoints da interface física, como vpce-0123456789abcdef-hd52vxz.translate.us-west-2.vpce.amazonaws.com. Isso evita a codificação rígida do DNS no código.

No código a seguir, os recursos lógicos no /AWS1/IMG são primeiro resolvidos em nomes de endpoints físicos. Em seguida, eles são fornecidos aos métodos de fábrica da classe de AWS sessão (que usa AWS STS para assumir uma função do IAM) e da classe de API de tradução.

" 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...

Conforme mostrado no exemplo, qualquer chamada de método no go_xl8 vai para o endpoint https://vpce-0123456789abcdefg-12345567.translate.us-west-2.vpce.amazonaws.com. Também é possível definir o endpoint personalizado de roteamento na configuração IMG em vez de no código, conforme mostrado na próxima seção.

Roteamento avançado

Na seção anterior, mostramos como um endpoint personalizado pode ser especificado no iv_custom_endpoint argumento dos métodos de fábrica para os módulos do SDK. À medida que o número de programas ABAP usando o SDK aumenta, isso pode se tornar difícil de gerenciar. É possível configurar um mapeamento de um AWS service (Serviço da AWS) para um endpoint personalizado no perfil do SDK. Para cada SID, cliente e cenário, a abreviação de três letras do serviço (TLA) pode ser mapeada para uma URL de endpoint:

TLA URL de endpoint personalizado
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

Com essa configuração, você não precisa especificar iv_custom_endpoint nas chamadas do método de fábrica. O endpoint personalizado é selecionado automaticamente na tabela de configuração. A configuração é específica para o perfil do SDK para que você possa criar vários perfis com roteamento diferente para atender às suas necessidades. Assim como em outras configurações do SDK Profile, o roteamento é específico do SID e do cliente, portanto, um roteamento separado pode ser definido para sistemas diferentes.

Per-service substituição do servidor proxy

Por padrão, o SDK usa as configurações do servidor proxy definidas em Transação SICF (consulteConexão por meio de um servidor proxy). As configurações de proxy em SICF se aplicam globalmente a todas as conexões HTTP de saída do sistema SAP. Em alguns ambientes, você pode precisar de um controle mais preciso sobre quais Serviços da AWS usam o servidor proxy e quais se conectam diretamente.

Na seção Roteamento Avançado de/AWS1/IMG, você pode definir uma configuração Usar Servidor Proxy para cada serviço. Essa configuração controla se o SDK encaminha as solicitações desse serviço por meio do servidor proxy definido emSICF, independentemente das configurações globais de ativação ou filtro do proxy.

Os seguintes valores estão disponíveis:

  • Padrão — Use qualquer comportamento de proxy configurado emSICF. Se o proxy estiver ativo e o endpoint não for excluído pelo filtro, o proxy será usado. Esse é o comportamento padrão.

  • Sempre — Sempre encaminhe as solicitações desse serviço por meio do servidor proxy definido emSICF, independentemente das configurações globais de ativação ou filtro.

  • Nunca — Nunca encaminhe solicitações desse serviço por meio do servidor proxy, independentemente das configurações globais de ativação ou filtro. Use isso quando um endpoint de serviço puder ser acessado diretamente sem um proxy, por exemplo, ao usar um endpoint VPC.

Por exemplo, você pode configurar o Amazon S3 e nunca AWS STS usar o proxy (porque eles são acessados por meio de endpoints de gateway VPC), enquanto o Amazon SNS sempre usa o proxy porque ele só pode ser acessado pela Internet.

TLA Use o servidor proxy
EC2 Padrão
S3 Nunca
SNS Sempre
STS Nunca

Essa configuração é definida por perfil, SID, cliente e cenário do SDK. Você pode criar vários perfis com roteamento de proxy diferente para se adequar a diferentes ambientes ou casos de uso.

nota

O host e a porta do servidor proxy são sempre definidos na guia Protocolo HTTPS das configurações de proxy em TransaçãoSICF. A substituição por serviço controla apenas se o proxy é usado, não qual servidor proxy é usado.

Acesso de endpoints em várias regiões

AWS O endpoint é determinado automaticamente a partir do padrão Região da AWS definido no perfil do SDK. Você também pode especificar uma região programaticamente, substituindo a região padrão. Isso pode ser substituído no método CREATE() de fábrica ou posteriormente com o objeto de configuração do SDK. Para obter mais informações, consulte Configuração programática.

No exemplo a seguir, o método de fábrica CREATE() é usado para definir a região e listar as filas do Amazon SQS nas regiões us-east-1 e us-west-2.

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.