Utilisation de l'interface CLI AWS
L'interface de ligne de commande officielle pour AWS est compatible avec l'API S3 IBM Cloud® Object Storage.
Ecrite en Python, elle peut être installée à partir de Python Package Index via la commande pip install awscli
. Par défaut, les clés d'accès sont sourcées à partir de ~/.aws/credentials
, mais peuvent aussi être définies
en tant que variables d'environnement.
Ces exemples ont été générés à l'aide de la version 1.14.2 de l'interface de ligne de commande. Pour vérifier la version installée, exécutez la commande aws --version
.
Configuration de l'interface CLI pour établir une connexion à Object Storage
Pour configurer l'interface CLI AWS, entrez aws configure
. Indiquez vos données d'identification HMAC et un nom de région par défaut.
La valeur de "region name" utilisée par AWS S3 correspond au code (LocationConstraint
) utilisé par Object Storage pour définir une classe de stockage.
Une liste de codes valides pour LocationConstraint
peut être référencée dans le guide sur les classes de stockage.
aws configure
AWS Access Key ID [None]: {Access Key ID}
AWS Secret Access Key [None]: {Secret Access Key}
Default region name [None]: {Provisioning Code}
Default output format [None]: json
Cela permet de créer deux fichiers :
~/.aws/credentials
:
[default]
aws_access_key_id = {Access Key ID}
aws_secret_access_key = {Secret Access Key}
~/.aws/config
:
[default]
region = {Provisioning Code}
output = json
Vous pouvez également utiliser des variables d'environnement pour définir des données d'identification HMAC :
export AWS_ACCESS_KEY_ID="{Access Key ID}"
export AWS_SECRET_ACCESS_KEY="{Secret Access Key}"
Le noeud final IBM COS doit être sourcé en utilisant l'option --endpoint-url
et ne peut pas être défini dans le fichier de données d'identification.
Commandes de syntaxe de haut niveau
Les cas d'utilisation simples peuvent être réalisés à l'aide de aws --endpoint-url {endpoint} s3 <command>
. Pour plus d'informations sur les noeuds finaux, voir Noeuds finaux et emplacements de stockage.
Les objets sont gérés à l'aide de commandes shell bien connues, telles que ls
, mv
, cp
et rm
. Les compartiments peuvent être créés en utilisant mb
et supprimés en utilisant rb
.
Création de la liste de tous les compartiments contenus dans une instance de service
aws --endpoint-url {endpoint} s3 ls
2016-09-09 12:48 s3://bucket-1
2016-09-16 21:29 s3://bucket-2
Création de la liste des objets contenus dans un compartiment
aws --endpoint-url {endpoint} s3 ls s3://bucket-1
2016-09-28 15:36 837 s3://bucket-1/c1ca2-filename-00001
2016-09-09 12:49 533 s3://bucket-1/c9872-filename-00002
2016-09-28 15:36 14476 s3://bucket-1/98837-filename-00003
2016-09-29 16:24 20950 s3://bucket-1/abfc4-filename-00004
Création d'un nouveau compartiment
Remarque: informations identifiant la personne (PII): Lorsque vous nommez des compartiments ou des objets, n'utilisez pas d'informations pouvant identifier un utilisateur (personne physique) par son nom, son emplacement ou tout autre moyen.
Si la région par défaut dans le fichier ~/.aws/config
correspond au même emplacement que le noeud final choisi, la création de compartiment est simple.
aws --endpoint-url {endpoint} s3 mb s3://bucket-1
make_bucket: s3://bucket-1/
Ajout d'un objet à un compartiment
aws --endpoint-url {endpoint} s3 cp large-dataset.tar.gz s3://bucket-1
upload: ./large-dataset.tar.gz to s3://bucket-1/large-dataset.tar.gz
Vous pouvez également définir une nouvelle clé d'objet qui est différente du nom de fichier :
aws --endpoint-url {endpoint} s3 cp large-dataset.tar.gz s3://bucket-1/large-dataset-for-project-x
upload: ./large-dataset.tar.gz to s3://bucket-1/large-dataset-for-project-x
Copie d'un objet à partir d'un compartiment vers un autre compartiment situé dans la même région
$ aws --endpoint-url {endpoint} s3 cp s3://bucket-1/new-file s3://bucket-2/
copy: s3://bucket-1/new-file to s3://bucket-2/new-file
Supprimer un objet d'un compartiment
aws --endpoint-url {endpoint} s3 rm s3://mybucket/argparse-1.2.1.tar.gz
delete: s3://mybucket/argparse-1.2.1.tar.gz
Retrait d'un compartiment
aws --endpoint-url {endpoint} s3 rb s3://bucket-1
remove_bucket: s3://bucket-1/
Créer des URL présignées
L'interface de ligne de commande peut créer des URL présignées. Ces URL permettent un accès public temporaire aux objets sans modifier les contrôles d'accès existants.
$ aws --endpoint-url {endpoint} s3 presign s3://bucket-1/new-file
Il est également possible de définir une durée de vie pour l'URL (la valeur par défaut est 3600 secondes) :
$ aws --endpoint-url {endpoint} s3 presign s3://bucket-1/new-file --expires-in 600
Commandes de syntaxe de bas niveau
L'interface CLI AWS permet également d'émettre des appels d'API directs qui fournissent les mêmes réponses que les demandes HTTP directes à l'aide de la commande s3api
.
Création de la liste de compartiments :
$ aws --endpoint-url {endpoint} s3api list-buckets
{
"Owner": {
"DisplayName": "{storage-account-uuid}",
"ID": "{storage-account-uuid}"
},
"Buckets": [
{
"CreationDate": "2016-09-09T12:48:52.442Z",
"Name": "bucket-1"
},
{
"CreationDate": "2016-09-16T21:29:00.912Z",
"Name": "bucket-2"
}
]
}
Création de la liste des objets contenus dans un compartiment
$ aws --endpoint-url {endpoint} s3api list-objects --bucket bucket-1
{
"Contents": [
{
"LastModified": "2016-09-28T15:36:56.807Z",
"ETag": "\"13d567d518c650414c50a81805fff7f2\"",
"StorageClass": "STANDARD",
"Key": "c1ca2-filename-00001",
"Owner": {
"DisplayName": "{storage-account-uuid}",
"ID": "{storage-account-uuid}"
},
"Size": 837
},
{
"LastModified": "2016-09-09T12:49:58.018Z",
"ETag": "\"3ca744fa96cb95e92081708887f63de5\"",
"StorageClass": "STANDARD",
"Key": "c9872-filename-00002",
"Owner": {
"DisplayName": "{storage-account-uuid}",
"ID": "{storage-account-uuid}"
},
"Size": 533
},
{
"LastModified": "2016-09-28T15:36:17.573Z",
"ETag": "\"a54ed08bcb07c28f89f4b14ff54ce5b7\"",
"StorageClass": "STANDARD",
"Key": "98837-filename-00003",
"Owner": {
"DisplayName": "{storage-account-uuid}",
"ID": "{storage-account-uuid}"
},
"Size": 14476
},
{
"LastModified": "2016-10-06T14:46:26.923Z",
"ETag": "\"2bcc8ee6bc1e4b8cd2f9a1d61d817ed2\"",
"StorageClass": "STANDARD",
"Key": "abfc4-filename-00004",
"Owner": {
"DisplayName": "{storage-account-uuid}",
"ID": "{storage-account-uuid}"
},
"Size": 20950
}
]
}
Configurer un site Web statique
aws --endpoint-url=https://<endpoint> s3 website s3://<bucketname>/ --index-document index.html --error-document error.html
Etapes suivantes
La description détaillée de l'API RESTful pour IBM Cloud Object Storage est disponible dans la documentation de l'API de compatibilitéS3 ou dans la documentation de l'API de configuration.