Una Software Development Kit, spesso abbreviato con la sigla SDK, è una libreria che permette ad un programmatore di interfacciarsi con i servizi AWS tramite codice scritto in un linguaggio utilizzando delle specifiche API messe a disposizione. A differenza della CDK di AWS, che può essere usata solo per creare e configurare risorse, la SDK permette anche di interagire con i servizi, per esempio con le librerie SDK è possibile recuperare la lista di un bucket mentre con la CDK è possibile solo creare e distruggere uno storage S3. La libreria è documentata molto bene nel sito ufficiale e sono disponibili moltissimi esempi gratuiti che è possibile studiare nel repository ufficiale gratuito, gli usi più comuni sono lo sviluppo di applicazioni che interagiscono con i servizi nel Cloud sia come codice serverless tramite il servizio AWS Lambda Function sia come di applicazioni client.
Quando si usano le librerie di AWS (CDK e SDK) bisogna sempre ricordare che queste usano i profili configurati con la AWS-CLI: esattamente come per il comando CLI-SAM anche per la SDK viene usato il parametro di default se non specificato diversamente, se non c’è nessun profilo configurato queste librerie non sono utilizzabili, tuttavia è possibile impostare il profilo direttamente nel codice senza dover usare i profili CLI del sistema.
Per il linguaggio di programmazione Python la libreria SDK messa a disposizione da AWS è boto3, installabile grazie al gestore dei pacchetti pip:
pip install boto3
oppure nei sistemi Debian 12 è installabile con il pacchetto ufficiale:
apt-get install python3-boto3
#Elenco profili disponibili import boto3 lista_profili=boto3.session.Session().available_profiles for profilo in lista_profili: print(profilo) #Elenco bucket import boto3 s3 = boto3.resource('s3') for bucket in s3.buckets.all(): print(bucket.name)
Package names begin with software.amazon.awssdk in SDK 2.x, whereas the SDK 1.x uses com.amazonaws
Per iniziare a lavorare con SDK in Java è necessario configurare la libreria nel file di configurazione, aggiungendo i riferimenti al repository maven nel pom.xml con il tag:
<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.16.1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>auth</artifactId> </dependency> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>profiles</artifactId> </dependency>
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider; import software.amazon.awssdk.profiles.ProfileFile; import software.amazon.awssdk.profiles.ProfileFile.Type; ... public static ProfileFile loadCredentialsFromFile() throws FileNotFoundException { File configfile = new File(System.getProperty("user.home"), ".aws/credentials"); ProfileFile profileFile = ProfileFile.builder() .content(new FileInputStream(configfile)) .type(Type.CREDENTIALS).build(); return profileFile; } public static Set<String> loadProfilesFromFile() throws FileNotFoundException{ ProfileFile p=loadCredentialsFromFile(); return p.profiles().keySet(); } public static AwsCredentialsProvider loadCredentialFromFile() throws FileNotFoundException { return loadCredentialFromFile(DEFAULT_PROFILE); } public static AwsCredentialsProvider loadCredentialFromFile( String profileName) throws FileNotFoundException { ProfileFile p=loadCredentialsFromFile(); AwsCredentialsProvider profileProvider = ProfileCredentialsProvider.builder() .profileFile(p) .profileName(profileName) .build(); return profileProvider; } ...
Esattamente come per i servizi CloudFormation e CDK bisogna ricordare che la SDK è gratuita ma tutte le risorse gestite possono essere a pagamento e bisogna sempre prestare attenzione a quello che viene creato nel Cloud per evitare addebiti indesiderati.