Buat EC2 Armada - Amazon Elastic Compute Cloud

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Buat EC2 Armada

Untuk membuat EC2 Armada, tentukan konfigurasi armada dalam JSON file dan referensikan file dengan perintah AWS CLI create-fleet. Dalam JSON file, Anda harus menentukan total kapasitas target untuk armada, kapasitas target terpisah untuk Instans Spot dan Instans Sesuai Permintaan, dan templat peluncuran yang menentukan konfigurasi untuk instance dalam armada, seperti, jenis instans, subnet atau Availability Zone, dan satu AMI atau beberapa grup keamanan. Anda dapat menentukan konfigurasi tambahan secara opsional, seperti parameter untuk mengganti konfigurasi template peluncuran, strategi alokasi untuk memilih Instans Spot dan Instans Sesuai Permintaan dari kumpulan EC2 kapasitas, dan jumlah maksimum yang bersedia Anda bayarkan untuk armada. Untuk informasi selengkapnya, lihat Opsi konfigurasi untuk EC2 Armada atau Armada Spot Anda.

EC2Armada meluncurkan Instans Sesuai Permintaan saat kapasitas tersedia, dan meluncurkan Instans Spot ketika harga maksimum Anda melebihi harga Spot dan kapasitas yang tersedia.

Jika armada Anda menyertakan Instans Spot dan jenisnyamaintain, Amazon EC2 akan berusaha mempertahankan kapasitas target armada Anda saat Instans Spot Anda terganggu.

EC2Keterbatasan armada

Batasan berikut berlaku untuk EC2 Armada:

  • Membuat EC2 Armada hanya tersedia melalui Amazon EC2 API, AWS CLI, AWS SDKs, dan AWS CloudFormation.

  • Permintaan EC2 Armada tidak dapat menjangkau AWS Wilayah. Anda perlu membuat EC2 Armada terpisah untuk setiap Wilayah.

  • Permintaan EC2 Armada tidak dapat menjangkau subnet yang berbeda dari Availability Zone yang sama.

EC2Prasyarat armada

Templat peluncuran

Template peluncuran menentukan informasi konfigurasi tentang instance yang akan diluncurkan, seperti jenis instance dan Availability Zone. Untuk informasi selengkapnya tentang template peluncuran, lihatSimpan parameter peluncuran instans di templat EC2 peluncuran Amazon.

Peran terkait layanan untuk Armada EC2

AWSServiceRoleForEC2FleetPeran tersebut memberikan izin kepada EC2 Armada untuk meminta, meluncurkan, menghentikan, dan menandai instance atas nama Anda. Amazon EC2 menggunakan peran terkait layanan ini untuk menyelesaikan tindakan berikut:

  • ec2:RunInstances – Meluncurkan instans.

  • ec2:RequestSpotInstances – Meminta Instans Spot.

  • ec2:TerminateInstances – Mengakhiri instans.

  • ec2:DescribeImages— Jelaskan Amazon Machine Images (AMIs) untuk instance.

  • ec2:DescribeInstanceStatus— Jelaskan status instance.

  • ec2:DescribeSubnets— Jelaskan subnet untuk contoh.

  • ec2:CreateTags— Tambahkan tag ke EC2 Armada, instance, dan volume.

Pastikan bahwa peran ini ada sebelum Anda menggunakan AWS CLI atau API untuk membuat EC2 Armada.

catatan

instantEC2Armada tidak membutuhkan peran ini.

Untuk membuat peran, gunakan IAM konsol sebagai berikut.

Untuk menciptakan AWSServiceRoleForEC2Fleet peran EC2 Armada
  1. Buka IAM konsol di https://console.aws.amazon.com/iam/.

  2. Di panel navigasi, pilih Peran.

  3. Pilih Buat peran.

  4. Pada halaman Pilih entitas tepercaya, lakukan hal berikut:

    1. Untuk jenis entitas Tepercaya, pilih AWS layanan.

    2. Di bawah Kasus penggunaan, untuk Layanan atau kasus penggunaan, pilih EC2- Armada.

      Tip

      Pastikan untuk memilih EC2- Armada. Jika Anda memilih EC2, kasus penggunaan EC2- Armada tidak muncul dalam daftar Kasus penggunaan. Kasus penggunaan EC2- Armada akan secara otomatis membuat kebijakan dengan IAM izin yang diperlukan dan akan menyarankan AWSServiceRoleForEC2Fleetsebagai nama peran.

    3. Pilih Berikutnya.

  5. Pada halaman Tambahkan izin, pilih Berikutnya.

  6. Pada halaman Nama, tinjau, dan buat, pilih Buat peran.

