ECS: Como configurar e usar a AWS CLI do S3

Summary: Ao usar a AWS CLI para testar o cenário do cliente em que ele está usando a AWS CLI com o ECS para confirmar a funcionalidade e a compatibilidade, sempre consulte o Guia de acesso a dados do ECS para chamadas de API compatíveis com o ECS AWS S3. ...

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Instructions

A AWS Command-Line Interface (AWS CLI) é uma ferramenta da AWS que pode ser usada para testar comandos de alto nível do S3 e comandos de alto nível da API do S3 (s3api)

de alto nível da AWS (link externo) dão suporte a operações comuns de bucket, como criação, listagem e exclusão de buckets. Como fazer download e instalar a ferramenta, todos os comandos de alto nível compatíveis podem ser obtidos no conjunto de comandos usando o comando aws s3api help.

S3Uri: Representa a localização de um objeto, prefixo ou bucket do S3 — deve ser escrito no formato s3://mybucket/mykey em que mybucket é t especificado bucket do S3, mykey é a chave S3 especificada. O argumento path deve começar com s3://

Os comandos do AWS s3api (link externo) no nível da API estão contidos no conjunto de recomendações do s3api. Esses comandos da API do S3 fornecem acesso a metadados de bucket, como ACL de bucket, política de bucket, políticas de ciclo de vida, entre outros. Todas as chamadas de API compatíveis podem ser obtidas no conjunto de comandos usando o comando aws s3api help.

  • Por padrão, a AWS CLI usa automaticamente até 10 threads para fazer upload de arquivos ou partes durante os uploads
  • A AWS CLI usa automaticamente uploads de multipart_threshold para arquivos >= tamanho de arquivo de 8 MB, multipart_chunksize

Instruções de download e instalação.

  1. Versões de versão https://github.com/aws/aws-cli/releases (Link externo)
  2. Fazer download e instalar o pacote da AWS CLI
# curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
  1. Extrair pacote
# unzip awscli-bundle.zip
  1. Execute o comando de instalação
# sudo /awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
  1. Confirmar versão
# aws version
Output:
      aws-cli/2.0.33 Python/3.7.3 Linux/4.15.0-109-generic botocore/2.0.0dev37

Configuração da AWS CLI

Esta seção explica as etapas básicas para configurar a AWS CLI para uso com o ECS S3, usando o usuário de objeto do ECS. Esta seção pressupõe que o bucket e o usuário de objeto já foram criados no ECS. As credenciais e o arquivo de configuração são atualizados quando você executa o comando aws configure.

O arquivo de credenciais está localizado aqui ~/.aws/credentials. O arquivo de credenciais armazena detalhes do perfil do usuário (ID da chave de acesso e chaves de acesso secretas), o arquivo de configuração armazena detalhes do formato de saída e região.

Necessário:
  • ID da chave de acesso: Usuário de objeto do ECS
  • Chave de acesso secreta: Chave secreta
Etapas:
  1. Este exemplo cria um nome de perfil mc_s3
