ECS: Så konfigurerar och använder du S3 AWS CLI

Summary: När du använder AWS CLI för att testa kundscenarier där de använder AWS CLI med ECS för att bekräfta funktionalitet och kompatibilitet ska du alltid läsa ECS Data Access Guide för API-anrop som stöds av 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

AWS Command-Line Interface (AWS CLI) är ett verktyg från AWS som kan användas för att testa S3-kommandon på hög nivå och s3 API-Level (s3api)

Kommandon på hög nivå aws s3 (extern länk) stöder vanliga bucketåtgärder, till exempel att skapa, lista och ta bort bucketar. Hur man laddar ner och installerar verktyget, alla högnivåkommandon som stöds kan erhållas i kommandouppsättningen med kommandot aws s3api help. – Herr talman,

S3Uri: Representerar platsen för ett S3-objekt, prefix eller bucket – Detta måste skrivas i formuläret s3://mybucket/mykey där detta mybucket är t specificerad S3-hink, mykey är den angivna S3-tangenten. Argumentet sökväg måste börja med s3://

Kommandon på API-nivå aws s3api (Extern länk) finns i s3api-rekommendationsuppsättningen. Dessa S3 API-kommandon ger åtkomst till bucketmetadata, som bucket-ACL, bucketpolicy, livscykelpolicyer för att nämna några, alla API-anrop som stöds kan hämtas i kommandouppsättningen med kommandot aws s3api help.

  • AWS CLI använder automatiskt upp till 10 trådar för att ladda upp filer eller delar under uppladdningar som standard
  • AWS CLI använder automatiskt multipart_threshold uppladdningar för filer >= 8 MB filstorlek, multipart_chunksize

Instruktioner för nedladdning och installation.

  1. Versionsreleaser https://github.com/aws/aws-cli/releases (Extern länk)
  2. Ladda ner och installera AWS CLI-paket
# curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
  1. Packa upp paket
# unzip awscli-bundle.zip
  1. Kör installationskommando
# sudo /awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
  1. Bekräfta version
# aws version
Output:
      aws-cli/2.0.33 Python/3.7.3 Linux/4.15.0-109-generic botocore/2.0.0dev37

Konfigurera AWS CLI

I det här avsnittet beskrivs de grundläggande stegen för att konfigurera AWS CLI för användning med ECS S3 med hjälp av ECS-objektanvändare. Det här avsnittet förutsätter att bucket och objektanvändare redan har skapats på ECS. Autentiseringsuppgifterna och konfigurationsfilen uppdateras när du kör kommandot aws configure. – Herr talman,

Filen med autentiseringsuppgifter finns här ~/.aws/credentials. Filen med autentiseringsuppgifter lagrar information om användarprofil (åtkomstnyckel-ID och hemliga åtkomstnycklar), konfigurationsfilen lagrar information om region och utdataformat.

Krävs:
  • Åtkomstnyckel-ID: ECS-objektanvändare
  • Hemlig åtkomstnyckel: Hemlig nyckel
