

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

# Izin Armada Spot
<a name="spot-fleet-prerequisites"></a>

**penting**  
Spot Fleet menggunakan API lama tanpa investasi yang direncanakan. Sebaiknya gunakan EC2 Fleet atau grup Auto Scaling sebagai gantinya. Untuk informasi selengkapnya, lihat [Metode armada mana yang terbaik untuk digunakan?](which-fleet-method-to-use.md).

Jika pengguna Anda akan membuat atau mengelola Armada Spot, Anda perlu memberinya izin yang diperlukan.

Jika Anda menggunakan konsol Amazon EC2 untuk membuat Armada Spot, konsol ini akan membuat dua peran tertaut layanan bernama `AWSServiceRoleForEC2SpotFleet` dan `AWSServiceRoleForEC2Spot`, serta peran bernama `aws-ec2-spot-fleet-tagging-role` yang memberikan izin kepada Armada Spot untuk meminta, meluncurkan, mengakhiri, dan menandai sumber daya atas nama Anda. Jika Anda menggunakan AWS CLI atau API, Anda harus memastikan bahwa peran ini ada.

Gunakan petunjuk berikut untuk memberikan izin yang diperlukan dan membuat peran.

**Topics**
+ [Memberikan izin kepada pengguna untuk Armada Spot](#spot-fleet-iam-users)
+ [Service-linked peran untuk Spot Fleet](#service-linked-roles-spot-fleet-requests)
+ [Service-linked peran untuk Instans Spot](#service-linked-roles-spot-instances)
+ [Peran IAM untuk menandai Armada Spot](#spot-fleet-service-linked-role)

## Memberikan izin kepada pengguna untuk Armada Spot
<a name="spot-fleet-iam-users"></a>

Jika pengguna Anda akan membuat atau mengelola Armada Spot, pastikan untuk memberinya izin yang diperlukan.

**Untuk membuat kebijakan Armada Spot**

1. Buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Di panel navigasi, pilih **Kebijakan**, **Buat kebijakan**.

1. Di halaman **Buat kebijakan**, pilih **JSON**, dan ganti teks dengan yang berikut ini.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:RunInstances",
                   "ec2:CreateTags",
                   "ec2:RequestSpotFleet",
                   "ec2:ModifySpotFleetRequest",
                   "ec2:CancelSpotFleetRequests",
                   "ec2:DescribeSpotFleetRequests",
                   "ec2:DescribeSpotFleetInstances",
                   "ec2:DescribeSpotFleetRequestHistory"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::*:role/aws-ec2-spot-fleet-tagging-role"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "iam:CreateServiceLinkedRole",
                   "iam:ListRoles",
                   "iam:ListInstanceProfiles"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

   Contoh kebijakan sebelumnya memberikan izin yang diperlukan kepada pengguna untuk sebagian besar kasus penggunaan Armada Spot. Untuk membatasi pengguna ke tindakan API tertentu, tentukan hanya tindakan API tersebut saja.

   **API EC2 dan IAM yang diperlukan**

   API berikut harus disertakan dalam kebijakan:
   + `ec2:RunInstances` – Diperlukan untuk meluncurkan instans di Armada Spot
   + `ec2:CreateTags` – Diperlukan untuk menandai permintaan, instans, atau volume Armada Spot
   + `iam:PassRole` – Diperlukan untuk menentukan peran Armada Spot
   + `iam:CreateServiceLinkedRole` – Diperlukan untuk membuat peran tertaut-layanan
   + `iam:ListRoles` – Diperlukan untuk melakukan enumerasi peran IAM yang ada
   + `iam:ListInstanceProfiles` – Diperlukan untuk melakukan enumerasi profil instans yang sudah ada
**penting**  
Jika Anda menentukan peran untuk profil instans IAM dalam spesifikasi peluncuran atau templat peluncuran, Anda harus memberikan izin kepada pengguna untuk meneruskan peran tersebut ke layanan. Untuk melakukan ini, dalam kebijakan IAM sertakan `"arn:aws:iam::*:role/{{IamInstanceProfile-role}}"` sebagai sumber daya untuk tindakan `iam:PassRole`. Untuk informasi selengkapnya[, lihat Memberikan izin pengguna untuk meneruskan peran ke AWS layanan ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) di Panduan * * Pengguna IAM.

   **API Armada Spot**

   Tambahkan tindakan API Armada Spot berikut ke kebijakan Anda, jika diperlukan:
   + `ec2:RequestSpotFleet`
   + `ec2:ModifySpotFleetRequest`
   + `ec2:CancelSpotFleetRequests`
   + `ec2:DescribeSpotFleetRequests`
   + `ec2:DescribeSpotFleetInstances`
   + `ec2:DescribeSpotFleetRequestHistory`

   **API IAM opsional**

   (Opsional) Untuk memungkinkan pengguna membuat peran atau profil instans menggunakan konsol IAM, Anda juga harus menambahkan tindakan berikut ke kebijakan:
   + `iam:AddRoleToInstanceProfile`
   + `iam:AttachRolePolicy`
   + `iam:CreateInstanceProfile`
   + `iam:CreateRole`
   + `iam:GetRole`
   + `iam:ListPolicies`

1. Pilih **Tinjau kebijakan**.

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

1. Untuk memberikan akses dan menambahkan izin bagi pengguna, grup, atau peran Anda:
   + Pengguna dan grup di AWS IAM Identity Center:

     Buat rangkaian izin. Ikuti instruksi di [Buat rangkaian izin](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtocreatepermissionset.html) dalam *Panduan Pengguna AWS IAM Identity Center *.
   + Pengguna yang dikelola di IAM melalui penyedia identitas:

     Buat peran untuk federasi identitas. Ikuti instruksi dalam [Buat peran untuk penyedia identitas pihak ketiga (federasi)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html) dalam *Panduan Pengguna IAM*.
   + Pengguna IAM:
     + Buat peran yang dapat diambil pengguna Anda. Ikuti instruksi dalam [Buat peran untuk pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) dalam *Panduan Pengguna IAM*.
     + (Tidak disarankan) Lampirkan kebijakan langsung ke pengguna atau tambahkan pengguna ke grup pengguna. Ikuti petunjuk dalam [Menambahkan izin ke pengguna (konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) dalam *Panduan Pengguna IAM*.

## Service-linked peran untuk Spot Fleet
<a name="service-linked-roles-spot-fleet-requests"></a>

Amazon EC2 menggunakan peran tertaut layanan untuk izin yang diperlukan untuk memanggil layanan AWS lain atas nama Anda. Peran terkait layanan adalah jenis peran IAM unik yang ditautkan langsung ke layanan. AWS Service-linked peran menyediakan cara aman untuk mendelegasikan izin ke AWS layanan karena hanya layanan tertaut yang dapat mengambil peran terkait layanan. Untuk informasi selengkapnya, lihat [ Service-linked peran ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create-service-linked-role.html) di Panduan * * Pengguna IAM.

Amazon EC2 menggunakan peran terkait layanan bernama ** AWSServiceRoleForEC2Spot Fleet ** untuk meluncurkan dan mengelola instans atas nama Anda.

**penting**  
Jika Anda menentukan AMI [ terenkripsi ](AMIEncryption.md) atau snapshot Amazon EBS terenkripsi di Armada Spot Anda, Anda harus memberikan izin ** peran Ar ** AWSServiceRoleForEC2Spot mada untuk menggunakan CMK sehingga Amazon EC2 dapat meluncurkan instans atas nama Anda. Untuk informasi selengkapnya, lihat [Berikan akses ke CMK untuk digunakan dengan AMI dan snapshot EBS terenkripsi](#spot-fleet-service-linked-roles-access-to-cmks).

### Izin yang diberikan oleh AWSServiceRoleForEC2SpotFleet
<a name="service-linked-role-permissions-granted-by-AWSServiceRoleForEC2SpotFleet"></a>

Peran ** Ar ** AWSServiceRoleForEC2Spot mada memberikan izin Armada Spot untuk meminta, meluncurkan, menghentikan, dan menandai instance atas nama Anda. Amazon EC2 menggunakan peran tertaut layanan ini untuk menyelesaikan tindakan berikut:
+ `ec2:RequestSpotInstances` - Meminta Instans Spot
+ `ec2:RunInstances` - Meluncurkan instans
+ `ec2:TerminateInstances` - Mengakhiri instans
+ `ec2:DescribeImages` - Mendeskripsikan Amazon Machine Image (AMI) untuk instans
+ `ec2:DescribeInstanceStatus` - Mendeskripsikan status instans
+ `ec2:DescribeSubnets` - Mendeskripsikan subnet untuk instans
+ `ec2:CreateTags` - Menambahkan tanda ke permintaan, instans, dan volume Armada Spot
+ `elasticloadbalancing:RegisterInstancesWithLoadBalancer` - Menambahkan instans yang ditentukan ke penyeimbang beban yang ditentukan
+ `elasticloadbalancing:RegisterTargets` - Mendaftarkan target yang ditentukan dengan grup target yang ditentukan

### Membuat peran tertaut layanan
<a name="service-linked-role-creating-for-spot-fleet"></a>

Dalam sebagian besar situasi, Anda tidak perlu membuat peran tertaut layanan secara manual. Amazon EC2 membuat peran ** terkait ** AWSServiceRoleForEC2Spot layanan Armada saat pertama kali Anda membuat Spot Fleet menggunakan konsol. 

Jika Anda memiliki permintaan Spot Fleet aktif sebelum Oktober 2017, ketika Amazon EC2 mulai mendukung peran terkait layanan ini, Amazon EC2 membuat peran Ar ** AWSServiceRoleForEC2Spot mada ** di akun Anda. AWS Untuk informasi selengkapnya, lihat [ Peran baru muncul di AWS akun saya ](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared) di Panduan * * Pengguna IAM.

Jika Anda menggunakan AWS CLI atau API untuk membuat Spot Fleet, Anda harus terlebih dahulu memastikan bahwa peran ini ada.

**Untuk membuat AWSServiceRoleForEC2SpotFleet peran untuk Spot Fleet menggunakan konsol**

1. Buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Di panel navigasi, pilih **Peran**.

1. Pilih **Buat peran**.

1. Pada ** halaman ** Pilih entitas tepercaya, lakukan hal berikut:

   1. Untuk Ti ** pe entitas tepercaya**, pilih **AWS layanan**.

   1. Di bawah ** Kasus penggunaan**, untuk ** Layanan atau kasus penggunaan**, pilih ** EC2**.

   1. Untuk kasus ** penggunaan**, pilih ** EC2 - Spot Fleet**.
**catatan**  
Kas ** us ** penggunaan EC2 - Spot Fleet akan secara otomatis membuat kebijakan dengan izin IAM yang diperlukan dan akan menyarankan ** AWSEC2SpotFleetServiceRolePolicy ** sebagai nama peran.

   1. Pilih **Berikutnya**.

1. Pada halaman **Tambahkan izin**, pilih **Berikutnya**.

1. Pada ** halaman ** Nama, ulasan, dan buat, pilih ** Buat peran**.

**Untuk membuat AWSServiceRoleForEC2SpotFleet peran untuk Spot Fleet menggunakan AWS CLI**  
Gunakan perintah [create-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html) sebagai berikut.

```
aws iam create-service-linked-role --aws-service-name spotfleet.amazonaws.com
```

Jika Anda tidak perlu lagi menggunakan Spot Fleet, sebaiknya hapus ** peran ** AWSServiceRoleForEC2Spot Armada. Setelah peran ini dihapus dari akun Anda, Amazon EC2 akan membuat peran lagi jika Anda meminta Armada Spot dengan menggunakan konsol. Untuk informasi selengkapnya, lihat [Menghapus peran terkait layanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html#id_roles_manage_delete_slr) dalam *Panduan Pengguna IAM*.

### Berikan akses ke CMK untuk digunakan dengan AMI dan snapshot EBS terenkripsi
<a name="spot-fleet-service-linked-roles-access-to-cmks"></a>

Jika Anda menentukan AMI [ terenkripsi ](AMIEncryption.md) atau snapshot Amazon EBS terenkripsi dalam permintaan Spot Fleet Anda dan Anda menggunakan kunci yang dikelola pelanggan untuk enkripsi, Anda harus memberikan izin ** peran Ar ** AWSServiceRoleForEC2Spot mada untuk menggunakan CMK sehingga Amazon EC2 dapat meluncurkan instans atas nama Anda. Untuk melakukannya, Anda harus menambahkan pemberian izin ke CMK, seperti yang ditunjukkan dalam prosedur berikut.

Ketika memberikan izin, pemberian izin merupakan alternatif dari kebijakan kunci. Untuk informasi selengkapnya, lihat [Menggunakan Pemberian Izin](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) dan [Menggunakan Kebijakan Kunci di AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) dalam *Panduan Developer AWS Key Management Service *.

**Untuk memberikan izin AWSServiceRoleForEC2SpotFleet peran untuk menggunakan CMK**
+ Gunakan [ perintah ](https://docs.aws.amazon.com/cli/latest/reference/kms/create-grant.html) create-grant untuk menambahkan hibah ke CMK dan untuk menentukan prinsipal (peran ** terkait layanan Ar ** AWSServiceRoleForEC2Spot mada) yang diberi izin untuk melakukan operasi yang diizinkan oleh hibah. CMK ditentukan oleh parameter `key-id` dan ARN CMK. Prinsip ditentukan oleh `grantee-principal` parameter dan ARN dari peran ** terkait ** AWSServiceRoleForEC2Spot layanan Armada.

  ```
  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/aws-service-role/spotfleet.amazonaws.com/AWSServiceRoleForEC2SpotFleet \
      --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"
  ```

## Service-linked peran untuk Instans Spot
<a name="service-linked-roles-spot-instances"></a>

Amazon EC2 menggunakan peran terkait layanan bernama**AWSServiceRoleForEC2Spot** untuk meluncurkan dan mengelola Instans Spot atas nama Anda. Untuk informasi selengkapnya, lihat [Service-linked peran untuk permintaan Instance Spot](service-linked-roles-spot-instance-requests.md).

## Peran IAM untuk menandai Armada Spot
<a name="spot-fleet-service-linked-role"></a>

Peran IAM `aws-ec2-spot-fleet-tagging-role` memberikan izin ke Armada Spot untuk menandai permintaan, instans, dan volume Armada Spot. Untuk informasi selengkapnya, lihat [Menandai permintaan Spot Fleet baru atau yang sudah ada serta instans serta volume yang diluncurkan](tag-spot-fleet.md).

**penting**  
Jika Anda memilih untuk menandai instans di armada dan Anda juga memilih untuk mempertahankan kapasitas target (permintaan Armada Spot bertipe `maintain`), perbedaan izin yang ditetapkan untuk pengguna dan `IamFleetRole` dapat menyebabkan perilaku penandaan instans yang tidak konsisten di armada. Jika `IamFleetRole` tidak menyertakan izin `CreateTags`, beberapa instans yang diluncurkan oleh armada mungkin tidak akan ditandai. Sementara kami berusaha memperbaiki inkonsistensi ini, untuk memastikan bahwa semua instans yang diluncurkan oleh armada telah ditandai, kami menyarankan Anda menggunakan peran `aws-ec2-spot-fleet-tagging-role` untuk `IamFleetRole`. Atau, untuk menggunakan peran yang ada, lampirkan Kebijakan `AmazonEC2SpotFleetTaggingRole` AWS Terkelola ke peran yang ada. Jika tidak, Anda perlu menambahkan izin `CreateTags` secara manual untuk kebijakan yang ada.

**Guna membuat peran IAM untuk menandai Armada Spot**

1. Buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Di panel navigasi, pilih **Peran**.

1. Pilih **Buat peran**.

1. Pada halaman **Pilih entitas tepercaya**, di bawah **Tipe entitas tepercaya**, pilih **Layanan AWS **.

1. Di bawah **Kasus penggunaan**, dari **Kasus penggunaan untuk layanan AWS lain**, pilih **EC2**, lalu pilih **EC2 - Penandaan Armada Spot**.

1. Pilih **Berikutnya**.

1. Pada halaman **Tambahkan izin**, pilih **Berikutnya**.

1. Pada **Nama, tinjau, dan buat**, untuk **Nama peran**, masukkan nama untuk peran (misalnya, **aws-ec2-spot-fleet-tagging-role**).

1. Tinjau informasi di halaman tersebut, lalu pilih **Buat peran**.

### Cross-service pencegahan wakil yang bingung
<a name="cross-service-confused-deputy-prevention"></a>

[Masalah confused deputy](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) adalah masalah keamanan saat entitas yang tidak memiliki izin untuk melakukan suatu tindakan dapat memaksa entitas yang lebih berhak untuk melakukan tindakan tersebut. Sebaiknya gunakan kunci konteks kondisi global [`aws:SourceArn`](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) dan [`aws:SourceAccount`](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) dalam kebijakan kepercayaan `aws-ec2-spot-fleet-tagging-role` untuk membatasi izin yang diberikan Armada Spot pada layanan lain ke sumber daya.

**Untuk menambahkan kunci SourceAccount kondisi aws: SourceArn dan aws: ke kebijakan kepercayaan `aws-ec` 2-spot-fleet-tagging-role**

1. Buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Di panel navigasi, pilih **Peran**.

1. Temukan `aws-ec2-spot-fleet-tagging-role` yang Anda buat sebelumnya dan pilih tautan (bukan kotak centang).

1. Di bawah **Ringkasan**, pilih tab **Hubungan kepercayaan**, lalu pilih **Edit kebijakan kepercayaan**.

1. Dalam pernyataan JSON, tambahkan elemen `Condition` yang berisi kunci konteks kondisi global `aws:SourceAccount` dan `aws:SourceArn` untuk mencegah [masalah confused deputy](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html), sebagai berikut:

   ```
   "Condition": {
         "ArnLike": {
           "aws:SourceArn": "arn:aws:ec2:us-east-1:{{111122223333}}:spot-fleet-request/sfr-*"
         },
         "StringEquals": {
           "aws:SourceAccount": "{{111122223333}}"
         }
   ```
**catatan**  
Jika nilai `aws:SourceArn` berisi ID akun Anda dan Anda menggunakan kedua kunci konteks kondisi global tersebut, nilai `aws:SourceAccount` dan akun di nilai `aws:SourceArn` harus menggunakan ID akun yang sama saat digunakan dalam pernyataan kebijakan yang sama.

   Kebijakan kepercayaan terakhir adalah sebagai berikut:

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Sid": "ConfusedDeputyPreventionExamplePolicy",
       "Effect": "Allow",
       "Principal": {
         "Service": "spotfleet.amazonaws.com"
       },
       "Action": "sts:AssumeRole",
       "Condition": {
         "ArnLike": {
           "aws:SourceArn": "arn:aws:ec2:{{us-east-1}}:{{111122223333}}:spot-fleet-request/sfr-*"
         },
         "StringEquals": {
           "aws:SourceAccount": "{{111122223333}}"
         }
       }
     }
   }
   ```

------

1. Pilih **Perbarui kebijakan**.

Tabel berikut memberikan nilai potensial untuk `aws:SourceArn` guna membatasi ruang lingkup `aws-ec2-spot-fleet-tagging-role` Anda dalam berbagai tingkat kekhususan.



| Operasi API | Layanan yang dipanggil | Lingkup | `aws:SourceArn` | 
| --- | --- | --- | --- | 
| RequestSpotFleet | AWS STS (AssumeRole) | Batasi kemampuan AssumeRole pada aws-ec2-spot-fleet-tagging-role untuk spot-fleet-requests di akun yang ditentukan. | arn:aws:ec2:\*:{{123456789012}}:spot-fleet-request/sfr-\* | 
| RequestSpotFleet | AWS STS (AssumeRole) | Batasi kemampuan AssumeRole pada aws-ec2-spot-fleet-tagging-role untuk spot-fleet-requests di akun yang ditentukan dan Wilayah yang ditentukan. Perhatikan bahwa peran ini tidak akan dapat digunakan di Wilayah lain. | arn:aws:ec2:{{us-east-1}}:{{123456789012}}:spot-fleet-request/sfr-\* | 
| RequestSpotFleet | AWS STS (AssumeRole) | Batasi kemampuan AssumeRole di aws-ec2-spot-fleet-tagging-role hanya pada tindakan yang memengaruhi armada sfr-11111111-1111-1111-1111-111111111111. Perhatikan bahwa peran ini mungkin tidak dapat digunakan untuk Armada Spot lainnya. Selain itu, peran ini tidak dapat digunakan untuk meluncurkan Armada Spot baru melalui request-spot-fleet. | arn:aws:ec2:{{us-east-1}}:{{123456789012}}:spot-fleet-request/sfr-{{11111111-1111-1111-1111-111111111111}} | 