ECS: S3 AWS -komentoriviliittymän määrittäminen ja käyttäminen
Summary: Kun testaat AWS-komentoriviliittymän avulla asiakkaan tilanteita, joissa he käyttävät AWS-komentoriviliittymää ECS:n kanssa toimivuuden ja yhteensopivuuden varmistamiseksi, tutustu aina ECS Data Access Guide -oppaaseen, joka sisältää ECS AWS S3 -tuetut API-kutsut. ...
Instructions
AWS Command-Line Interface (AWS CLI) on AWS:n työkalu, jolla voidaan testata korkean tason S3-komentoja ja s3 API-tason (s3api)
korkean tason aws s3 (External Link) -komennot tukevat yleisiä säilötoimintoja, kuten säilöjen luomista, luettelointia ja poistamista. Työkalun lataaminen ja asentaminen, kaikki tuetut High-Level-komennot voidaan hankkia komentosarjassa komennolla aws s3api help.
S3Uri: Edustaa S3-objektin, etuliitteen tai säilön sijaintia. Tämä on kirjoitettava muodossa s3://mybucket/mykey Siinä mybucket on t määritelty S3-ämpäri, mykey on määritetty S3-avain. Polkuargumentin on alettava s3://
API-tason AWS s3api (External Link) -komennot sisältyvät s3api commend -joukkoon. Nämä S3 API -komennot tarjoavat pääsyn säilön metatietoihin, kuten säilön käyttöoikeusluetteloon, säilökäytäntöön ja elinkaarikäytäntöihin. Kaikki tuetut API-kutsut voidaan hankkia komentojoukolla komennolla aws s3api help.
- AWS-komentoriviliittymä käyttää oletusarvoisesti jopa 10 säiettä tiedostojen tai osien lataamiseen latauksen aikana
- AWS-komentoriviliittymä käyttää automaattisesti multipart_threshold latausta tiedostoille >= 8 Mt:n tiedostokoko, multipart_chunksize
Lataa ja asenna ohjeet.
- Versiojulkaisut https://github.com/aws/aws-cli/releases (Ulkoinen linkki)
- Lataa ja asenna AWS CLI -paketti
# curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
- Pura paketti
# unzip awscli-bundle.zip
- Suorita asennuskomento
# sudo /awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
- Vahvista versio
# aws version
Output: aws-cli/2.0.33 Python/3.7.3 Linux/4.15.0-109-generic botocore/2.0.0dev37
AWS-komentoriviliittymän määrittäminen
Tässä osassa perusesitellään AWS-komentoriviliittymän määrittäminen käytettäväksi ECS S3:n kanssa ECS-objektin käyttäjän avulla. Tässä osassa oletetaan, että säilö ja objektin käyttäjä on jo luotu ECS:ssä. Tunnistetiedot ja määritystiedosto päivitetään, kun suoritat komennonaws configure.
Tunnistetietotiedosto sijaitsee täällä
~/.aws/credentials. Tunnistetiedot, tiedostotallennukset, käyttäjäprofiilin tiedot (käyttöoikeusavain, tunnus ja salaiset avaimet), määritystiedosto, tallentaa alueen ja tulostusmuodon tiedot.
Pakollinen:
- Käyttöoikeusavaimen tunnus: ECS-objektin käyttäjä
- Salaisen pääsyn avain: Salainen avain
- Tässä esimerkissä luodaan profiilin nimi 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
- Luetteloprofiilit, kaikki profiilit (luettelon ominaisuudet ovat käytettävissä AWS CLI v2:ssa)
# 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
- Luettelokohtainen profiili
# 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))
- Jos käytät 9021-komentoja, AWS CLI -asetus
--no-verify-ssltarvitaan itse allekirjoitetun varmenteen virheen ohittamiseen.
# 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)
- Suorita komento komennolla
--no-verifyMahdollisuus ohittaa tämä virhe
# 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
- Toinen vaihtoehto on ladata ECS:n itse allekirjoitettu varmenne, joka on tallennettu PEM-muodossa ja käyttämällä
--ca-bundlevaihtoehto - OpenSSL:n avulla voit hankkia ECS-varmenteen porttiin 9021 objektitietojen käyttöä varten, kopioida varmenteen sisältöä suosikkieditorillasi ja tallentaa varmenteiden otsikot mukaan lukien alla olevan esimerkin mukaisesti.
# openssl s_client -connect ecshop:9021
ecshop on ECS-solmujen IP tai isäntänimi, ja xxxxxx on ympäristön koko varmenne.
Output: -----BEGIN CERTIFICATE----- Xxxxxxxxx xxxxxxxxx ... ... -----END CERTIFICATE-----
- Luettele säilöt taulukossa ihmisystävällinen ca-bundle-vaihtoehdolla, jossa varmenne tallennetaan PEM-tiedostonimen 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 || |+-----------------------------------+---------------------+|
S3-perustoiminnot
https://docs.aws.amazon.com/cli/latest/userguide/cli-services-s3-commands.html (Ulkoinen linkki)Suorituskyvyn säätö
- max_concurrent_requests - Samanaikaisten pyyntöjen enimmäismäärä
- max_queue_size - tehtäväjonon tehtävien enimmäismäärä
- multipart_threshold – Kokoraja, jota komentoriviliittymä käyttää yksittäisten tiedostojen moniosaisiin siirtoihin.
- multipart_chunksize - Moniosaisia siirtoja käytettäessä komentoriviliittymä käyttää tätä kokoa yksittäisten tiedostojen moniosaisiin siirtoihin.
- max_bandwidth - Suurin kaistanleveys, jota käytetään tietojen lataamiseen Amazon S3:een ja Amazon S3:sta.
# 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 = autoKäyttäminen
aws configure set Komento, jolla määritetään parametrit lähetysnopeuksien säätämiseksi
$ 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 autoVaiheet:
- Luo säilö käyttämällä
s3 mbkomento
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 mb s3://s3_bkt
Output:
make_bucket: s3_bkt
- Luetteloi säilöt käyttämällä
s3 lsjas3api list-bucketskomentojoukot luetteloivat säilöt kaikille muille toiminnoille (joita kutsutaan S3:ssa "etuliitteiksi") (ulkoinen linkki) säilössä
# 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"
},
- Tiedostojen luominen ja lataaminen testausta varten
- Esimerkki 1 Mt:n ja 4 Mt:n tiedostojen luomisesta
# dd if=/dev/zero of=1MB_output.file bs=1024 count=1024 # dd if=/dev/zero of=4MB_output.file bs=1024 count=4096
- Esimerkki suuren tiedoston luomisesta 2 Gt
# dd if=/dev/urandom of=bigfile_2GB bs=1024k count=2048
- Lataa 1 Mt tiedosto säilöön
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
- Luettele tiedostot ämpäriin,
s3_bktProfiilin nimen käyttäminen mc_s3s3 lstais3api list-objectsKomentosarjat
# 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" } },
- Objektiversioiden luettelointi
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api list-object-versions --bucket s3_bkt --output text
- Lataa tiedosto, 1MB_output.tiedosto kohteesta
s3_bktPaikallisen tietokoneen /tmp-hakemistoon .
# 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
- Tarkista YAML-muodossa olevan tiedoston 1MB_output.file ACL tulosteen lukemisen kannalta
# 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
- Tarkista säilön käyttöoikeusluettelo kauhassa
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
- Tarkista säilön versio tai ota versiointi käyttöön säilössä
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api get-bucket-versioning --bucket s3_bkt
Output:
{
"Status": "Enabled"
}
- Aloita moniosainen lataus käyttämällä s3api API -tasoa suurella tiedostolla
- Luo 5 Gt:n tiedosto:
# time dd if=/dev/urandom of=bigfile_5GB bs=1024k count=5096
- Aloita lataus
# 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"
}
- Luettelo keskeneräisistä moniosaisten tiedostojen latauksista https://aws.amazon.com/premiumsupport/knowledge-center/s3-multipart-upload-cli/ (ulkoinen linkki)
# 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"
}
}
]
}
- Parantaa
s3 cpSuurten tiedostojen suorituskykysuositukset komennoille tai säilöstä säilölle moniosaisten latausten ja samanaikaisten säikeiden muuttamisen aloittamiseksi ovat edellä kohdassa Suorituskyvyn optimointi.
- Kopioi säilöstä säilöön kopioidaksesi file.txt
mc_s3_bktjottas3_bktS3API:n käyttäminen
# 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"
}
}
- Tiedostojen (objektien tai avainten) luettelointi säilössä
# 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
- Tiedoston kopioiminen kohteesta
S3_bktjottamc_s3_bktKorkean tason S3 CP -komentojoukon käyttäminen
# 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
- Tarkista, onko versiotiedot otettu käyttöön säilössä
s3_bkt
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api get-bucket-versioning --bucket s3_bkt
Output:
{
"Status": "Enabled"
}
- Poista säilö käyttämällä
s3 rbkomento (komennolla ei ole tulosta)
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 rm s3://s3_bkt2
- Seuraavassa esimerkissä poistetaan säilön kaikki objektit ja alikansiot ja poistetaan sitten säilö. (jos versiotietojen hallinta on käytössä, tämä komento ei poista versio-objekteja (tarkista LDS, elinkaarikäytännöt)
# aws s3 rb s3://bucket-name --force
- Ota versiotietojen käyttöönotto säilössä
s3_bktkäyttämällä s3API API -tason komentojoukkoa (komentoa ei ole tulostettu)
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api put-bucket-versioning --bucket s3_bkt --versioning-configuration Status=Enabled
- Elinkaarikäytännön soveltaminen Luo malli (ECS Data Access Guide) AWS-komentoriviliittymä edellyttää json-muotoa elinkaarikäytäntöä varten
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api put-bucket-lifecycle-configuration --generate-cli-skeleton input --bucket s3_bkt
- Käytä säilön käyttöaikaa säilössä, lisätietoja on ECS:n tietojen käyttöoppaassa
AbortIncompleteMultipartUpload, NoncurrentVersionExpiration, and ExpiredObjectDeleteMarker and NoncurrentDays vanhenee 7 päivän kuluttua.
# 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
}
}
]
}
- HANKI elinkaarikäytäntö
# 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
}
}
]
}
- Objektien taggaus avainarvoparin avulla
- Kirjoita tiedosto.
$ 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
- Lisää tunniste (tätä komentoa ei ole tulostettu, jos se onnistuu.
Yksirivinen komento:
$ 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
Monirivinen kopiointi ja liittäminen:
$ 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
- Hanki objektitunniste.
$ 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"
}
]
}
- Useiden tunnisteiden arvojen lisääminen '
key:value' - lyhyt muoto
$ 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
- Hanki objektitunniste.
$ 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-objektilukko
- ECS S3 Object Lock -ominaisuus tukee vain versiotietoja käyttäviä säilöjä.
- Object Lockille ei ole ECS-käyttöliittymää. Sitä voi käyttää ECS Object Lock -ohjelmointirajapintojen kautta.
- Lukitut kohteet on suojattu elinkaaren poistoilta
- Säilöä ei voi ottaa tiedostojärjestelmää käyttöön
- Objektilukitus toimii IAM-käyttäjien, ei vanhempien käyttäjien kanssa
- Kun objektilukitus otetaan käyttöön säilössä, versiotietojen ottaminen automaattisesti käyttöön
- Korjaustiedosto tarvitaan, jos ADO on käytössä, ja se on korjattava ECS 3.7:ssä. Katso artikkeli ECS: ECS:n objektilukitusominaisuuden poistaminen käytöstä IBM Content Manageria käytettäessä
Objektilukon asettaminen säilöön.
Käytä put-object-lock-configuration -vaihtoehtoa käytetään AWS-komentoriviliittymässä.
Katso: 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) (ulkoinen linkki)
- Objektilukitusmäärityksen määrittäminen säilössä
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 }}}'
Tämä komento ei tuota tulosta.
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