New post

Find

Digest
· Aug 19, 2024

InterSystems Developers Publications, Week August 12 - 18, 2024, Digest

Articles
Announcements
Questions
#InterSystems IRIS
#Health Connect
#Ensemble
#InterSystems IRIS for Health
#Caché
August 12 - 18, 2024Week at a GlanceInterSystems Developer Community
Article
· Aug 19, 2024 4m read

Accessing Azure Blob Storage

Accessing an Azure cloud storage to upload/download blobs is quite easy using the designated %Net.Cloud.Storage.Client class API methods, or using the EnsLib.CloudStorage.* inbound/outbound adaptors.

Note that you'll need to have the %JavaServer External Language Server up and running to use the cloud storage API or adaptors, since they both use the PEX framework using the Java Server.

Here is a quick summary:

Azure Blob Storage is accessed using a connection string that looks similar to this:

DefaultEndpointsProtocol=https;AccountName=abcdefscleanisr;AccountKey=n3mWskdjgfhklsghdfjaskhgkjdfizqMWJ5X2L4JpqeEJk/FuEnw0rPI6E/rULPn0V5BWgFw+AStRJZlYQ==;EndpointSuffix=core.windows.net

Break it into lines with ";" as the delimiter and save it as a text file:

DefaultEndpointsProtocol=https;
AccountName=abcdefscleanisr;
AccountKey=n3mWskdjgfhklsghdfjaskhgkjdfizqMWJ5X2L4JpqeEJk/FuEnw0rPI6E/rULPn0V5BWgFw+AStRJZlYQ==;
EndpointSuffix=core.windows.net

For this example I will name this file "MyAzureStorage.txt".

Now let's activate the API:

set file="C:\Storage\MyAzureStorage.txt"
set endpoint="abcdefscleanisr.privatelink.blob.core.windows.net"
set tStatus=""

In the CreateClient API method, the second parameter is the cloud provider:

  • 0 - Amazon S3
  • 1 - Azure Blob
  • 2 - Google Cloud Storage
SET myClient = ##CLASS(%Net.Cloud.Storage.Client).CreateClient(,1,file,0,.tStatus,endpoint)

Once the client has been established (tStatus=1), you can run any of the client's methods:

 

In Azure Blob Storage,  a Bucket is a Container.

So for example, to get the list of Azure containers, run the ListBuckets method:

set list=myClient.ListBuckets()

for i=1:1:list.Count() {write list.GetAt(i).name,!}

clean
dirty

