IBM Sterling B2B: Configuring SB2Bi to use S3 Storage Provider

From Wiki

Tips

1) Use IP Address with MinIO

For me only works when i used IP Address. When used hostname, i received the following error: Unable to execute HTTP request: sfg-2-minio.minio-svc.sterling-minio.svc.cluster.local.
The url become <bucket name>.<address>



Configure AWS SDK for Java on SB2Bi

1) Download AWS SDK for Java from this location https://sdk-for-java.amazonwebservices.com/latest/aws-java-sdk.zip and unzip file.

cd /tmp

wget https://sdk-for-java.amazonwebservices.com/latest/aws-java-sdk.zip

unzip aws-java-sdk.zip

2) Stop Sterling B2B Integrator

cd /opt/IBM/SterlingIntegrator/bin 

./softStop.sh -all

./hardStop.sh

3) Install aws-java-sdk-[version].jar

./install3rdParty.sh awssdk 1.12.565 -j /tmp/aws-java-sdk-1.12.565/lib/aws-java-sdk-1.12.565.jar

4) Import third party libraries

Now we need to import third party libraries (httpclient-[ver].jar,httpcore-[ver].jar, jackson-annotations-[ver].jar, joda-time-[ver].jar) from directory

/tmp/aws-java-sdk-1.12.565/third-party/lib/ 

but is important to make sure that in <si_install_dir>/properties/dynamicclasspath.cfg and dynamicclasspath.cfg.in, there are no duplicates (like httpclient.jar) and with a higher version.

in my case SB2Bi 6.2 and aws-java-sdk-1.12.565, in need to

./install3rdParty.sh awssdk 1.12.565 -j /tmp/aws-java-sdk-1.12.565/third-party/lib/netty-codec-http-4.1.94.Final.jar
./install3rdParty.sh awssdk 1.12.565 -j /tmp/aws-java-sdk-1.12.565/third-party/lib/netty-common-4.1.94.Final.jar
./install3rdParty.sh awssdk 1.12.565 -j /tmp/aws-java-sdk-1.12.565/third-party/lib/netty-buffer-4.1.94.Final.jar
./install3rdParty.sh awssdk 1.12.565 -j /tmp/aws-java-sdk-1.12.565/third-party/lib/netty-transport-4.1.94.Final.jar
./install3rdParty.sh awssdk 1.12.565 -j /tmp/aws-java-sdk-1.12.565/third-party/lib/netty-resolver-4.1.94.Final.jar
./install3rdParty.sh awssdk 1.12.565 -j /tmp/aws-java-sdk-1.12.565/third-party/lib/netty-codec-4.1.94.Final.jar
./install3rdParty.sh awssdk 1.12.565 -j /tmp/aws-java-sdk-1.12.565/third-party/lib/netty-handler-4.1.94.Final.jar
./install3rdParty.sh awssdk 1.12.565 -j /tmp/aws-java-sdk-1.12.565/third-party/lib/netty-transport-native-unix-common-4.1.94.Final.jar

so my dynamicclasspath.cfg looked like this:

...
VENDOR_JAR=/opt/IBM/SterlingIntegrator/jar/awssdk/1.12.565/aws-java-sdk-1.12.565.jar
VENDOR_JAR=/opt/IBM/SterlingIntegrator/jar/awssdk/1.12.565/netty-buffer-4.1.94.Final.jar
VENDOR_JAR=/opt/IBM/SterlingIntegrator/jar/awssdk/1.12.565/netty-transport-4.1.94.Final.jar
VENDOR_JAR=/opt/IBM/SterlingIntegrator/jar/awssdk/1.12.565/netty-resolver-4.1.94.Final.jar
VENDOR_JAR=/opt/IBM/SterlingIntegrator/jar/awssdk/1.12.565/netty-codec-4.1.94.Final.jar
VENDOR_JAR=/opt/IBM/SterlingIntegrator/jar/awssdk/1.12.565/netty-handler-4.1.94.Final.jar
VENDOR_JAR=/opt/IBM/SterlingIntegrator/jar/awssdk/1.12.565/netty-transport-native-unix-common-4.1.94.Final.jar
VENDOR_JAR=/opt/IBM/SterlingIntegrator/jar/awssdk/1.12.565/netty-codec-http-4.1.94.Final.jar

5) Run setupfiles and Start Sterling B2B Integrator

./setupfiles.sh

./run.sh

Deploying MinIO (S3 storage)

MinIO is not listed as supported by SB2Bi, but for testing and validation purposes will be excelent.

1) The fastest way to have MinIO: MinIO: Deploy MinIO as Container

Important:

  • S3 Protocol Port: 9000
  • MinIO console Port: 9001

2) Access MinIO console Sample: http://10.1.1.1:9001/login. To login provide the variables from podman command:

-e "MINIO_ROOT_USER=root" \
-e "MINIO_ROOT_PASSWORD=passw0rd" \

3) Create a bucket. Sample: mysfg-bucket-minio

4) Create an access token. See here MinIO

5) upload a file to test. Example: arquivo_teste2.txt

Create a BP to get a file in MinIO (S3 storage)

<process name="Demo_MinioS3ClientGet">
 <sequence>
   <operation name="AWSS3 Get Service">
     <participant name='AWSS3Client'/>
     <output message='xout'>
       <assign to='action'>get</assign>
       <assign to="awss3.endpoint">http://10.1.1.1:9000</assign>
       <assign to="awss3.bucketname">mysfg-bucket-minio</assign>
       <assign to="awss3.filename">arquivo_teste2.txt</assign>
       <assign to="awss3.accesskey">VQ..rA</assign>
       <assign to="awss3.secretkey">K4..ge</assign>
       <assign to="requiredProxy">false</assign>
       <assign to="useOrigFileName">true</assign>
       <assign to='.' from='PrimaryDocument' />
     </output>
     <input message="xin">
       <assign to="." from="*"/>
     </input>
   </operation>
 </sequence>
</process>

Other examples you can see here Amazon Web Service Simple Storage Service


IBM Sterling B2B: Create a BP to get a file in IBM Cloud Object Storage (S3 storage)

Configure Sterling File Gateway to store files in MinIO (S3 storage)

1) Generate Obscured Access Key and Obscured Secret Key

In the fields Obscured Access Key and Obscured Secret Key, you must enter the obscure key.

So you need to run the obscure command

/opt/IBM/SterlingIntegrator/bin/obscure_passphrase.sh <keys>

2) The EndPointURL

Our minio server is not configured with https, so in the enpoint field I will provide the protocol/address/port.

3) Create a Partner and setup configuration for S3

Important 1: In the fields Obscured Access Key and Obscured Secret Key, you must enter the obscure key.

So you need to run the obscure command

/opt/IBM/SterlingIntegrator/bin/obscure_passphrase.sh <keys>

Get the output and fill in that fields

My example:

2) Create a Routing Channel

3) Create a Channel

Ver também