powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / AWS SQS из PL/SQL
7 сообщений из 7, страница 1 из 1
AWS SQS из PL/SQL
    #40064324
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь достучаться до AWS SQS из UTL_HTTP. Все работает прекрасно через orapki wallet c сертификатом. Но AWS SQS поверх сертификата имеет еще и access key с secret key. Хотелось бы их тоже воткнуть в wallet и использовать

Код: plsql
1.
2.
3.
4.
5.
    UTL_HTTP.SET_AUTHENTICATION_FROM_WALLET(
                                            r      => v_req,
                                            alias  => 'aws_sqs',
                                            scheme => 'AQS SQS' 
                                           );



Однако orapki wallet не поддерживает credentials (типа mkstore -wrl wallet_location -createCredential alias 'access_key' 'secret_key'). Создал mkstore wallet но mkstore не поддерживает сертификаты - в общем похоже на catch 22 ибо UTL_HTTP с двумя wallet работать не умеет. Кто-нибудь сталкивался? Хотелось-бы через wallet а не хранить 'access_key', 'secret_key' в encrypted/RLS/VPD таблице.

SY.
...
Рейтинг: 0 / 0
AWS SQS из PL/SQL
    #40064479
Фотография SeaGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY,

SYОднако orapki wallet не поддерживает credentials (типа mkstore -wrl wallet_location -createCredential alias 'access_key' 'secret_key').

Это заблуждение.
Создается orapki. Поверх делается mkstore.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
[oracle@rac1 wallet]$ orapki wallet display -wallet /u01/app/oracle/wallet
Oracle PKI Tool : Version 11.2.0.4.0 - Production
Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.

Requested Certificates:
User Certificates:
Oracle Secret Store entries:
oracle.security.client.connect_string1
oracle.security.client.password1
oracle.security.client.username1
Trusted Certificates:
Subject:        OU=Class 3 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
Subject:        CN=GTE CyberTrust Global Root,OU=GTE CyberTrust Solutions\, Inc.,O=GTE Corporation,C=US
Subject:        CN=DigiCert Baltimore CA-2 G2,OU=www.digicert.com,O=DigiCert Inc,C=US
Subject:        OU=Class 2 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
Subject:        OU=Class 1 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
Subject:        CN=s3.amazonaws.com,O=Amazon.com\, Inc.,L=Seattle,ST=Washington,C=US
Subject:        OU=Secure Server Certification Authority,O=RSA Data Security\, Inc.,C=US
[oracle@rac1 wallet]$ mkstore -wrl /u01/app/oracle/wallet -listCredential
Oracle Secret Store Tool : Version 11.2.0.4.0 - Production
Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.

Enter wallet password:
List credential (index: connect_string username)
1: aws_s3 A<redacted>


В примере ниже вызов для S3:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
SQL> declare
  2    req      utl_http.req;
  3    resp     utl_http.resp;
  4    value varchar2(1024);
  5    url constant varchar2(128) := 'https://redacted.s3.amazonaws.com/sales_2020.csv';
  6  begin
  7    -- create a request context with its wallet and cookie table
  8    utl_http.set_wallet('file:/u01/app/oracle/wallet');
  9    req := utl_http.begin_request(url);
 10    utl_http.set_header(req, 'x-amz-date', to_char(sysdate, 'yyyymmdd"T"hh24miss"Z"'));
 11    utl_http.set_authentication_from_wallet(req, 'aws_s3', 'aws');
 12    resp := utl_http.get_response(req);
 13    loop
 14      utl_http.read_line(resp, value, true);
 15      dbms_output.put_line(value);
 16    end loop;
 17    utl_http.end_response(resp);
 18  exception
 19    when utl_http.end_of_body then
 20      utl_http.end_response(resp);
 21  end;
 22  /
2020-01-01,1,10,100
2020-02-01,2,5,200
2020-03-01,2,10,400

PL/SQL procedure successfully completed.



SY
Код: plsql
1.
2.
3.
4.
5.
    UTL_HTTP.SET_AUTHENTICATION_FROM_WALLET(
                                            r      => v_req,
                                            alias  => 'aws_sqs',
                                            scheme => 'AQS SQS' 
                                           );


Такой схемы нет.
...
Рейтинг: 0 / 0
AWS SQS из PL/SQL
    #40064487
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeaGate

Это заблуждение.
Создается orapki. Поверх делается mkstore.


Спасибо. Делал наоборот.

SY.
...
Рейтинг: 0 / 0
AWS SQS из PL/SQL
    #40064506
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeaGateТакой схемы нет.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production