Steg:
  1. I det här exemplet skapas ett profilnamn 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. Visa en lista över alla profiler (listegenskaper som är tillgängliga i 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. Listspecifik profil
# 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. Om du använder kommandon på 9021, AWS CLI-alternativ --no-verify-ssl krävs för att kringgå det självsignerade certifikatfelet.
# 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)
  • Kör kommandot med --no-verify Alternativ för att kringgå det här felet
# 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
  • Det andra alternativet är att hämta det självsignerade ECS-certifikatet som sparats i PEM-format och --ca-bundle alternativ
  • Använd OpenSSL för att få ECS-certifikat för objektdataåtkomst på port 9021 och kopiera certifikatinnehåll med hjälp av din favoritredigerare och spara inklusive certifikatrubriker enligt exemplet nedan.
# openssl s_client -connect ecshop:9021
Var ecshop är ECS-nodernas IP-adress eller värdnamn, och xxxxxx ska vara hela certifikatet i din miljö.
Output:

    -----BEGIN CERTIFICATE----- 
    Xxxxxxxxx
    xxxxxxxxx
    ...
    ...
    -----END CERTIFICATE-----
  1. Lista bucketar i tabellen människovänlig med ca-bundle-alternativet där certifikatet sparas i PEM-filnamnet 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              ||
    |+-----------------------------------+---------------------+|

Grundläggande S3-åtgärder

https://docs.aws.amazon.com/cli/latest/userguide/cli-services-s3-commands.html (Extern länk)
Finjustering av prestanda
  • max_concurrent_requests – Det maximala antalet samtidiga begäranden
  • max_queue_size - Det maximala antalet uppgifter i uppgiftskön
  • multipart_threshold – Storlekströskeln som CLI använder för överföringar av enskilda filer med flera delar.
  • multipart_chunksize – När du använder överföringar med flera delar är det här den segmentstorlek som CLI använder för överföringar av enskilda filer med flera delar.
  • max_bandwidth – Den maximala bandbredd som förbrukas för att ladda upp och ladda ned data till och från Amazon S3.
Sparat i konfigurationsfilen som ett exempel:
# 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 
Användande aws configure set Kommando för att ställa in parametrar för att justera uppladdningshastigheter
$ 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
Steg: 
  1. Skapa bucket med s3 mb befallning
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 mb s3://s3_bkt
Output:
    make_bucket: s3_bkt
  1. Lista buckets med s3 ls och s3api list-buckets kommandouppsättningar listar bucketar för andra åtgärder (kallas i S3 för prefix) (Extern länk) i en 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.  Skapa och ladda upp filer för testning 
  • Exempel på hur du skapar filer på 1 MB och 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
  • Exempel på hur du skapar en stor fil på 2 GB
# dd if=/dev/urandom of=bigfile_2GB bs=1024k count=2048
  • Ladda upp en fil på 1 MB till 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. Lista filer i bucket, s3_bkt använda profilnamnet mc_s3 använda s3 lseller s3api list-objects Kommandouppsättningar 
# 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. Visa en lista över objektversioner
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api list-object-versions --bucket s3_bkt --output text
  1. Ladda ner fil, 1MB_output.file från s3_bkt till /tmp-katalogen på den lokala datorn.
# 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. Kontrollera ACL för en fil 1MB_output.file i YAML-format för utdata för läsbarhet
# 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. Kontrollera bucket-ACL på 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. Kontrollera bucketversionen eller aktivera versionshantering i bucketen
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api get-bucket-versioning --bucket s3_bkt
Output:

    {
        "Status": "Enabled"
    }
  1. Initiera uppladdning i flera delar med s3api API-nivå med en stor fil 
  1. Skapa en fil på 5 GB:
# time dd if=/dev/urandom of=bigfile_5GB bs=1024k count=5096
  1. Börja ladda upp
# 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. Lista ofullständiga filuppladdningar i flera delar https://aws.amazon.com/premiumsupport/knowledge-center/s3-multipart-upload-cli/ (Extern länk)
# 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. Förbättra s3 cp Kommando eller bucket till bucket prestandarekommendationer för stora filer för att initiera uppladdningar med flera delar och ändra samtidiga trådar, se ovan under prestandajustering.
  1. Utför bucket-to-bucket-kopiering för att kopiera file.txt i mc_s3_bkt till s3_bkt med S3api 
# 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. Lista filer (objekt eller nycklar) i en 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. Kopiera en fil från S3_bkt till mc_s3_bkt Använda S3 CP-kommandouppsättning på hög nivå
Följande cp-kommando kopierar ett enda s3-objekt till en angiven bucket och nyckel:
# 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. Kontrollera om versionshantering är aktiverat i bucket s3_bkt
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api get-bucket-versioning --bucket s3_bkt
Output: 

      {
          "Status": "Enabled"
      }
  1. Ta bort bucket med s3 rb kommando (kommandot har inga utdata)
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 rm s3://s3_bkt2
  1. I följande exempel tas alla objekt och undermappar bort i bucketen och sedan tas bucketen bort. (om versionshantering är aktiverat tar det här kommandot inte bort versionsobjekt (läs LDS, Livscykelpolicyer)
# aws s3 rb s3://bucket-name --force
  1. Aktivera versionshantering på bucket s3_bkt Använda kommandouppsättningen på s3API API-nivå (kommandot har inga utdata)
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api put-bucket-versioning --bucket s3_bkt --versioning-configuration Status=Enabled 
  1. Tillämpa livscykelpolicy Generera mall (referens ECS Data Access guide) AWS CLI kräver JSON-format för livscykelpolicy
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api put-bucket-lifecycle-configuration --generate-cli-skeleton input --bucket s3_bkt
  1. Tillämpa bucketens livslängdspolicy på bucketen, mer information finns i ECS-manualen för dataåtkomst
Skapa princip för AbortIncompleteMultipartUpload, NoncurrentVersionExpiration, and ExpiredObjectDeleteMarker and NoncurrentDays att löpa ut efter 7 dagar.
#  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. GET-livscykelpolicy
# 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. Objekttaggning med nyckel/värde-par 
  1. Skriv en fil. 
$ 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. Lägg till tagg (det här kommandot har inte matats ut om det lyckas. 
    Enradskommando:
$ 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

Kopiera och klistra in med flera rader: 

$ 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. Hämta objekttaggen.
$ 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. Lägga till flera taggvärden 'key:value' - förkortad form
$ 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. Hämta objekttaggen.
$ 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. S3-objektlås
Med ECS kan du lagra objekt med hjälp av en WORM-modell (write-once-read-many) via S3-objektlås. Den här funktionen förhindrar att objekt tas bort eller skrivs över under en viss tid eller på obestämd tid.
 
Obs!
  • ECS S3 Object Lock-funktionen stöder endast bucketar med versionshantering.
  • Det finns inget ECS-användargränssnitt för objektlås. Den kan nås via ECS-objektlås-API:er.
  • De låsta objekten är skyddade från livscykelradering
  • Bucketen kan inte aktiveras med filsystem
  • Objektlås fungerar med IAM-användare och inte äldre användare 
  • Aktivera objektlås på bucketen, aktivera versionshantering automatiskt 
  • En korrigeringsfil krävs om ADO är aktiverat och ska åtgärdas i ECS 3.7. Se artikeln ECS: Avaktivera objektlåsfunktionen på ECS för IBM Content Manager


Ställa in ett objektlås på en bucket.
Använd put-object-lock-configuration alternativet används med AWS CLI.

Se: 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) (Extern länk)

  • Så här ställer du in en objektlåskonfiguration för en 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 }}}'

Det här kommandot ger inga utdata.

  • 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.