ECS: Slik konfigurerer og bruker du S3 AWS CLI
Summary: Når du bruker AWS CLI til å teste kundescenarioer der de bruker AWS CLI med ECS for å bekrefte funksjonalitet og kompatibilitet, må du alltid se ECS-datatilgangsveiledningen for ECS AWS S3-støttede API-kall. ...
Instructions
AWS Command-Line Interface (AWS CLI) er et verktøy fra AWS som kan brukes til å teste S3-kommandoer på høyt nivå og s3 API-nivå (s3api)
-kommandoer på høyt nivå, aws s3 (ekstern lenke) støtter vanlige bøtteoperasjoner, for eksempel opprette, liste og slette samlinger. Hvordan laste ned og installere verktøyet, kan alle støttede kommandoer på høyt nivå fås i kommandosett ved hjelp av kommandoen aws s3api help.
S3Uri: Representerer plasseringen av et S3-objekt, prefiks eller samlingsområde – Dette må skrives i skjemaet s3://mybucket/mykey hvor mybucket er t spesifisert S3 bøtte, mykey er den angitte S3-tasten. Baneargumentet må begynne med s3://
Kommandoer på API-nivå AWS S3API (ekstern lenke) finnes i S3API Commend-settet. Disse S3 API-kommandoene gir tilgang til bøttemetadata, for eksempel nettkurve-ACL, bøttepolicy, livssykluspolicyer for å nevne noen, alle støttede API-kall kan hentes i kommandosett ved hjelp av kommandoen aws s3api help.
- AWS CLI bruker automatisk opptil 10 tråder til å laste opp filer eller deler under opplastinger som standard
- AWS CLI bruker automatisk multipart_threshold opplastinger for filer >= 8 MB filstørrelse, multipart_chunksize
Last ned og installer instruksjoner.
- Versjonsutgivelser https://github.com/aws/aws-cli/releases (ekstern lenke)
- Last ned og installer AWS CLI-pakken
# curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
- Pakk ut bunt
# unzip awscli-bundle.zip
- Kjør installasjonskommandoen
# sudo /awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
- Bekreft versjon
# aws version
Output: aws-cli/2.0.33 Python/3.7.3 Linux/4.15.0-109-generic botocore/2.0.0dev37
Konfigurasjon av AWS CLI
Denne delen forklarer de grunnleggende trinnene for å konfigurere AWS CLI for bruk med ECS S3 ved hjelp av ECS-objektbrukeren. Denne delen forutsetter at samlings- og objektbrukeren allerede er opprettet på ECS. Legitimasjonen og konfigurasjonsfilen oppdateres når du kjører kommandoenaws configure.
Legitimasjonsfilen ligger her
~/.aws/credentials. Legitimasjonsfil lagrer brukerprofildetaljer (tilgangsnøkkel-ID og hemmelige tilgangsnøkler), konfigurasjonsfil, lagrer region- og utdataformatdetaljer.
Påkrevd:
- Tilgangsnøkkel-ID: ECS-objektbruker
- Hemmelig tilgangsnøkkel: Hemmelig nøkkel
- Dette eksemplet oppretter et profilnavn 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
- Listeprofiler alle profiler (listeegenskaper tilgjengelig 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
- Listespesifikk 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))
- Hvis du bruker kommandoer på 9021, må alternativet AWS CLI
--no-verify-sslkreves for å omgå den selvsignerte sertifikatfeilen.
# 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)
- Kjør kommando med
--no-verifyAlternativ for å omgå denne feilen
# 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 andre alternativet er å laste ned det selvsignerte ECS-sertifikatet som er lagret i PEM-format og bruke
--ca-bundleopsjon - Bruk OpenSSL til å skaffe ECS-sertifikat for tilgang til objektdata på port 9021, kopier sertifikatinnhold ved hjelp av favorittredigeringsprogrammet ditt, og lagre inkludert sertifikatoverskrifter per eksempel nedenfor.
# openssl s_client -connect ecshop:9021
ecshop er ECS-nodenes IP eller vertsnavn, og xxxxxx skal være hele sertifikatet i miljøet ditt.
Output: -----BEGIN CERTIFICATE----- Xxxxxxxxx xxxxxxxxx ... ... -----END CERTIFICATE-----
- List opp samlinger i tabellen menneskelig vennlig med ca-bundle-alternativ der sertifikatet er lagret i PEM-filnavn 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 || |+-----------------------------------+---------------------+|
Grunnleggende S3-operasjoner
https://docs.aws.amazon.com/cli/latest/userguide/cli-services-s3-commands.html (ekstern lenke)Ytelsesjustering
- max_concurrent_requests – maksimalt antall samtidige forespørsler
- max_queue_size – Maksimalt antall oppgaver i aktivitetskøen
- multipart_threshold – størrelsesterskelen som CLI bruker for overføring av enkeltfiler med flere deler.
- multipart_chunksize – Når du bruker overføringer med flere deler, er dette størrelsen som CLI bruker til overføring av enkeltfiler med flere deler.
- max_bandwidth – Den maksimale båndbredden som forbrukes til å laste opp og laste ned data til og fra 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 = autoBruke
aws configure set Kommando for å angi parametere for å justere opplastingshastigheter
$ 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 autoTrinn:
- Opprett bøtte ved hjelp av
s3 mbkommando
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 mb s3://s3_bkt
Output:
make_bucket: s3_bkt
- Oppgi samlinger ved hjelp av
s3 lsogs3api list-bucketsKommandosett viser samlinger for alle andre operasjoner (referert til i S3 som 'prefikser') (ekstern lenke) i en samling
# 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"
},
- Opprette og laste opp filer for testing
- Eksempel på oppretting av filer på 1 MB og 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
- Eksempel: opprette en stor fil på 2 GB
# dd if=/dev/urandom of=bigfile_2GB bs=1024k count=2048
- Last opp 1MB fil til bøtte
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
- Liste filer i bøtte,
s3_bktBruke profilnavn mc_s3 brukes3 lsellers3api list-objectsKommandosett
# 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" } },
- Vis objektversjoner
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api list-object-versions --bucket s3_bkt --output text
- Last ned fil 1MB_output.fil fra
s3_bkttil /tmp-katalogen på lokal maskin.
# 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
- Sjekk tilgangskontrollisten til en fil 1MB_output.fil i YAML-format for utdata for lesbarhet
# 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
- Sjekk bøtte ACL på bøtte
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
- Sjekk bøtteversjonen eller aktiver versjonskontroll på bøtta
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api get-bucket-versioning --bucket s3_bkt
Output:
{
"Status": "Enabled"
}
- Start opplasting av flere deler ved hjelp av s3api API-nivå med en stor fil
- Opprett en 5 GB fil:
# time dd if=/dev/urandom of=bigfile_5GB bs=1024k count=5096
- Start opplasting
# 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"
}
- Liste over ufullstendige filopplastinger med flere deler https://aws.amazon.com/premiumsupport/knowledge-center/s3-multipart-upload-cli/ (ekstern lenke)
# 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"
}
}
]
}
- Forbedre
s3 cpKommando eller bøtte til bøtte ytelsesanbefalinger for store filer for å starte opplasting av flere deler og endre samtidige tråder, se ovenfor under ytelsesjustering.
- Utfør bøtte til bøtte kopi for å kopiere file.txt i
mc_s3_bkttils3_bktved hjelp av 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"
}
}
- Liste filer (objekter eller nøkler) i en bøtte
# 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
- Kopiere en fil fra
S3_bkttilmc_s3_bktBruke S3 CP-kommandosett på høyt 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
- Sjekk om versjonskontroll er aktivert på samlebånd
s3_bkt
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api get-bucket-versioning --bucket s3_bkt
Output:
{
"Status": "Enabled"
}
- Slett bøtte ved hjelp av
s3 rbKommando (kommando har ingen utdata)
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 rm s3://s3_bkt2
- Følgende eksempel sletter alle objekter og undermapper i samlingen, og deretter fjernes samlingen. (hvis versjonskontroll er aktivert, fjerner ikke denne kommandoen versjonsobjekter (se gjennom LDS, Livssykluspolicyer)
# aws s3 rb s3://bucket-name --force
- Aktiver versjonskontroll på bøtte
s3_bktBruke s3API API-nivåkommandosett (kommandoen har ikke sendt ut)
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api put-bucket-versioning --bucket s3_bkt --versioning-configuration Status=Enabled
- Bruke livssykluspolicy Generer mal (referer til ECS-datatilgangsveiledning) AWS CLI krever JSON-format for livssykluspolicy
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api put-bucket-lifecycle-configuration --generate-cli-skeleton input --bucket s3_bkt
- Bruk policyen for levetid for bøtte på bøtte. Hvis du vil ha mer informasjon, kan du se veiledningen for ECS-datatilgang
AbortIncompleteMultipartUpload, NoncurrentVersionExpiration, and ExpiredObjectDeleteMarker and NoncurrentDays å utløpe etter 7 dager.
# 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
}
}
]
}
- Livssykluspolicy for 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
}
}
]
}
- Objektkoding ved hjelp av nøkkelverdipar
- 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
- Legg til kode (denne kommandoen kan ikke sendes ut hvis den lykkes.
Kommando med én linje:
$ 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
Kopier og lim inn flerlinjer:
$ 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
- Hent objektkoden.
$ 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"
}
]
}
- Legge til flere koder verdier '
key:value' - kortform
$ 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
- Hent objektkoden.
$ 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-objektlåsfunksjonen støtter bare versjonsaktiverte samlinger.
- Det finnes ikke noe ECS-brukergrensesnitt for Object Lock. Den kan nås via API-er for ECS Object Lock.
- De låste objektene er beskyttet mot sletting av livssyklus
- Bøtte kan ikke aktiveres for filsystem
- Objektlås fungerer med IAM-brukere og ikke eldre brukere
- Aktivering av objektlås på samlingen, aktiver automatisk versjonskontroll
- Det kreves en oppdatering hvis ADO er aktivert og skal håndteres i ECS 3.7. Se artikkel ECS: Deaktivere Object-Lock-funksjonen på ECS for IBM Content Manager
Slik angir du en objektlås på en samling.
Bruk put-object-lock-configuration-alternativet brukes 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 Kommandoreferanse (amazon.com) (ekstern lenke)
- Slik angir du en objektlåskonfigurasjon på en samling:
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 }}}'
Denne kommandoen gir ingen 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