அமேசான் இணையச்சேவைகள் – நிரல்வழிச் செயல்முறை

இதுவரையில் நாம் அடையாள அணுக்க மேலாண்மை பற்றியும், எளிய சேமிப்பகச்சேவை பற்றியும் அறிந்திருக்கிறோம். முந்தைய பதிவுகளில் உருவாக்கிய பயனர்களின் அணுக்கத்திறப்புகளைக் கொண்டு, S3இல் பின்வருவனவற்றைச் செய்துபார்க்கலாம்.

  • ஒரு கொள்கலனை உருவாக்குதல்
  • அக்கொள்கலனில் ஒரு கோப்பினைப் பதிவேற்றுதல்
  • நாம் பதிவேற்றிய கோப்பு, சரியான கொள்கலனில் உள்ளதா என சரிபார்த்தல்
  • பதிவேற்றிய கோப்பினை அழித்தல்
  • முதற்படியில் உருவாக்கிய கொள்கலனை அழித்தல்

அடிப்படை கட்டமைப்பு

இச்செயல்முறைக்காக, நாம் C# மொழியைப் பயன்படுத்தவிருக்கிறோம். இணையச்சேவைகளை நிரல்வழியே இயக்குவதற்கு ஏதுவாக, பலமொழிகளுக்கான மென்பொருளாக்கக் கொட்டான்களை (SDK – Software Development Kit), அமேசான் வழங்கியுள்ளது. ஒவ்வொரு மொழிக்கென தனித்தனி செயலாக்கங்கள் இருந்தாலும், அவையனைத்தும் ஒரேவேலையையே செய்வதால், ஒருமொழியில் செய்துபார்த்தால் போதுமானது.

முதற்படியாக ஒரு செயலியை உருவாக்கவேண்டும். விசுவல் ஸ்டூடியோவில், ஒரு புதிய திட்டத்தை உருவாக்கும்போது, Console Application போன்ற எளிய செயலியையோ, அல்லது Class Library ஆகவோ உருவாக்கிக்கொள்ளலாம். ஓரலகுச்சோதனைகளின் மூலமாக இச்செயல்முறையை இயக்குவதற்கு Class Library பொருத்தமானதாக இருக்கலாம். கட்டளை இடைமுகத்தில் இயக்கவிரும்புவோர் Console Applicationஐத் தெரிவுசெய்யலாம். அவரவர் வசதிக்கேற்ப ஒரு திட்டத்தை உருவாக்கிக்கொள்ளவும்.

அடுத்ததாக, எளிய சேமிப்பகச்சேவையைப் பயன்படுத்தவிருப்பதால், அதற்கான திரட்டினை (library) நிறுவவேண்டும். இதனை நியூகெட் என்ற திரட்டுகளை மேலாண்மை செய்யும் தளத்திலிருந்து நிறுவலாம். இதற்கான கட்டளை இடைமுகத்திலிருந்து, பின்வரும் கட்டளையைக் கொடுக்கவேண்டும்.

Install-Package AWSSDK.S3 -Version 3.3.20

ஒரு கொள்கலனை உருவாக்குதல்

அடுத்து, ஒரு கொள்கலனை உருவாக்குவதற்கான நிரலை எழுதலாம். கொள்கலனை உருவாக்குவதற்கு முக்கியமான இருவிசயங்கள் தேவைப்படுகின்றன.

  • பெயர் – இதற்கென ஏழெட்டு விதிகள் உள்ளன. அவற்றுக்குள் அடங்கக்கூடிய பெயரொன்றைத் தெரிவுசெய்யவேண்டும். கொள்கலனை உருவாக்கியபின் அதன் பெயரை மாற்றமுடியாது. எனவே, தீரயோசித்து, ஒருபெயரைத் தேர்ந்தெடுங்கள்.
  • பிராந்தியம் – முந்தைய பதிவில் குறிப்பிட்டதுபோல, எந்த பிராந்தியத்தில் ஒரு கொள்கலன் உருவாக்கப்படுகிறதோ, அதன் காலம் முழுமைக்கும் அதே பிராந்தியத்தோடு இணைக்கப்பட்டிருக்கும். எனவே, இதனையும் தெளிவாகத் தேர்ந்தெடுக்கவேண்டும்.
public async Task<bool> CreateBucket(string bucketName)
{
            using (var client = ClientFactory.CreateS3Client())
            {
                var request = new PutBucketRequest()
                {
                    BucketName = bucketName,
                    CannedACL = S3CannedACL.PublicRead,
                    UseClientRegion = true
                };

               try
                {
                    var result = await client.PutBucketAsync(request);
                    return result.HttpStatusCode == HttpStatusCode.OK;
                }
                catch (AmazonS3Exception e)
                {
                    return false;
                }
            }
        }

மேற்கண்ட நிரலில், மூன்று முக்கிய படிகளுள்ளன.

  1. S3க்கான கிளையன்ட்டை (client) உருவாக்கவேண்டும்.
  2. கொள்கலனை உருவாக்குவதற்கான கோரிக்கையை (request) உருவாக்கவேண்டும்.
  3. முதற்படியில் உருவாக்கிய கிளையன்ட்டைப் பயன்படுத்தி, இக்கோரிக்கையை அனுப்பவேண்டும்.

இச்செயல்முறையில் இருக்கும் எல்லாச் செயல்களுக்கும் நாம் கிளையன்ட்டை உருவாக்கவேண்டுமென்பதால், அதனை ஒரு தனி செயற்கூற்றில் இட்டு வைக்கலாம்.