SQL> DECLARE
  2      v_req UTL_HTTP.REQ;
  3  BEGIN
  4      UTL_HTTP.SET_WALLET(
  5                          path => 'file:/home/oracle/workarea/recon/aws_sqs'
  6                         );
  7      v_req := UTL_HTTP.BEGIN_REQUEST(
  8                                      url => 'https://vpce-0cb3b03a2d4204642-ojr760to.sqs.us-east-1.vpce.amazonaws.com/019725351547/APP-4714-dev-integration-svcs-NADBPolicyEventQueue-NJUMUX7T7DFJ'
  9                                     );
 10      UTL_HTTP.SET_HEADER(
 11                          r     => v_req,
 12                          name  => 'x-amz-date',
 13                          value => TO_CHAR(SYSDATE,'yyyymmdd"T"hh24miss"Z"')
 14                         );
 15      UTL_HTTP.SET_AUTHENTICATION_FROM_WALLET(
 16                                              r      => v_req,
 17                                              alias  => 'aws_sqs',
 18                                              scheme => 'aws'
 19                                             );
 20     EXCEPTION
 21       WHEN OTHERS
 22         THEN
 23           UTL_HTTP.END_REQUEST(
 24                                r => v_req
 25                               );
 26           RAISE;
 27  END;
 28  /
DECLARE
*
ERROR at line 1:
ORA-29273: HTTP request failed
ORA-06512: at line 26
ORA-29261: bad argument
ORA-06512: at "SYS.UTL_HTTP", line 450
ORA-06512: at "SYS.UTL_HTTP", line 1191
ORA-06512: at line 15


SQL>



Меняю на basic - UTL_HTTP.SET_AUTHENTICATION_FROM_WALLET работает.

SY.
...
Рейтинг: 0 / 0
AWS SQS из PL/SQL
    #40064509
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже на баг в 18C. 19C aws хавает. Буду рыть дальше.

SY.
...
Рейтинг: 0 / 0
AWS SQS из PL/SQL
    #40064908
Фотография SeaGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY Похоже на баг в 18C. 19C aws хавает. Буду рыть дальше.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
SQL> declare
  2    req utl_http.req;
  3    resp utl_http.resp;
  4    value varchar2(32767);
  5    url varchar2(2000) := 'https://vpce-010f631ef8f1e24e7-8br55nv1.sqs.us-east-1.vpce.amazonaws.com/1283<redacted>/TestQueue/?Action=SendMessage&MessageBody=example';
  6  begin
  7    utl_http.set_wallet('file:/u01/app/oracle/wallet_sqs');
  8    req := utl_http.begin_request(url);
  9    utl_http.set_header(req, 'x-amz-date', TO_CHAR(sysdate,'yyyymmdd"T"hh24miss"Z"'));
 10    utl_http.set_property(req, 'aws-region', 'us-east-1');
 11    utl_http.set_property(req, 'aws-service', 'sqs');
 12    utl_http.set_authentication_from_wallet(req, 'aws_sqs', 'AWS4-HMAC-SHA256');
 13    resp := utl_http.get_response(req);
 14    loop
 15      utl_http.read_line(resp, value, true);
 16      dbms_output.put_line(value);
 17    end loop;
 18  exception
 19    when utl_http.end_of_body then
 20      utl_http.end_request(req);
 21      utl_http.end_response(resp);
 22    when others
 23    then
 24      utl_http.end_request(req);
 25      raise;
 26  end;
 27  /
<?xml version="1.0"?><SendMessageResponse
xmlns="http://queue.amazonaws.com/doc/2012-11-05/"><SendMessageResult><MessageId>15814c46-f9c2-43d9-8fcd-b4a450283612</M
essageId><MD5OfMessageBody>1a79a4d60de6718e8e5b326e338ae533</MD5OfMessageBody></SendMessageResult><ResponseMetadata><Req
uestId>01c695d8-9128-58d9-afb3-cd233f0b7340</RequestId></ResponseMetadata></SendMessageResponse>

PL/SQL procedure successfully completed.

SQL> select banner_full from v$version;

BANNER_FULL
------------------------------------------------------------------------------------------------------------------------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.11.0.0.0
...
Рейтинг: 0 / 0
AWS SQS из PL/SQL
    #40064909
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SeaGate
Код: plsql
1.
Version 19.11.0.0.0

какие вы шустрые... только вчера ж вышло :)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / AWS SQS из PL/SQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]