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. ...
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.
- Versionsreleaser https://github.com/aws/aws-cli/releases (Extern länk)
- Ladda ner och installera AWS CLI-paket
# curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
- Packa upp paket
# unzip awscli-bundle.zip
- Kör installationskommando
# sudo /awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
- 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 kommandotaws 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
- 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
- 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
- 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))
- Om du använder kommandon på 9021, AWS CLI-alternativ
--no-verify-sslkrä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-verifyAlternativ 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-bundlealternativ - 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
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-----
- 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.
# 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 = autoAnvä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 autoSteg:
- Skapa bucket med
s3 mbbefallning
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 mb s3://s3_bkt
Output:
make_bucket: s3_bkt
- Lista buckets med
s3 lsochs3api list-bucketskommandouppsä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"
},
- 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
- Lista filer i bucket,
s3_bktanvända profilnamnet mc_s3 användas3 lsellers3api list-objectsKommandouppsä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" } },
- Visa en lista över objektversioner
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api list-object-versions --bucket s3_bkt --output text
- Ladda ner fil, 1MB_output.file från
s3_bkttill /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
- 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
- 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
- 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"
}
- Initiera uppladdning i flera delar med s3api API-nivå med en stor fil
- Skapa en fil på 5 GB:
# time dd if=/dev/urandom of=bigfile_5GB bs=1024k count=5096
- 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"
}
- 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"
}
}
]
}
- Förbättra
s3 cpKommando 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.
- Utför bucket-to-bucket-kopiering för att kopiera file.txt i
mc_s3_bkttills3_bktmed 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"
}
}
- 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
- Kopiera en fil från
S3_bkttillmc_s3_bktAnvända S3 CP-kommandouppsättning på hög nivå
# 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
- 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"
}
- Ta bort bucket med
s3 rbkommando (kommandot har inga utdata)
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 rm s3://s3_bkt2
- 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
- Aktivera versionshantering på bucket
s3_bktAnvä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
- 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
- Tillämpa bucketens livslängdspolicy på bucketen, mer information finns i ECS-manualen för dataåtkomst
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
}
}
]
}
- 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
}
}
]
}
- Objekttaggning med nyckel/värde-par
- 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
- 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
- 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"
}
]
}
- 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
- 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"
}
]
}
- S3-objektlås
- 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