{"id":967,"date":"2024-07-03T14:59:14","date_gmt":"2024-07-03T13:59:14","guid":{"rendered":"https:\/\/france.magicsoftware.com\/blog\/?p=967"},"modified":"2024-09-11T14:52:55","modified_gmt":"2024-09-11T13:52:55","slug":"amazon-s3-and-magic-xpi","status":"publish","type":"post","link":"https:\/\/france.magicsoftware.com\/blog\/magic-xpi\/amazon-s3-and-magic-xpi\/","title":{"rendered":"Amazon S3 and Magic xpi"},"content":{"rendered":"\n<p><strong>Goal1<\/strong> : Describe the different steps for connecting Magic xpi with Amazon S3 using a DotNet custom component<\/p>\n\n\n\n<p><strong>Goal2<\/strong> : Describe general steps to develop a custom component<\/p>\n\n\n\n<p><strong>Prerequisite<\/strong> : Access to Amazon S3 with AccessKey, SecretKey, Region and Endpoint URL.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"448\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_11-1024x448.png\" alt=\"\" class=\"wp-image-1015\" style=\"width:615px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_11-1024x448.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_11-300x131.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_11-768x336.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_11-1536x672.png 1536w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_11.png 1559w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Check with postman that you can have access to Amazon service<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"603\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_1_-1024x603.png\" alt=\"\" class=\"wp-image-990\" style=\"width:479px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_1_-1024x603.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_1_-300x177.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_1_-768x452.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_1_.png 1322w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>1\/ Copy the custom component for Amazon S3 (AmazonS3) to the &lt;Magic xpi installation directory&gt;\\Runtime\\addon_connectors<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"926\" height=\"97\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_2.png\" alt=\"\" class=\"wp-image-975\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_2.png 926w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_2-300x31.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_2-768x80.png 768w\" sizes=\"auto, (max-width: 926px) 100vw, 926px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"226\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_3-1024x226.png\" alt=\"\" class=\"wp-image-976\" style=\"width:931px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_3-1024x226.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_3-300x66.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_3-768x170.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_3.png 1031w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>2\/ Open the Magic xpi Studio, you should see the Connector AmazonS3 in the Toolbox repository<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"787\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_4-1-1024x787.png\" alt=\"\" class=\"wp-image-1192\" style=\"width:546px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_4-1-1024x787.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_4-1-300x230.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_4-1-768x590.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_4-1.png 1044w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>3\/ Open the Magic xpi Resources repository and create an AmazonS3 resource<\/p>\n\n\n\n<p>Set the credentials with the amazon S3 related informations<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"531\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_5-1-1024x531.png\" alt=\"\" class=\"wp-image-1195\" style=\"width:602px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_5-1-1024x531.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_5-1-300x155.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_5-1-768x398.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_5-1.png 1391w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Click Validate, you should see a successfull message displaying the number of buckets<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"476\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_6-1-1024x476.png\" alt=\"\" class=\"wp-image-1197\" style=\"width:678px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_6-1-1024x476.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_6-1-300x139.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_6-1-768x357.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_6-1.png 1395w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>4\/ Drag and Drop the AmazonS3 connector and right click to configure it<\/p>\n\n\n\n<p>Catch the <em>Store Result In<\/em> in a Blob variable and press OK<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"636\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_7-1-1024x636.png\" alt=\"\" class=\"wp-image-1200\" style=\"width:683px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_7-1-1024x636.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_7-1-300x186.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_7-1-768x477.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_7-1.png 1079w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>5\/ If you want to list Objects in a Bucket, choose the Method \u00ab\u00a0ListingObjects\u00a0\u00bb and set the Region and the BucketName<\/p>\n\n\n\n<p><strong>!! For each method, you have to set all fields with a value (for empty value just enter 2 simple quotes)<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"585\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_8-1-1024x585.png\" alt=\"\" class=\"wp-image-1203\" style=\"width:695px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_8-1-1024x585.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_8-1-300x171.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_8-1-768x438.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_8-1.png 1389w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"955\" height=\"705\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_22.png\" alt=\"\" class=\"wp-image-1073\" style=\"width:530px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_22.png 955w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_22-300x221.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_22-768x567.png 768w\" sizes=\"auto, (max-width: 955px) 100vw, 955px\" \/><\/figure>\n\n\n\n<p>6\/ Run the Flow in Debug Mode and check the result in the C.UserBlob variable.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"418\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_9-1-1024x418.png\" alt=\"\" class=\"wp-image-1205\" style=\"width:730px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_9-1-1024x418.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_9-1-300x122.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_9-1-768x314.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_9-1-1536x627.png 1536w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_9-1.png 1864w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"818\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_10-1024x818.png\" alt=\"\" class=\"wp-image-1005\" style=\"width:548px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_10-1024x818.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_10-300x240.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_10-768x614.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_10.png 1034w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The response should be an Array of Amazons3Response including attributes of each object.<\/p>\n\n\n\n<p>7\/ The connector implements 8 methods (<strong>putfile, getobject, ListingObjects, DeleteObjects, uploadDirectory, downloadDirectory, CreateBucket, DeleteBucket<\/strong>)<\/p>\n\n\n\n<p>8\/ Next, i will describe the major steps to follow in other to create the connector.<\/p>\n\n\n\n<p>You have to develop 2 projects one for the UI used in design mode and one for the Runtime. I&rsquo;ll use Dotnet technology for both of them.<\/p>\n\n\n\n<p>(*) you can use java for the runtime project.<\/p>\n\n\n\n<p>9\/ Open The connector Builder and create all the informations to create the connector skeleton.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"984\" height=\"775\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_12.png\" alt=\"\" class=\"wp-image-1020\" style=\"width:552px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_12.png 984w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_12-300x236.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_12-768x605.png 768w\" sizes=\"auto, (max-width: 984px) 100vw, 984px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"886\" height=\"579\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_13.png\" alt=\"\" class=\"wp-image-1022\" style=\"width:556px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_13.png 886w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_13-300x196.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_13-768x502.png 768w\" sizes=\"auto, (max-width: 886px) 100vw, 886px\" \/><\/figure>\n\n\n\n<p>10\/ Open the <strong>UI project<\/strong> with Visual Studio and load these assemblies<\/p>\n\n\n\n<p>&lt;Magic xpi installation&gt;\\Studio\\Extensions\\Application  (iBolt.Common.dll, MagicSoftware.Integration.UserComponents.dll) and &lt;Magic xpi installation&gt;\\Runtime (XPI_SDK.dll)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"550\" height=\"588\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_14.png\" alt=\"\" class=\"wp-image-1042\" style=\"aspect-ratio:1;object-fit:cover;width:301px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_14.png 550w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_14-281x300.png 281w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"546\" height=\"829\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_15.png\" alt=\"\" class=\"wp-image-1043\" style=\"aspect-ratio:1;object-fit:cover;width:287px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_15.png 546w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_15-198x300.png 198w\" sizes=\"auto, (max-width: 546px) 100vw, 546px\" \/><\/figure>\n\n\n\n<p>11\/ The \u00ab\u00a0ValidateResource\u00a0\u00bb method is called when you click on the Validate Button in the resource repository<\/p>\n\n\n\n<p>ResourceData is used to retrieve credentials from the resource repo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"481\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_16-1024x481.png\" alt=\"\" class=\"wp-image-1051\" style=\"width:491px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_16-1024x481.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_16-300x141.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_16-768x361.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_16.png 1068w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Create an instance of the Amazons3 client, list the number of buckets and display a successfull message if it&rsquo;s ok.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"371\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_17-1024x371.png\" alt=\"\" class=\"wp-image-1053\" style=\"width:577px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_17-1024x371.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_17-300x109.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_17-768x279.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_17.png 1031w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"499\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_18-1024x499.png\" alt=\"\" class=\"wp-image-1055\" style=\"width:587px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_18-1024x499.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_18-300x146.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_18-768x374.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_18.png 1364w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>12\/ Design the connector configuration screen.<\/p>\n\n\n\n<p>The method \u00ab\u00a0Configure\u00a0\u00bb is called when you right click on the connector. You have to use an MVVM model and use XAML to design the screen<\/p>\n\n\n\n<p>You should used a Class that implements a Magic xpi UserControl<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"985\" height=\"502\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_19-1.png\" alt=\"\" class=\"wp-image-1214\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_19-1.png 985w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_19-1-300x153.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_19-1-768x391.png 768w\" sizes=\"auto, (max-width: 985px) 100vw, 985px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"740\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_20-1-1024x740.png\" alt=\"\" class=\"wp-image-1216\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_20-1-1024x740.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_20-1-300x217.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_20-1-768x555.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_20-1.png 1041w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>In the code behind, you have to use the methods below<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"624\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_20_bis-1024x624.png\" alt=\"\" class=\"wp-image-1222\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_20_bis-1024x624.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_20_bis-300x183.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_20_bis-768x468.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_20_bis.png 1176w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>13\/ In design Mode, when you click OK on the connector, the \u00ab\u00a0GetXMLSchemaConfiguration()\u00a0\u00bb is called from \u00ab\u00a0GetSchema()\u00a0\u00bb and then the xsd file opens in the mapper<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"673\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_21-1-1024x673.png\" alt=\"\" class=\"wp-image-1070\" style=\"width:683px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_21-1-1024x673.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_21-1-300x197.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_21-1-768x505.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_21-1.png 1133w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>14\/ Build the solution and copy all files (dll, &#8230;) in the &lt;Magic xpi installation dir&gt;\\Runtime\\addon_connectors\\AmazonS3\\ui\\lib<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1009\" height=\"649\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_23.png\" alt=\"\" class=\"wp-image-1086\" style=\"aspect-ratio:1;object-fit:cover;width:434px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_23.png 1009w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_23-300x193.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_23-768x494.png 768w\" sizes=\"auto, (max-width: 1009px) 100vw, 1009px\" \/><\/figure>\n\n\n\n<p>15\/ Now Open the <strong>Runtime Project<\/strong> with Visual Studio<\/p>\n\n\n\n<p>In Runtime mode, \u00ab\u00a0invoke\u00a0\u00bb method is called. Payload is retrieved from the variable StepParams.PayloadOBject and the resource from StepParams.ResourceObject.TryGetValue<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"709\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_24-1024x709.png\" alt=\"\" class=\"wp-image-1093\" style=\"width:574px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_24-1024x709.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_24-300x208.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_24-768x532.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_24.png 1070w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Define 2 variables to catch the response and the success indication (variables \u00ab\u00a0operationSuccess\u00a0\u00bb and \u00ab\u00a0operationSuccessAmazonS3\u00a0\u00bb are retrieved from StepData Class declared in the UI project)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"279\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/image-1024x279.png\" alt=\"\" class=\"wp-image-1095\" style=\"width:744px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/image-1024x279.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/image-300x82.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/image-768x209.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/image.png 1188w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"846\" height=\"253\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_26.png\" alt=\"\" class=\"wp-image-1098\" style=\"width:521px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_26.png 846w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_26-300x90.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_26-768x230.png 768w\" sizes=\"auto, (max-width: 846px) 100vw, 846px\" \/><\/figure>\n\n\n\n<p>16\/ According to the received payload, call to right method from S3Client class and pass the payload and aws credentials.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"386\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/image-1-1024x386.png\" alt=\"\" class=\"wp-image-1103\" style=\"width:601px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/image-1-1024x386.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/image-1-300x113.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/image-1-768x289.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/image-1.png 1030w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"690\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_28-1024x690.png\" alt=\"\" class=\"wp-image-1105\" style=\"width:632px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_28-1024x690.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_28-300x202.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_28-768x518.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_28.png 1090w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>17\/ Serialize in XML the response <\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1014\" height=\"673\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_29.png\" alt=\"\" class=\"wp-image-1109\" style=\"width:485px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_29.png 1014w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_29-300x199.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_29-768x510.png 768w\" sizes=\"auto, (max-width: 1014px) 100vw, 1014px\" \/><\/figure>\n\n\n\n<p>18\/ Rebuild the solution and copy the related files into &lt;Magic xpi directory&gt;\\Runtime\\addon_connectors\\AmazonS3\\runtime\\dotnet\\lib<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"461\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_30-1024x461.png\" alt=\"\" class=\"wp-image-1115\" style=\"width:635px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_30-1024x461.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_30-300x135.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_30-768x346.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_30.png 1070w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>19\/ The Connector and source file is available here (for Magic xpi 4.14) : <a href=\"https:\/\/france.magicsoftware.com\/share\/amazons3.zip\" title=\"\">https:\/\/france.magicsoftware.com\/share\/amazons3.zip<\/a><\/p>\n\n\n\n<p>20\/ Documentation (Magic xpi Connector Builder.pdf and <a href=\"https:\/\/docs.aws.amazon.com\/sdkfornet\/v3\/apidocs\/items\/S3\/NS3.html\">AWS SDK for .NET V3 API Documentation (amazon.com)<\/a>)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Goal1 : Describe the different steps for connecting Magic xpi with Amazon S3 using a DotNet custom component Goal2 : Describe general steps to develop a custom component Prerequisite : Access to Amazon S3 with AccessKey, SecretKey, Region and Endpoint URL. Check with postman that you can have access to Amazon service 1\/ Copy the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":969,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[35,4,46],"tags":[36,14],"class_list":["post-967","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-magic-xpi-magic-xpi","category-magic-xpi","category-s3","tag-amazon-s3","tag-magic-xpi"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/07\/AWS_S3_1.png","_links":{"self":[{"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/posts\/967","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/comments?post=967"}],"version-history":[{"count":97,"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/posts\/967\/revisions"}],"predecessor-version":[{"id":1253,"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/posts\/967\/revisions\/1253"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/media\/969"}],"wp:attachment":[{"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/media?parent=967"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/categories?post=967"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/tags?post=967"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}