public class ClientFactory
{
        public static AmazonS3Client CreateS3Client()
        {
            var credentials = new BasicAWSCredentials(
                                             "<access_key>",
                                             "<secret_key>"
                                             );
            return new AmazonS3Client(
                                Credentials,
                                RegionEndpoint.APSouth1
                                );
        }
}

நாம் அமேசான் வலைத்தளத்தின் மூலமாக எந்தவொரு செயலைச்செய்வதற்கும், நமது கணக்கில் உள்நுழையவேண்டும். இதற்கென கணக்கின்பெயர், பயனர்பெயர், கடவுச்சொல், பல காரணிகள்கொண்ட அங்கீகாரமுறை ஆகியவற்றைப் பயன்படுத்துகிறோம். அதேபோல, நிரல்வழியாக எந்தவொரு அமேசான் சேவையைக்கான கிளையன்ட்டை உருவாக்குவதற்கும், நமது அடையாளத்தை நிறுவவேண்டும். இதற்கு அணுக்கத்திறப்பும் (access key), ரகசியத்திறப்பும் (secret key) பயன்படுகின்றன. இவற்றை பயனர்பெயருக்கும், கடவுச்சொல்லுக்கும் இணையாகக்கருதலாம்.

முதலில் இவற்றைப்பயன்படுத்தி, ஓர் அடிப்படைச் சான்றினை உருவாக்கவேண்டும். பின்னர், அச்சான்றினையும், பிராந்தியத்தையும் பயன்படுத்தி, ஒரு கிளையன்ட்டை உருவாக்கலாம்.

ஒரு கொள்கலனை உருவாக்குவதற்கான கோரிக்கையை உருவாக்கவேண்டும். நாம் முன்னரே அறிந்ததுபோல, கொள்கலனின் பெயர், எந்த பிராந்தியத்தில் உருவாக்கவேண்டும் ஆகியவற்றை, PutBucketRequest என்ற பெயர்கொண்ட கோரிக்கையில் அனுப்பவேண்டும்.

var request = new PutBucketRequest()
                {
                    BucketName = bucketName,
                    CannedACL = S3CannedACL.PublicRead,
                    UseClientRegion = true
                };

இங்கே, CannedACL என்பது, அக்கொள்கலனின் அணுக்கக்கட்டுப்பாட்டை நிர்ணயிக்க உதவுகிறது. இங்கே S3CannedACL.PublicRead என்ற மதிப்பைப் பயன்படுத்தியிருப்பதால், பொதுவெளியில், அனைவராலும் அணுகமுடியும் என அறிவித்துள்ளோம்.

UseClientRegion என்ற தரவிடத்தின் (field / property) மதிப்பை true என வைப்பதன் மூலம், நாம் கிளையன்ட்டினுடைய பிராந்தியத்திலேயே கொள்கலனையும் உருவாக்கச்சொல்கிறோம். ஒருவேளை, வேறொரு பிராந்தியத்தில் கொள்கலனை உருவாக்கவேண்டுமென்றால், Region என்ற தரவிடத்தில் அதற்கான மதிப்பை இடவேண்டும்.

அடுத்ததாக, கிளையன்ட்டைப் பயன்படுத்தி, கோரிக்கையை அனுப்பவேண்டும்.

var result = await client.PutBucketAsync(request);
return result.HttpStatusCode == HttpStatusCode.OK;

இதற்கு, கிளையன்ட்டிலுள்ள PutBucketAsync என்ற செயற்கூற்றைப் பயன்படுத்தவேண்டும். இச்செயற்கூறு, நமது கோரிக்கையை அமேசானுக்கு அனுப்பி, அதற்கேற்றவொரு பதிலைப் (response) பெற்றுத்தரும். அப்பதிலின் நிலைக்குறியீட்டை (statuscode) வைத்து, வெற்றிகரமாக கொள்கலன் உருவாக்கப்பட்டதா, இல்லையா என அறிந்துகொள்ளலாம்.

இங்கே விதிமீறல்களையும் (exception) நாம் கையாளவேண்டும். எடுத்துக்காட்டாக, கொள்கலனின் பெயரைத் தேர்ந்தெடுக்கும்போது, அதன்விதிகளில் ஒன்றைப் பின்பற்றாமல் விட்டுவிட்டோம் என்றால், நமது கோரிக்கை நிராகரிக்கப்படும். InvalidBucketName என்ற விதிமீறலைக் கிளையன்ட் வெளியிடும். இதுபோன்ற விதிமீறல்களையும் பின்வருமாறு கையாளலாம்.

try
{
      var result = await client.PutBucketAsync(request);
      return result.HttpStatusCode == HttpStatusCode.OK;
}
catch (AmazonS3Exception e)
{
      return false;
}

இப்போது, ஒரு கொள்கலனை உருவாக்குவதற்கான செயற்கூறு நம்மிடம் உள்ளது. இதனை, ஒரு சோதனைச் செயற்கூற்றிலிருந்தோ, கட்டளைச் செயலியின் முதன்மைச் செயற்கூற்றிலிருந்தோ, இயக்கினால், நமக்கான கொள்கலன் உருவாக்கப்படும். எ.கா:

var bucketManager = new AmazonS3BucketManager();
const string bucketName = "kaniyam-s3-demo-bucket";
var createBucketTask = bucketManager.CreateBucket(bucketName);
Console.WriteLine($”Bucket creation {createBucketResult.Result ? “success” : “failure” }”);

இதனை இயக்கும்போது, “Bucket creation success” என்ற மதிப்பைப் பெறுகிறோம். மேலும், கொள்கலன் உருவாக்கப்பட்டதை, வலைத்தளத்தின் வாயிலாகவும் உறுதிசெய்துகொள்ளலாம்.

 

%d bloggers like this: