SDK da AWS para SAP ABAP features - 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á.

SDK da AWS para SAP ABAP features

SDK da AWS para SAP ABAP fornece os seguintes recursos.

Configuração programática

Use a transação /n/AWS1/IMG IMG para AWS SDK para SAP ABAP e o aplicativo Custom Business Configuration para AWS SDK for SAP ABAP - edição BTP para configuração programática.

Para iniciar a configuração programática, comece recuperando um objeto de configuração com o comando get_config( ).

data(lo_config) = lo_s3->get_config( ).

Cada objeto de configuração implementa a interface /AWS1/IF_RT_CONFIG que inclui GETters e SETters correspondentes ao IMG. Por exemplo, a região padrão pode ser substituída. No exemplo de comando a seguir:

lo_s3->get_config( )->/aws1/if_rt_config~set_region( 'us-east-1' ).

Alguns objetos de configuração não têm representação IMG e só podem ser definidos programaticamente, como o máximo de tentativas. No exemplo de comando a seguir:

lo_s3->get_config( )->/aws1/if_rt_config~set_max_attempts( 10 ).

O objeto de configuração do também Serviços da AWS pode incluir métodos específicos de serviço que não estão representados em/aws1/if_rt_config. Por exemplo, o Amazon S3 pode endereçar um bucket chamado foobucket usando um endpoint virtual foobucket.s3.region.amazonaws.com virtual ou um estilo de caminho s3.region.amazonaws.com/foobucket. Você pode impor o uso do estilo de caminho com o comando de exemplo a seguir.

lo_s3->get_config( )->set_forcepathstyle( abap_true ).

Para obter mais informações sobre configurações de serviço, consulte SDK da AWS para SAP ABAP — Guia de referência da API.

Waiters

Ao trabalhar com o modo assíncrono AWS APIs, você precisa esperar que um determinado recurso fique disponível antes de realizar outras ações. Por exemplo, a CREATETABLE() API do Amazon DynamoDB responde imediatamente com o status CREATING da tabela. Você pode iniciar operações de leitura ou gravação somente depois que o status da tabela for alterado para ACTIVE. Os garçons permitem que você confirme se AWS os recursos estão em um determinado estado antes de realizar ações neles.

Os garçons usam operações de serviço para pesquisar o status dos AWS recursos até que o recurso atinja o estado pretendido ou até que seja determinado que o recurso não atinge o estado desejado. Escrever o código para pesquisar recursos da AWS continuamente pode ser demorado e propenso a erros. Os waiters ajudam a simplificar essa complexidade, assumindo a responsabilidade de realizar pesquisas em seu nome.

Veja o exemplo a seguir do Amazon S3 usando o waiter.

DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_s3) = /aws1/cl_s3_factory=>create( lo_session ). " Create a bucket - initiates the process of creating an S3 bucket and might return before the bucket exists lo_s3→createbucket( iv_bucket = |amzn-s3-demo-bucket| ). " Wait until the newly created bucket becomes available lo_s3->get_waiter( )->bucketexists( iv_max_wait_time = 200 iv_bucket = |amzn-s3-demo-bucket| ).
  • Neste exemplo, o cliente Amazon S3 é usado para criar um bucket. O comando get_waiter() é implementado para especificar quando o bucketexists.

  • Você deve especificar o parâmetro iv_max_wait_time para cada waiter. Representa a quantidade total de tempo que um waiter deve esperar antes de terminar. No exemplo anterior, um waiter pode correr por 200 segundos.

  • Talvez seja necessário fornecer entradas adicionais para os parâmetros necessários. No exemplo anterior, o nome do bucket do Amazon S3 é obrigatório para o parâmetro iv_bucket.

  • A exceção /AWS1/CX_RT_WAITER_FAILURE indica que o waiter excedeu o tempo máximo especificado no parâmetro iv_max_wait_time.

  • A exceção /AWS1/CX_RT_WAITER_TIMEOUT indica que o waiter parou por não atingir o estado desejado.

Paginadores

Algumas AWS service (Serviço da AWS) operações oferecem respostas paginadas. Elas são paginadas para retornar uma quantidade fixa de dados com cada resposta. Você precisa fazer solicitações subsequentes com um token ou marcador para recuperar todo o conjunto de resultados. Por exemplo, a operação ListObjectsV2 do Amazon S3 retorna só até 1.000 objetos por vez. Você deve fazer solicitações subsequentes com o token apropriado para obter a próxima página de resultados.