Once you have a container name (let's take the "clean" container as an example), you can get the list of blobs in it:
 

set list=myClient.ListBlobs("clean")

for i=1:1:list.Count() {write list.GetAt(i).name,!}

4caa6f29-e9e6-4cde-9112-65ec28d4eded.jpeg
2374233-e9e6-4cde-9112-65ec28d4eded.jpeg
3klfd3lld-e9e6-4cde-9112-65ec28d4eded.jpeg
4caa6f29-e9e6-87ry-9112-65ec28d4eded.jpeg

The CloudStorage outbound adaptor has fewer options - its methods include only the following:

  • UploadBlobFromString(bucketName,blobName,content)
  • UploadBlobFromStream(bucketName,blobName,content)
  • UploadBlobFromFile(bucketName,blobName,filePath)
  • DeleteBlob(bucketName,blobName)

Here are the settings for configuring a business operation using the EnsLib.CloudStorage.OutboundAdapter with Azure Blob Storage. The Storage Region parameter is not relevant for Azure Blob Storage.

All other parameters are relevant the same as when we were using the CreateClient method:

The ContainerName parameter is not part of the adaptor's parameters - it is not needed to create the client (the CreateClient method does not use it).

However, all the other adaptor methods listed above do need to specify to which bucket/container should the blob be loaded, it makes sense to add it as a parameter as part of the settings:

Class Sasa.BO.Storage Extends Ens.BusinessOperation
{ 
Parameter ADAPTER = "EnsLib.CloudStorage.OutboundAdapter"; 
Property Adapter As EnsLib.CloudStorage.OutboundAdapter; 
Parameter INVOCATION = "Queue"; 
/// Bucket name(Amazon) = Container name(Azure)
Property ContainerName As %String(MAXLEN = 1000); 
Parameter SETTINGS = "ContainerName:Cloud Storage"; 
Method CreateFile(pRequest As Cloud.RES.REST, Output pResponse As Cloud.RES.REST) As %Status
{
    #dim tException As %Exception.SystemException
    Set tStatus = $$$OK
    set pResponse=##class(Cloud.RES.REST).%New() 
    Try {
        Set tStatus = ..Adapter.DeleteBlob(..ContainerName, pRequest.FileName)
        Set tStatus = ..Adapter.UploadBlobFromStream(..ContainerName, pRequest.FileName, pRequest.FileData)   
        if $$$ISERR(tStatus) {
            set pResponse.Success = 0
            set pResponse.ErrorMessage = $system.Status.GetErrorText(tStatus)
        }
    } 
    Catch tException {
        Set tStatus = tException.AsStatus()
        set pResponse.Success=0
        set pResponse.ErrorMessage=$system.Status.GetErrorText(tStatus)
    }
    Quit $$$OK
}

Hope that will help you start using the cloud adaptor with Azure.

Keren.

Discussion (0)0
Log in or sign up to continue
Question
· Aug 19, 2024

Question about PKI Configuration

Hello everyone,

I'm currently working on getting familiar with OAuth2, following this article. Since Part 2 involves using PKI, I decided to implement it as outlined in the article. However, I've run into an issue that I can't seem to resolve, and my searches on Google haven't yielded any useful results.

Here's a brief overview of what I've done so far:

Configuring the PKI Server:

  • Navigated to: System Administration > Security > Public Key Infrastructure > Configure Local Certificate Authority Server.
  • Filled in all the required fields and saved the configuration.

As far as I can tell, this step was successful. The following three files were generated, and the message displayed was:

"Certificate Authority server successfully configured. Using existing files: D:\CacheSys\mgr\root_ca.cer, .key, and .srl."

Configuring the PKI Client:

  • Navigated to: System Administration > Security > Public Key Infrastructure > Configure Local Certificate Authority Client.
  • Again, I filled in all the necessary fields and saved the configuration.

 

This also seemed to work fine. The message after saving was:

"Certificate Authority client successfully configured."

Submitting a Certificate Signing Request:

  • Navigated to: System Administration > Security > Public Key Infrastructure > Submit Certificate Signing Request to Certificate Authority Server.
  • Filled in all the required fields and saved the configuration.

However, now I'm seeing the following error message:

"ERROR #5002: ObjectScript Error: <WRITE>Send+122^%Net.HttpRequest.1"

 

The auth.csr and auth.key were nevertheless created.

I’m not sure how to interpret this error message. If anyone has any insight into what might be missing or where the problem lies, I would greatly appreciate your help.

maybe also important:

Below are the SSL settings for the CA Test Server:

 

Thank you in advance for your assistance.

Best regards,
Daniel Goerke

1 Comment
Discussion (1)2
Log in or sign up to continue
Announcement
· Aug 19, 2024

Ganadores del Concurso de Python

Hola Comunidad:

¡Es hora de anunciar los ganadores del Concurso de Python

Gracias a todos nuestros increíbles participantes que presentaron 9 aplicaciones🔥 


Nominación de expertos

🥇 1er lugar $5,000 para sqlzilla aplicación presentada por @Henry Pereira, @José Pereira, @Henrique Dias

🥈 2do lugar y $3,000 para iris-RAG-Gen aplicación presentada por @Muhammad Waseem

🥉 3er lugar $1,500 para sheltershare aplicación presentada por @Zeljko Sucic, @Damir Miklos

🏅 4to lugar $750 para irislab aplicación presentada por @Dmitry Maslennikov

🏅 5to lugar $500 para iris-email-analyzer-app aplicación presentada por @Eric Mariasis

🌟 $100 para IRIS RAG App aplicación presentada por @Alex Alcivar

🌟 $100 para IRIS-production-chat-robot aplicación presentada por @Ste Sharma 

🌟 $100 para ServiceInspection aplicación presentada por @Wolis Oliavr

🌟 $100 para iris-errors-analysis-graph aplicación presentada por @Davi Massaru Teixeira Muta, @Lucas Fernandes

Nominaciones de la Comunidad

🥇 1er lugar y $1,000 para sqlzilla aplicación presentada por @Henry Pereira, @José Pereira, @Henrique Dias

🥈 2do lugar y $750 para ServiceInspection aplicación presentada por @Wolis Oliavr

🥉 3er lugar y $500 para iris-RAG-Gen aplicación presentada por @Muhammad Waseem

🏅 4to lugar $300 para IRIS-production-chat-robot aplicación presentada por @Ste Sharma

🏅 5to lugar $200 para sheltershare aplicación presentada por @Zeljko Sucic, @Damir Miklos 

¡Nuestra más sincera enhorabuena a todos los participantes y ganadores!

Únete y diviértete la próxima vez ;)

Discussion (0)1
Log in or sign up to continue
InterSystems Official
· Aug 19, 2024

Actualización de las plataformas de InterSystems Q3-2024

Actualización de las plataformas de InterSystems Q3-2024

Bienvenidos a la actualización trimestral de plataformas del tercer trimestre de 2024.  Tenemos algunas novedades en el frente AIX para fomentar una mejor seguridad, junto con nuestra ronda habitual de actualizaciones de versiones del sistema operativo. 

Si eres nuevo en estas actualizaciones, ¡bienvenido!  Esta actualización tiene como objetivo compartir los cambios recientes, así como nuestro mejor conocimiento actual sobre los próximos cambios, pero predecir el futuro es un asunto delicado y esto no debe ser considerado como una hoja de ruta comprometida. 

Dicho esto, pasemos a la actualización...

Sistemas operativos de producción y arquitecturas de CPU IRIS de InterSystems

Red Hat Enterprise Linux

  • Cambios recientes
    • Hemos completado la certificación de SO menor para RHEL 9.4 & 8.10 en IRIS 2024.1 sin incidentes
  • Actualizaciones anteriores
  • Cambios futuros
    • La próxima gran actualización de RHEL será RHEL 10, prevista para el segundo trimestre de 2025.
    • Esperamos que las versiones 9.5 y 8.11, compatibles a corto plazo, se publiquen a finales de año. Comenzaremos la certificación de SO menores en IRIS 2024.1 cuando se publiquen.
  • Más información: RHEL Release Page

 

Ubuntu

  • Cambios recientes
    • Hemos completado sin incidentes la certificación de SO menor para Ubuntu 22.04.3 en IRIS 2024.
  • Actualizaciones anteriores
    • La compatibilidad con Ubuntu 24.04 se añadió en IRIS 2024.1.0.267.2 el 15 de mayo, menos de tres semanas después del lanzamiento de Ubuntu 24.04.
    • Ahora que Ubuntu 24.04 está disponible, IRIS 2024.1 será la última gran versión compatible con Ubuntu 20.04. IRIS 2024.2 sólo estará disponible para Ubuntu 22.04 y 24.04.
  • Más información: Ubuntu Releases Page

 

SUSE Linux

  • Cambios recientes
  • Actualizaciones anteriores
    • El soporte general de SUSE for Linux Enterprise Server 15 SP3 finalizó el 31/12/2022, pero el soporte de seguridad ampliado continuará hasta diciembre de 2025.

Más información: SUSE lifecycle

 

Oracle Linux

  • Actualizaciones anteriores
    • Oracle Linux 9.2 ha completado la certificación de SO menor en IRIS 2023.1 sin incidentes
  • Más información: Oracle Linux Support Policy

 

Microsoft Windows

  • Próximos cambios
    • Se espera que Windows Server 2025 salga al mercado en el cuarto trimestre. Estamos pendientes de él y formulando planes de compatibilidad.
    • Windows 12 se espera incluso antes, con una posible fecha de lanzamiento en junio. Comenzaremos el proceso de compatibilidad con el nuevo sistema operativo después de su lanzamiento.
  • Más información: Microsoft Lifecycle

 

AIX

  • Próximos cambios
    • Estamos planeando soportar únicamente kits OpenSSL 3 a partir de IRIS 2024.3. NOTA: Esto significa que 2024.2 es la última versión de IRIS que tiene kits OpenSSL 1 y OpenSSL 3.  En IRIS 2023.3, 2024.1 y 2024.2, proporcionamos dos kits IRIS independientes: uno compatible con OpenSSL 1 y otro con OpenSSL 3. Dada la importancia de OpenSSL 3 para la seguridad general del sistema, muchos de vosotros nos habéis comentado que ya habéis pasado a OpenSSL 3. Si tenéis alguna duda al respecto, poneos en contacto conmigo directamente.  En la actualización del último trimestre, dijimos que 2025.1 sería la primera versión compatible con OpenSSL 3, pero dada su importancia hemos tomado la decisión de adelantar la fecha.  
  • Más información: AIX Lifecycle

 

Contenedores

  • Cambios recientes
    • Cambiamos la imagen del contenedor base de Ubuntu 22.04 a Ubuntu 24.04 con IRIS 2024.2
    • Estamos considerando cambios en el contenedor IRIS por defecto para, por defecto, tener el tráfico interno (ECP, Mirroring, etc) en un puerto diferente del tráfico potencialmente externo (ODBC, JDBC, etc).  Si tenéis necesidades en este ámbito, no dudéis en decírmelo.
  • Actualizaciones anteriores
    • Hemos empezado a actualizar periódicamente los contenedores IRIS con parches para la imagen base del contenedor y las dependencias de terceros.  Los contenedores IRIS que siguen el nuevo esquema de etiquetado tienen ahora actualizaciones al menos cada dos semanas

 

Sistemas operativos de desarrollo y arquitecturas de CPU IRIS de InterSystems

MacOS

  • Actualizaciones anteriores
    • Apple ha lanzado macOS 14 compatible con IRIS en IRIS 2024.

 

Componentes de InterSystems

Caché & Ensemble Production Operating Systems and CPU Architectures

  • Cambios anteriores
    • Le recordamos que las últimas versiones de mantenimiento de Caché y Ensemble están previstas para el primer trimestre de 2027, es decir, antes de lo que piensa.  Para más información, consultad el excelente artículo de Jeff sobre la comunidad.  

Documentación sobre plataformas compatibles con InterSystems

La documentación sobre plataformas compatibles de InterSystems es la fuente de información definitiva sobre las tecnologías compatibles.

 

… y eso es todo amigos.  De nuevo, si hay algo más sobre lo que os gustaría saber, por favor, hacédnoslo saber.

Discussion (0)1
Log in or sign up to continue