Jika Anda tidak perlu lagi menggunakan EC2 Armada, kami sarankan Anda menghapus AWSServiceRoleForEC2Fleetperan tersebut. Setelah peran ini dihapus dari akun Anda, Anda dapat membuat peran tersebut kembali jika Anda membuat armada lain.

Untuk informasi selengkapnya, lihat Peran terkait layanan di IAMPanduan Pengguna.

Berikan akses ke kunci terkelola pelanggan untuk digunakan dengan terenkripsi AMIs dan snapshot EBS

Jika Anda menentukan snapshot EBS Amazon terenkripsi AMI atau terenkripsi di Armada dan EC2 Anda menggunakan AWS KMS kunci untuk enkripsi, Anda harus memberikan AWSServiceRoleForEC2Fleetizin peran untuk menggunakan kunci terkelola pelanggan sehingga EC2 Amazon dapat meluncurkan instans atas nama Anda. Untuk melakukannya, Anda harus menambahkan pemberian izin ke kunci yang dikelola pelanggan, seperti yang ditunjukkan dalam prosedur berikut.

Ketika memberikan izin, pemberian izin merupakan alternatif dari kebijakan kunci. Untuk informasi selengkapnya, lihat Menggunakan pemberian izin dan Menggunakan kebijakan kunci di AWS KMS dalam Panduan Developer AWS Key Management Service .

Untuk memberikan izin AWSServiceRoleForEC2Fleet peran untuk menggunakan kunci terkelola pelanggan
  • Gunakan perintah create-grant untuk menambahkan hibah ke kunci yang dikelola pelanggan dan untuk menentukan prinsipal (peran AWSServiceRoleForEC2Fleetterkait layanan) yang diberikan izin untuk melakukan operasi yang diizinkan hibah. Kunci yang dikelola pelanggan ditentukan oleh key-id parameter dan kunci ARN yang dikelola pelanggan. Prinsipal ditentukan oleh grantee-principal parameter dan ARN peran AWSServiceRoleForEC2Fleetterkait layanan.

    aws kms create-grant \ --region us-east-1 \ --key-id arn:aws:kms:us-east-1:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:role/AWSServiceRoleForEC2Fleet \ --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"

Izin untuk pengguna EC2 Armada

Jika pengguna Anda akan membuat atau mengelola EC2 Armada, pastikan untuk memberi mereka izin yang diperlukan.

Untuk membuat kebijakan untuk EC2 Armada
  1. Buka IAM konsol di https://console.aws.amazon.com/iam/.

  2. Di panel navigasi, pilih Kebijakan.

  3. Pilih Buat kebijakan.

  4. Pada halaman Buat kebijakan, pilih JSONtab, ganti teks dengan yang berikut, dan pilih Kebijakan tinjauan.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:ListRoles", "iam:PassRole", "iam:ListInstanceProfiles" ], "Resource":"arn:aws:iam::123456789012:role/DevTeam*" } ] }

    ec2:*Memberikan izin pengguna untuk memanggil semua EC2 API tindakan Amazon. Untuk membatasi pengguna pada EC2 API tindakan Amazon tertentu, tentukan tindakan tersebut sebagai gantinya.

    Pengguna harus memiliki izin untuk memanggil iam:ListRoles tindakan untuk menghitung peran yang ada, iam:PassRole tindakan untuk menentukan IAM peran EC2 Armada, dan iam:ListInstanceProfiles tindakan untuk menghitung profil instance yang ada.

    (Opsional) Untuk memungkinkan pengguna membuat peran atau profil instance menggunakan IAM konsol, Anda juga harus menambahkan tindakan berikut ke kebijakan:

    • iam:AddRoleToInstanceProfile

    • iam:AttachRolePolicy

    • iam:CreateInstanceProfile

    • iam:CreateRole

    • iam:GetRole

    • iam:ListPolicies

  5. Pada halaman Tinjau kebijakan, masukkan nama dan deskripsi kebijakan, dan pilih Buat kebijakan.

  6. Untuk memberikan akses, menambahkan izin ke pengguna, grup, atau peran Anda:

Buat EC2 Armada

Untuk meluncurkan armada instance menggunakan EC2 Armada, Anda hanya perlu menentukan parameter berikut dalam permintaan armada Anda, dan armada akan menggunakan nilai default untuk parameter lainnya:

  • LaunchTemplateIdatau LaunchTemplateName — Menentukan template peluncuran yang akan digunakan (yang berisi parameter untuk instance yang akan diluncurkan, seperti jenis instance dan Availability Zone)

  • TotalTargetCapacity – Menentukan total kapasitas target untuk armada

  • DefaultTargetCapacityType – Menentukan apakah opsi pembelian default adalah Sesuai Permintaan atau Spot