# aws configure --profile mc_s3
Prompt:

    AWS Access Key ID [None]: mc_s3
    AWS Secret Access Key [None]: 1guFemRLSgqFau6uKzIVAZJu5+PS+S8qO7rvEsi7
    Default region name [None]: 
    Default output format [None]: json
  1. Listar perfis todos os perfis (list-properties disponíveis na AWS CLI v2
# aws configure list-properties
Output:
    mc_s3
    ad_uid1
# aws configure list
Output:
		  Name                    Value             Type    Location
		  ----                    -----             ----    --------
	   profile                <not set>             None    None
	access_key     ****************c_s3 shared-credentials-file    
	secret_key     ****************Esi7 shared-credentials-file    
		region                               config-file    ~/.aws/config
  1. Perfil específico da lista
# aws configure get aws_access_key_id --profile mc_s3
Output:
      mc_s3
Dealing with SSL connections and error on self signed certificate.  ( [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1056))
  1. Se estiver usando comandos no 9021, opção AWS CLI --no-verify-ssl é necessário para ignorar o erro do certificado autoassinado.
# aws --profile mc_s3 --endpoint=https://ecshop:9021 s3api list-buckets
Output:
     SSL validation failed for https://ecshop:9021/mc_s3_bkt?acl [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1056)
  • Execute o comando com --no-verify Opção para ignorar este erro
# aws --profile mc_s3 --endpoint=https://ecshop:9021 s3api list-buckets --no-verify-ssl --output text
Output:
      
    /usr/local/aws-cli/v2/2.0.33/dist/urllib3/connectionpool.py:986: InsecureRequestWarning: Unverified HTTPS request is being made to host 'ecshop'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings

    BUCKETS 2020-02-24T21:24:29.440000+00:00        mc_s3_bkt
    BUCKETS 2020-05-06T17:23:48.870000+00:00        mc_s3_bkt2_backup
    BUCKETS 2020-05-06T21:16:13.344000+00:00        mc_s3_bkt_nfs
    OWNER   mc_s3   mc_s3
  • A segunda opção seria fazer download do certificado autoassinado do ECS salvo no formato PEM e usar o --ca-bundle opção
  • Use o OpenSSL para obter o certificado do ECS para acesso a dados de objeto na porta 9021 e copie o conteúdo do certificado usando seu editor favorito e salve, incluindo cabeçalhos de certificado, conforme o exemplo abaixo.
# openssl s_client -connect ecshop:9021
Em que ecshop é o IP ou nome de host dos nós do ECS e xxxxxx deve ser todo o certificado em seu ambiente.
Output:

    -----BEGIN CERTIFICATE----- 
    Xxxxxxxxx
    xxxxxxxxx
    ...
    ...
    -----END CERTIFICATE-----
  1. Listar buckets na tabela Human friendly com a opção ca-bundle em que o certificado é salvo no nome do arquivo PEM ecshop_cert_pem 
# aws --profile mc_s3 --endpoint=https://ecshop:9021 s3api list-buckets  --ca-bundle ecshop_cert.pem  --output table
Output:
    -------------------------------------------------------------
    |                        ListBuckets                        |
    +-----------------------------------------------------------+
    ||                         Buckets                         ||
    |+-----------------------------------+---------------------+|
    ||           CreationDate            |        Name         ||
    |+-----------------------------------+---------------------+|
    ||  2020-02-24T21:24:29.440000+00:00 |  mc_s3_bkt          ||
    ||  2020-05-06T17:23:48.870000+00:00 |  mc_s3_bkt2_backup  ||
    ||  2020-05-06T21:16:13.344000+00:00 |  mc_s3_bkt_nfs      ||
    |+-----------------------------------+---------------------+|
    ||                          Owner                          ||
    |+-----------------------------------+---------------------+|
    ||            DisplayName            |         ID          ||
    |+-----------------------------------+---------------------+|
    ||  mc_s3                            |  mc_s3              ||
    |+-----------------------------------+---------------------+|

Operações básicas do S3

https://docs.aws.amazon.com/cli/latest/userguide/cli-services-s3-commands.html (Link externo)
Ajuste de desempenho
  • max_concurrent_requests — O número máximo de solicitações simultâneas
  • max_queue_size - O número máximo de tarefas na fila de tarefas
  • multipart_threshold - O limite de tamanho que a CLI usa para transferências de várias partes de arquivos individuais.
  • multipart_chunksize - Ao usar transferências de várias partes, esse é o tamanho do fragmento que a CLI usa para transferências de várias partes de arquivos individuais.
  • max_bandwidth — a largura de banda máxima consumida para carregar e fazer download de dados de e para o Amazon S3.
Salvo no arquivo de configuração como exemplo:
# cat .aws/config
Output:
    [profile mc_s3]
    output = json
    s3 =
            endpoint_url = http://ecshop:9020

              max_concurrent_requests = 20
              max_queue_size = 1000
              multipart_threshold = 64MB
              multipart_chunksize = 16MB
              max_bandwidth = 50MB/s
              addressing_style = auto 
O uso do comando aws configure set Comando para definir parâmetros para ajustar as velocidades de carregamento
$ aws configure set default.s3.max_concurrent_requests 20
$ aws configure set default.s3.max_queue_size 10000
$ aws configure set default.s3.multipart_threshold 64MB
$ aws configure set default.s3.multipart_chunksize 16MB
$ aws configure set default.s3.max_bandwidth 50MB/s
$ aws configure set default.s3.addressing_style auto
Etapas: 
  1. Criar bucket usando s3 mb .
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 mb s3://s3_bkt
Output:
    make_bucket: s3_bkt
  1. Listar buckets usando s3 ls e s3api list-buckets conjuntos de comandos listam buckets para quaisquer outras operações (referidas no S3 como "prefixos") (Link externo) em um bucket
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 ls
Output:
   2020-07-29 20:34:24 s3_bkt

  #  aws --profile mc_s3 --endpoint http://ecshop:9020 s3api list-buckets
#  aws --profile mc_s3 --endpoint http://ecshop:9020 s3api list-buckets
Output:		
	 aws --profile mc_s3 --endpoint http://ecshop:9020 s3api list-buckets
	{
		"Buckets": [
			{
				"Name": "mc_s3_bkt",
				"CreationDate": "2020-02-24T21:24:29.440000+00:00"
			},
			{
				"Name": "mc_s3_bkt2_backup",
				"CreationDate": "2020-05-06T17:23:48.870000+00:00"
			},
			{
				"Name": "mc_s3_bkt_nfs",
				"CreationDate": "2020-05-06T21:16:13.344000+00:00"
			},
			{
				"Name": "s3_bkt",
				"CreationDate": "2020-07-30T00:34:24.147000+00:00"
			},
  1.  Criando e carregando arquivos para teste 
  • Exemplo de criação de arquivos de 1 MB e 4 MB
# dd if=/dev/zero of=1MB_output.file bs=1024 count=1024
# dd if=/dev/zero of=4MB_output.file bs=1024 count=4096
  • Exemplo de criação de arquivo grande de 2 GB
# dd if=/dev/urandom of=bigfile_2GB bs=1024k count=2048
  • Carregar arquivo de 1 MB no bucket s3_bkt
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 cp 1MB_output.file s3://s3_bkt
Output:
    upload: ./1MB_output.file to s3://s3_bkt/1MB_output.file
  1. Listar arquivos no bucket, s3_bkt Usando o nome do perfil mc_s3 Usando s3 ls, ou s3api list-objects Conjuntos de comandos 
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 ls s3://s3_bkt
Output:
2020-07-29 20:39:43   16.0 MiB 16MB_output.file
2020-07-29 20:37:25    1.0 MiB 1MB_output.file
2020-07-29 20:39:23    4.0 MiB 4MB_output.file
 # aws --profile mc_s3 --endpoint http://ecshop:9020 s3api list-objects --bucket s3_bkt
Output:
	{
		"Contents": [
			{
				"Key": "16MB_output.file",
				"LastModified": "2020-07-30T00:39:43.125000+00:00",
				"ETag": "\"3a2d20e2e504fe056bbaae5b4c2351fd-2\"",
				"Size": 16777216,
				"StorageClass": "STANDARD",
				"Owner": {
					"DisplayName": "mc_s3",
					"ID": "mc_s3"
				}
			},
			{
				"Key": "1MB_output.file",
				"LastModified": "2020-07-30T00:37:25.033000+00:00",
				"ETag": "\"b6d81b360a5672d80c27430f39153e2c\"",
				"Size": 1048576,
				"StorageClass": "STANDARD",
				"Owner": {
					"DisplayName": "mc_s3",
					"ID": "mc_s3"
				}
			},
  1. Listar versões de objeto
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api list-object-versions --bucket s3_bkt --output text
  1. Faça download do arquivo, 1MB_output.file de s3_bkt para o diretório /tmp na máquina local.
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 cp s3://s3_bkt/1MB_output.file /tmp/
Output:
     download: s3://s3_bkt/1MB_output.file to ../../tmp/1MB_output.file
  1. Verifique a ACL de um arquivo 1MB_output.file no formato YAML para obter saída para facilitar a leitura
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api get-object-acl --bucket s3_bkt --key 1MB_output.file  --output yaml
Output:
        
    Grants:
    - Grantee:
        DisplayName: mc_s3
        ID: mc_s3
        Type: CanonicalUser
      Permission: FULL_CONTROL
    Owner:
      DisplayName: mc_s3
      ID: mc_s3
  1. Verificar a ACL do bucket no bucket s3_bkt
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api get-bucket-acl --bucket s3_bkt --output yaml
Output:      
    Grants:
    - Grantee:
        DisplayName: mc_s3
        ID: mc_s3
        Type: CanonicalUser
      Permission: FULL_CONTROL
    Owner:
      DisplayName: mc_s3
      ID: mc_s3
  1. Verifique a versão do bucket ou ative o controle de versões no bucket
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api get-bucket-versioning --bucket s3_bkt
Output:

    {
        "Status": "Enabled"
    }
  1. Inicie o upload de várias partes usando o nível da API s3api com um arquivo grande 
  1. Crie um arquivo de 5 GB:
# time dd if=/dev/urandom of=bigfile_5GB bs=1024k count=5096
  1. Iniciar upload
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api create-multipart-upload --bucket s3_bkt --key bigfile_5GB
Output:

    {
        "Bucket": "s3_bkt",
        "Key": "bigfile_5GB",
        "UploadId": "27cb6c45ab5c4c838fb5893263d871d3"
    }
  1. Listar uploads incompletos de arquivos de várias partes https://aws.amazon.com/premiumsupport/knowledge-center/s3-multipart-upload-cli/ (Link externo)
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api list-multipart-uploads --bucket s3_bkt
Output:

	{
	    "Uploads": [
	        {
	            "UploadId": "27cb6c45ab5c4c838fb5893263d871d3",
	            "Key": "bigfile_5GB",
	            "Initiated": "2020-07-31T01:10:56.323000+00:00",
	            "StorageClass": "STANDARD",
	            "Owner": {
	                "DisplayName": "mc_s3",
	                "ID": "mc_s3"
	            }
	        }
	    ]
	}
  1. Melhorar s3 cp Recomendações de desempenho de comando ou bucket para bucket para arquivos grandes a fim de iniciar uploads de várias partes e alterar threads simultâneos, veja acima em Ajuste de desempenho.
  1. Execute bucket to bucket copy para copiar file.txt em mc_s3_bkt para s3_bkt usando a API do S3 
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api copy-object --copy-source mc_s3_bkt/file.txt --key file.txt --bucket s3_bkt
Output:
{
    "VersionId": "1596159769267",
    "CopyObjectResult": {
        "ETag": "\"c789e490a90359de2bd3b09d7e957cfd-128\"",
        "LastModified": "2020-07-31T01:42:49.267000+00:00"
    }
}
  1. Listar arquivos (objetos ou chaves) em um bucket 
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 ls s3://s3_bkt/file.txt --human-readable  summarize
Output:
      2020-07-30 21:42:49    1.0 GiB file.txt
  1. Copiando um arquivo de S3_bkt para mc_s3_bkt Usando o conjunto de comandos de alto nível do S3 CP
O seguinte comando cp copia um único objeto do s3 para um bucket e uma chave especificados:
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 cp s3://s3_bkt/file.txt s3://mc_s3_bkt/file2.txt
       Output:
         copy: s3://s3_bkt/file.txt to s3://mc_s3_bkt/file2.txt
  1. Verifique se o controle de versão está ativado no bucket s3_bkt
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api get-bucket-versioning --bucket s3_bkt
Output: 

      {
          "Status": "Enabled"
      }
  1. Excluir bucket usando s3 rb Command (o comando não tem saída)
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 rm s3://s3_bkt2
  1. O exemplo a seguir exclui todos os objetos e subpastas do bucket e, em seguida, remove o bucket. (se o controle de versão estiver ativado, esse comando não removerá os objetos da versão (analise LDS, políticas de ciclo de vida)
# aws s3 rb s3://bucket-name --force
  1. Habilitar o controle de versões no bucket s3_bkt usando o conjunto de comandos no nível da API do s3api (o comando não gerou)
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api put-bucket-versioning --bucket s3_bkt --versioning-configuration Status=Enabled 
  1. Aplicando a política de ciclo de vida Gerar modelo (Consulte o Guia de Acesso a Dados do ECS) A AWS CLI requer o formato json para a política de ciclo de vida
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api put-bucket-lifecycle-configuration --generate-cli-skeleton input --bucket s3_bkt
  1. Aplicar a política de vida útil do bucket no bucket. Para obter mais detalhes, consulte o Guia de Acesso a Dados do ECS
Criar política para AbortIncompleteMultipartUpload, NoncurrentVersionExpiration, and ExpiredObjectDeleteMarker and NoncurrentDays para expirar após 7 dias.
#  aws --profile mc_s3 --endpoint http://ecshop:9020 s3api put-bucket-lifecycle --bucket s3_bkt --lifecycle-configuration file://s3_bkt_lifecycle.json
Output:

{
   "Rules": [
   {
      "ID": "expire-non-current-and-dmarkers-and-mpu",
      "Status": "Enabled",
      "Prefix": "/",
      "Expiration": {
         "ExpiredObjectDeleteMarker": true
      },
      "AbortIncompleteMultipartUpload": {
         "DaysAfterInitiation": 7
      },
      "NoncurrentVersionExpiration": {
         "NoncurrentDays": 7
      }
   }
   ]
}
  1. Política de ciclo de vida GET
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api get-bucket-lifecycle --bucket s3_bkt
Output:

{
    "Rules": [
        {
            "Expiration": {
                "Days": 10
            },
            "ID": "DeleteVersion-musa",
            "Prefix": "",
            "Status": "Enabled",
            "NoncurrentVersionExpiration": {
                "NoncurrentDays": 10
            }
        }
    ]
}
  1. Marcação de objetos usando par de chave-valor 
  1. Grave um arquivo. 
$ aws s3 cp file.txt s3://mc_s3_bkt/aws/tag.txt  --profile mc_s3_emea --endpoint  http://emea:9020
upload: ./file.txt to s3://mc_s3_bkt/aws/tag.txt
  1. Adicionar tag (esse comando não terá saída se bem-sucedido. 
    Comando de linha única:
$ aws s3api put-object-tagging --profile mc_s3_emea --bucket mc_s3_bkt --key aws/tag.txt --tagging '{"TagSet": [{ "Key": "Product", "Value": "ECS" }]}' --endpoint-url http://emea:9020

Copiar e colar várias linhas: 

$ aws s3api put-object-tagging \
	 --profile mc_s3_emea \
     --bucket mc_s3_bkt \
     --key aws/tag.txt \
     --tagging '{"TagSet": [{ "Key": "Product", "Value": "ECS" }]}' \
    --endpoint-url http://emea:9020
  1. Obtenha a etiqueta do objeto.
$ aws s3api get-object-tagging --profile mc_s3_emea --bucket mc_s3_bkt --key aws/tag.txt --endpoint http://emea:9020

{
    "TagSet": [
        {
            "Key": "Product",
            "Value": "ECS"
        }
    ]
}
  1. Adicionando vários valores de tags 'key:value' - forma abreviada
$ aws s3api put-object-tagging --profile mc_s3_emea --bucket mc_s3_bkt --key aws/tag5.txt --tagging '{"TagSet": [{ "Key": "Product", "Value": "ECS 3.6.1.2" },{"Key": "Company", "Value": "Dell Technologies"}]}' --endpoint-url http://emea:9020
  1. Obtenha a etiqueta do objeto.
$ aws s3api get-object-tagging --profile mc_s3_emea --bucket mc_s3_bkt --key aws/tag5.txt
{
    "TagSet": [
        {
            "Key": "Product",
            "Value": "ECS 3.6.1.2"
        },
        {
            "Key": "Company",
            "Value": "Dell Technologies"
        }
    ]
}
  1. Bloqueio de objeto do S3
O ECS permite que você armazene objetos usando um modelo WORM (write-once-read-many) por meio do bloqueio de objeto do S3. Esse recurso impede que objetos sejam excluídos ou substituídos por um período especificado ou indefinidamente.
 
Nota:
  • O recurso ECS S3 Object Lock é compatível apenas com os buckets habilitados para controle de versão.
  • Não há nenhuma interface do usuário do ECS para bloqueio de objeto. Ele pode ser acessado por meio de APIs de bloqueio de objetos do ECS.
  • Os objetos bloqueados são protegidos contra exclusões do ciclo de vida
  • O bucket não pode ser ativado para o file system
  • O bloqueio de objetos funciona com usuários do IAM e não com usuários preexistentes 
  • Como habilitar o bloqueio de objeto no bucket, habilitar automaticamente o controle de versões 
  • Um patch será necessário se o ADO estiver ativado e a ser resolvido no ECS 3.7. Consulte o artigo ECS: Desativando o recurso de bloqueio de objeto no ECS for IBM Content Manager


Para definir um bloqueio de objeto em um bucket.
Use a opção put-object-lock-configuration é usada com a CLI da AWS.

Consulte: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-overview.html
put-object-lock-configuration — AWS CLI 1.22.24 Command Reference (amazon.com) (Link externo)

  • Para definir uma configuração de bloqueio de objeto em um bucket
The following put-object-lock-configuration example sets a 1-day object lock on the specified bucket.

$ aws s3api put-object-lock-configuration \
	--profile iam1 \
    --bucket iam-bucket \
    --object-lock-configuration '{ "ObjectLockEnabled": "Enabled", "Rule": { "DefaultRetention": { "Mode": "COMPLIANCE", "Days": 1 }}}'

Esse comando não produz resultados.

  • put-object-legal-hold
$ aws s3api put-object-legal-hold --endpoint http://<hostname>:<port_number> --profile iam1 --bucket iam-bucket --key file1.txt --legal-hold "Status=ON"
where:
	--profile: name of profile is profile confirmed in .aws credentials file
	--bucket: Bucket name
	--key: Object name
	--legal-hold: ON or OFF
	--version-id: specifies the version id of the object for Versioned 
	--endpoint: ECS IP and port 9020 or 90201
  • get-object-legal-hold
$ aws s3api get-object-legal-hold --endpoint http://<hostname>:<port_number> --profile iam1 --bucket iam-bucket --key file1.txt
where:
	--bucket: Bucket name
	--key: Object name
	--version-id: specifies the version id of the object
	--endpoint: ECS IP and port 9020 or 90201

Affected Products

Elastic Cloud Storage

Products

ECS Appliance, ECS Appliance Hardware Series, ECS Appliance Software with Encryption, Elastic Cloud Storage
Article Properties
Article Number: 000020564
Article Type: How To
Last Modified: 02 Oct 2025
Version:  6
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.