IBM Cloud Docs
Utilización de la CLI de AWS

Utilización de la CLI de AWS

La interfaz de línea de mandatos oficial para AWS es compatible con la API de IBM Cloud® Object Storage S3.

Escrita en Python, se puede instalar desde Python Package Index con pip install awscli. De forma predeterminada, las claves de acceso se obtienen de ~/.aws/credentials, pero también se pueden establecer como variables de entorno.

Estos ejemplos se han generado con la versión 1.14.2 de la CLI. Para comprobar la versión instalada, ejecute aws --version.

Configuración de la CLI para que se conecte a Object Storage

Para configurar la CLI de AWS, escriba aws configure. Especifique sus credenciales de HMAC y un nombre de región predeterminado. El "nombre de región" que utiliza AWS S3 corresponde al código (LocationConstraint) que utiliza Object Storage para definir la clase de almacenamiento.

Puede consultar la lista de códigos válidos para LocationConstraint en la guía de Storage Classes.

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

Esto crea dos archivos:

~/.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

También puede utilizar variables de entorno para establecer las credenciales de HMAC:

export AWS_ACCESS_KEY_ID="{Access Key ID}"
export AWS_SECRET_ACCESS_KEY="{Secret Access Key}"

El punto final de IBM COS se debe obtener con la opción --endpoint-url y no se puede establecer en el archivo de credenciales.

Mandatos de sintaxis de alto nivel

Los casos de uso simples se pueden llevar a cabo utilizando aws --endpoint-url {endpoint} s3 <command>. Para obtener más información sobre puntos finales, consulte Puntos finales y ubicaciones de almacenamiento. Los objetos se gestionan mediante mandatos de shell conocidos, como por ejemplo ls, mv, cp y rm. Los grupos se pueden crear con mb y se pueden suprimir con rb.

Obtención de una lista de todos los grupos dentro de una instancia de servicio

aws --endpoint-url {endpoint} s3 ls
2016-09-09 12:48  s3://bucket-1
2016-09-16 21:29  s3://bucket-2

Obtención de una lista de los objetos contenidos en un grupo

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

Creación de un nuevo grupo

Nota: Información de identificación personal (PII): al nombrar grupos u objetos, no utilice ninguna información que pueda identificar a cualquier usuario (persona física) por nombre, ubicación o cualquier otro medio.

Si la región predeterminada en el archivo ~/.aws/config corresponde a la misma ubicación que el punto final elegido, la creación de grupos es sencilla.

aws --endpoint-url {endpoint} s3 mb s3://bucket-1
make_bucket: s3://bucket-1/

Adición de un objeto a un grupo

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

También puede definir una nueva clave de objeto distinta del nombre de archivo:

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

Copia de un objeto de un grupo en otro dentro de la misma región:

$ 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

Supresión de un objeto de un grupo

aws --endpoint-url {endpoint} s3 rm s3://mybucket/argparse-1.2.1.tar.gz
delete: s3://mybucket/argparse-1.2.1.tar.gz

Eliminación de un grupo

aws --endpoint-url {endpoint} s3 rb s3://bucket-1
remove_bucket: s3://bucket-1/

Crear URL prefirmados

La CLI también puede crear URL prefirmados. Estos URL permiten el acceso público temporal a los objetos sin tener que cambiar ninguno de los controles de acceso existentes.

$ aws --endpoint-url {endpoint} s3 presign s3://bucket-1/new-file

También se puede establecer un tiempo de vida para el URL en segundos (el valor predeterminado es 3600):

$ aws --endpoint-url {endpoint} s3 presign s3://bucket-1/new-file --expires-in 600

Mandatos de sintaxis de bajo nivel

La CLI de AWS también permite llamadas de API directas que proporcionan las mismas respuestas que las solicitudes HTTP directas mediante el mandato s3api.

Obtención de una lista de grupos:

$ 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"
        }
    ]
}

Obtención de una lista de los objetos contenidos en un grupo

$ 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
        }
    ]
}

Configurar un sitio web estático

aws --endpoint-url=https://<endpoint> s3 website s3://<bucketname>/ --index-document index.html --error-document error.html

Próximos pasos

La descripción detallada de la API RESTful para IBM Cloud Object Storage se puede encontrar en la documentación de la API de compatibilidad deS3 o en la documentación de la API de configuración.