Untuk mengganti parameter yang ditentukan dalam template peluncuran, Anda dapat menentukan satu atau beberapa penggantian. Setiap override dapat bervariasi menurut jenis instans, Availability Zone, subnet, dan harga maksimum, dan dapat mencakup kapasitas tertimbang yang berbeda. Sebagai alternatif untuk menentukan jenis instance, Anda dapat menentukan atribut yang harus dimiliki instance, dan Amazon EC2 akan mengidentifikasi semua jenis instance dengan atribut tersebut. Untuk informasi selengkapnya, lihat Tentukan atribut untuk pemilihan jenis contoh untuk EC2 Armada atau Armada Spot.

Untuk EC2 jenis Armadainstant, Anda dapat menentukan parameter Systems Manager, bukan AMI ID. Anda dapat menentukan parameter Systems Manager di override atau di template peluncuran. Untuk informasi selengkapnya, lihat Menggunakan parameter Systems Manager, bukan AMI ID.

Anda dapat menentukan parameter armada dalam JSON file. Untuk informasi tentang semua parameter yang mungkin dapat Anda tentukan, lihatLihat semua opsi konfigurasi EC2 Armada.

Untuk contoh konfigurasi armada, lihatContoh CLI konfigurasi untuk EC2 Armada.

Saat ini tidak ada dukungan konsol untuk membuat EC2 Armada.

Untuk membuat EC2 Armada
  • Gunakan perintah create-fleet (AWS CLI) untuk membuat armada dan tentukan JSON file yang berisi parameter konfigurasi armada.

aws ec2 create-fleet --cli-input-json file://file_name.json

Berikut adalah contoh output untuk armada tipe request atau maintain.

{ "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE" }

Berikut adalah contoh output untuk tipe armada instant yang meluncurkan kapasitas target.

{ "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE", "Errors": [], "Instances": [ { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c5.large", "AvailabilityZone": "us-east-1a" } }, "Lifecycle": "on-demand", "InstanceIds": [ "i-1234567890abcdef0", "i-9876543210abcdef9" ], "InstanceType": "c5.large", "Platform": null }, { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c4.large", "AvailabilityZone": "us-east-1a" } }, "Lifecycle": "on-demand", "InstanceIds": [ "i-5678901234abcdef0", "i-5432109876abcdef9" ] ] }

Berikut adalah contoh output untuk armada tipe instant yang meluncurkan sebagian kapasitas target dengan kesalahan untuk instans yang tidak diluncurkan.

{ "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE", "Errors": [ { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c4.xlarge", "AvailabilityZone": "us-east-1a", } }, "Lifecycle": "on-demand", "ErrorCode": "InsufficientInstanceCapacity", "ErrorMessage": "" }, ], "Instances": [ { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c5.large", "AvailabilityZone": "us-east-1a" } }, "Lifecycle": "on-demand", "InstanceIds": [ "i-1234567890abcdef0", "i-9876543210abcdef9" ] ] }

Berikut adalah contoh output untuk armada tipe instant yang tidak meluncurkan instans.

{ "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE", "Errors": [ { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c4.xlarge", "AvailabilityZone": "us-east-1a", } }, "Lifecycle": "on-demand", "ErrorCode": "InsufficientCapacity", "ErrorMessage": "" }, { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c5.large", "AvailabilityZone": "us-east-1a", } }, "Lifecycle": "on-demand", "ErrorCode": "InsufficientCapacity", "ErrorMessage": "" }, ], "Instances": [] }

Buat EC2 Armada yang menggantikan Instans Spot yang tidak sehat

EC2Armada memeriksa status kesehatan instans di armada setiap dua menit. Status kondisi instans adalah healthy atau unhealthy.

EC2Armada menentukan status kesehatan suatu instans dengan menggunakan pemeriksaan status yang disediakan oleh AmazonEC2. Sebuah instans ditentukan sebagai unhealthy jika status pemeriksaan status instans atau pemeriksaan status sistemnya impaired dalam tiga kali pemeriksaan kondisi secara berturut-turut. Untuk informasi selengkapnya, lihat Pemeriksaan status untuk EC2 instans Amazon.

Anda dapat mengonfigurasi armada untuk mengganti Instans Spot yang tidak sehat. Setelah mengatur ReplaceUnhealthyInstances ke true, Instans Spot diganti ketika dilaporkan sebagai unhealthy. Armada tersebut dapat berada di bawah kapasitas targetnya selama beberapa menit saat Instans Spot yang tidak sehat sedang diganti.