Paginação é o processo de enviar solicitações sucessivas para continuar de onde uma solicitação anterior parou. Paginadores são iteradores de resultados fornecidos pelo SDK para SAP ABAP. Você pode usar paginado APIs com facilidade e sem entender o mecanismo subjacente da API usando tokens de paginação.

Trabalhando com paginadores

Você pode criar paginadores com o método get_paginator() que retorna um objeto paginador. O objeto paginador chama a operação que está sendo paginada. O objeto paginador aceita os parâmetros obrigatórios a serem fornecidos à API subjacente. Esse processo retorna um objeto iterador que pode ser usado para iterar sobre resultados paginados, usando os métodos has_next() e get_next().

  • has_next() retorna um valor booleano indicando se há mais respostas ou páginas disponíveis para a operação chamada.

  • get_next() retorna a resposta da operação.

O exemplo a seguir lista todos os objetos em um bucket do S3 recuperados usando o paginador.

DATA(lo_session) = /aws1/cl_rt_session_aws=>create( 'DEMO' ). DATA(lo_s3) = /aws1/cl_s3_factory=>create( lo_session ). TRY. DATA(lo_paginator) = lo_s3->get_paginator( ). DATA(lo_iterator) = lo_paginator->listobjectsv2( iv_bucket = 'example_bucket' ). WHILE lo_iterator->has_next( ). DATA(lo_output) = lo_iterator->get_next( ). LOOP AT lo_output->get_contents( ) INTO DATA(lo_object). WRITE: / lo_object->get_key( ), lo_object->get_size( ). ENDLOOP. ENDWHILE. CATCH /aws1/cx_rt_generic INTO DATA(lo_ex). MESSAGE lo_ex->if_message~get_text( ) TYPE 'I'. ENDTRY.

Comportamento de repetição

O SDK para SAP ABAP permite que você configure o número máximo de novas tentativas de solicitações de Serviços da AWS que falham devido a erros transitórios ou de controle de utilização. O número de novas tentativas permitidas no nível do cliente de serviço, ou seja, o número de vezes que o SDK repete a operação antes de falhar e gerar uma exceção, é especificado pelo atributo AV_MAX_ATTEMPTS no objeto de configuração do serviço. Quando um objeto de cliente de serviço é criado, o SDK configura o atributo AV_MAX_ATTEMPTS com um valor padrão de 3. O objeto de configuração do serviço pode ser usado para definir programaticamente o número máximo de novas tentativas para um valor desejado. Consulte mais detalhes no exemplo a seguir.

" Retrieve configuration object using Amazon S3 service’s get_config( ) method DATA(lo_config) = lo_s3->get_config( ). " Set the maximum number of retries to 5 lo_config->/aws1/if_rt_config~set_max_attempts( 5 ). " Get the value of the maximum retry attempt. DATA(lv_max_retry_attempts) = lo_config->/aws1/if_rt_config~get_max_attempts( ).
nota

Embora o objeto de configuração do ABAP SDK permita que o modo de nova tentativa seja definido com o método /AWS1/IF_RT_CONFIG~SET_RETRY_MODE(), o SDK só permite o modo de nova tentativa standard. Para obter mais informações, consulte o comportamento de repetição AWS SDKs e o Guia de referência de ferramentas.

Prescritores

Você pode usar presigned URLs para conceder acesso por tempo limitado a alguns. Serviços da AWS Um URL pré-assinado pode ser inserido em um navegador ou usado por um programa para realizar a operação do serviço. É possível usar o pre-signed URL várias vezes, até a data e a hora de expiração. Para obter mais informações, consulte Trabalhar com URLs SDK pré-assinado para clientes SAP ABAP para serviços que oferecem suporte a presignatários terá um método especial chamado criar um presignatário GET_PRESIGNER() para esse serviço. Em seguida, chame um método do presigner, que corresponde aos métodos do cliente da API, exceto que eles retornam uma URL pré-assinada em vez de realmente realizar a operação.

" Retrieve a presigner for Amazon S3 DATA(lo_presigner) = lo_s3->get_presigner( iv_expires_sec = 600 ). " the presigner getobject() method has the same signature as " lo_s3->getobject(), but it doesn't actually make the call. " to the service. It just prepares a presigned URL for a future call DATA(lo_presigned_req) = lo_presigner->getobject( iv_bucket = iv_bucket_name iv_key = iv_key ). " You can provide this URL to a web page, user, email etc so they " can retrieve the file. The URL will expire in 10 minutes. ov_url = lo_presigned_req->get_url( ).