declare
    C_AWS_ID   constant varchar2(40) := 'アクセスキー';
    C_AWS_KEY  constant varchar2(40) := 'シークレットアクセスキー';
    C_AGENT_ID constant varchar2(10) := 'Agent ID';
    /* Agentへの問い合わせ */
    l_session_id varchar2(32);
    l_request_json json_object_t;
    l_request clob;
    l_url varchar2(4000);
    l_response clob;
    e_api_call_failed exception;
begin
    l_session_id := lower(sys_guid());
    l_request_json := json_object_t();
    l_request_json.put('inputText', 'こんにちは!');
    l_request_json.put('endSession', false);
    l_request_json.put('enableTrace', false);
    l_request := l_request_json.to_clob();
    dbms_output.put_line(l_request);
    /* set request header to call bedrock agent */
    apex_web_service.clear_request_headers;
    apex_web_service.set_request_headers('Content-Type', 'application/json', p_reset => false);
    l_url := aws4_rest_pkg.set_authorization_headers(
        p_endpoint => 'bedrock-agent-runtime'
        ,p_http_method => 'POST'
        ,p_uri => '/agents/' || C_AGENT_ID || '/agentAliases/TSTALIASID/sessions/' || l_session_id || '/text'
        ,p_body => l_request
        ,p_aws_id => C_AWS_ID
        ,p_aws_key => C_AWS_KEY
    );
    -- dbms_output.put_line(l_url);
    l_response := apex_web_service.make_rest_request(
        p_url => l_url
        ,p_http_method => 'POST'
        ,p_body => l_request
    );
    if apex_web_service.g_status_code <> 200 then
        raise e_api_call_failed;
    end if;
    dbms_output.put_line(substr(l_response,1,4000));
end;