Persyaratan
  • Penggantian pemeriksaan kesehatan hanya didukung untuk EC2 Armada yang mempertahankan kapasitas target (armada tipemaintain), dan bukan untuk armada jenis atau. request instant

  • Penggantian pemeriksaan kondisi hanya didukung untuk Instans Spot. Fitur ini tidak didukung untuk Instans Sesuai Permintaan.

  • Anda dapat mengonfigurasi EC2 Armada untuk mengganti instance yang tidak sehat hanya saat Anda membuatnya.

  • Pengguna dapat menggunakan penggantian pemeriksaan kondisi hanya jika memiliki izin untuk memanggil tindakan ec2:DescribeInstanceStatus.

Mengkonfigurasi EC2 Armada untuk mengganti Instans Spot yang tidak sehat
  1. Gunakan informasi untuk membuat EC2 Armada diBuat EC2 Armada.

  2. Untuk mengonfigurasi armada untuk mengganti Instans Spot yang tidak sehat, dalam JSON file, untukReplaceUnhealthyInstances, tentukantrue.

Lihat semua opsi konfigurasi EC2 Armada

Untuk melihat daftar lengkap parameter konfigurasi EC2 Armada, Anda dapat membuat JSON file. Untuk penjelasan tentang setiap parameter, lihat create-fleet dalam Referensi Perintah AWS CLI .

Untuk menghasilkan JSON file dengan semua parameter EC2 Armada yang mungkin

Gunakan perintah create-fleet (AWS CLI) dan --generate-cli-skeleton parameter untuk menghasilkan JSON file EC2 Fleet, dan arahkan output ke file untuk menyimpannya.

aws ec2 create-fleet \ --generate-cli-skeleton input > ec2createfleet.json

Contoh Output

{ "DryRun": true, "ClientToken": "", "SpotOptions": { "AllocationStrategy": "price-capacity-optimized", "MaintenanceStrategies": { "CapacityRebalance": { "ReplacementStrategy": "launch" } }, "InstanceInterruptionBehavior": "hibernate", "InstancePoolsToUseCount": 0, "SingleInstanceType": true, "SingleAvailabilityZone": true, "MinTargetCapacity": 0, "MaxTotalPrice": "" }, "OnDemandOptions": { "AllocationStrategy": "prioritized", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first" }, "SingleInstanceType": true, "SingleAvailabilityZone": true, "MinTargetCapacity": 0, "MaxTotalPrice": "" }, "ExcessCapacityTerminationPolicy": "termination", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateId": "", "LaunchTemplateName": "", "Version": "" }, "Overrides": [ { "InstanceType": "r5.metal", "MaxPrice": "", "SubnetId": "", "AvailabilityZone": "", "WeightedCapacity": 0.0, "Priority": 0.0, "Placement": { "AvailabilityZone": "", "Affinity": "", "GroupName": "", "PartitionNumber": 0, "HostId": "", "Tenancy": "dedicated", "SpreadDomain": "", "HostResourceGroupArn": "" }, "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 0 }, "MemoryMiB": { "Min": 0, "Max": 0 }, "CpuManufacturers": [ "amd" ], "MemoryGiBPerVCpu": { "Min": 0.0, "Max": 0.0 }, "ExcludedInstanceTypes": [ "" ], "InstanceGenerations": [ "previous" ], "SpotMaxPricePercentageOverLowestPrice": 0, "OnDemandMaxPricePercentageOverLowestPrice": 0, "BareMetal": "included", "BurstablePerformance": "required", "RequireHibernateSupport": true, "NetworkInterfaceCount": { "Min": 0, "Max": 0 }, "LocalStorage": "excluded", "LocalStorageTypes": [ "ssd" ], "TotalLocalStorageGB": { "Min": 0.0, "Max": 0.0 }, "BaselineEbsBandwidthMbps": { "Min": 0, "Max": 0 }, "AcceleratorTypes": [ "inference" ], "AcceleratorCount": { "Min": 0, "Max": 0 }, "AcceleratorManufacturers": [ "amd" ], "AcceleratorNames": [ "a100" ], "AcceleratorTotalMemoryMiB": { "Min": 0, "Max": 0 } } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 0, "OnDemandTargetCapacity": 0, "SpotTargetCapacity": 0, "DefaultTargetCapacityType": "on-demand", "TargetCapacityUnitType": "memory-mib" }, "TerminateInstancesWithExpiration": true, "Type": "instant", "ValidFrom": "1970-01-01T00:00:00", "ValidUntil": "1970-01-01T00:00:00", "ReplaceUnhealthyInstances": true, "TagSpecifications": [ { "ResourceType": "fleet", "Tags": [ { "Key": "", "Value": "" } ] } ], "Context": "" }