

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>

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)
+ [Peran tertaut layanan untuk Armada Spot](#service-linked-roles-spot-fleet-requests)
+ [Peran terkait layanan 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.

   **Diperlukan EC2 dan IAM APIs**

   Berikut ini APIs harus dimasukkan 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*.

   **Armada Spot APIs**

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

   **IAM opsional APIs**

   (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 instruksi 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*.

## Peran tertaut layanan untuk Armada Spot
<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 Peran terkait layanan menyediakan cara aman untuk mendelegasikan izin ke AWS layanan karena hanya layanan tertaut yang dapat mengambil peran terkait layanan. Untuk informasi selengkapnya, lihat [Peran terkait layanan](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**AWSServiceRoleForEC2SpotFleet** untuk meluncurkan dan mengelola instance atas nama Anda.

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

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

**AWSServiceRoleForEC2SpotFleet**Peran tersebut memberikan izin kepada Armada Spot untuk meminta, meluncurkan, menghentikan, dan menandai instans 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`- Jelaskan Amazon Machine Images (AMIs) untuk instance
+ `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**AWSServiceRoleForEC2SpotFleet** peran terkait layanan saat pertama kali Anda membuat Spot Fleet menggunakan konsol. 

Jika Anda memiliki permintaan Armada Spot aktif sebelum Oktober 2017, saat Amazon EC2 mulai mendukung peran terkait layanan ini, Amazon EC2 membuat peran tersebut di akun Anda. **AWSServiceRoleForEC2SpotFleet** 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 Armada Spot, Anda harus terlebih dahulu memastikan bahwa peran ini ada.

**Untuk membuat AWSService RoleFor EC2 SpotFleet peran untuk Armada Spot 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 **jenis entitas Tepercaya**, pilih **AWS layanan**.

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

   1. Untuk **kasus Penggunaan**, pilih **EC2 - Armada Spot**.
**catatan**  
Kasus 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, tinjau, dan buat**, pilih **Buat peran**.

**Untuk membuat AWSService RoleFor EC2 SpotFleet peran Armada Spot 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 lagi perlu menggunakan Spot Fleet, kami sarankan Anda menghapus file**AWSServiceRoleForEC2SpotFleet** wewenang. 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 CMKs untuk digunakan dengan snapshot terenkripsi AMIs dan EBS
<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 Armada Spot dan Anda menggunakan kunci terkelola pelanggan untuk enkripsi, Anda harus memberikan **AWSServiceRoleForEC2SpotFleet**izin peran 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 AWSService RoleFor EC2 SpotFleet peran untuk menggunakan CMK**
+ Gunakan perintah [create-grant](https://docs.aws.amazon.com/cli/latest/reference/kms/create-grant.html) untuk menambahkan hibah ke CMK dan untuk menentukan kepala sekolah (peran terkait layanan **AWSServiceRoleForEC2SpotFleet**) yang diberi izin untuk melakukan operasi yang diizinkan oleh pemberian tersebut. CMK ditentukan oleh parameter `key-id` dan ARN CMK. Kepala sekolah ditentukan oleh`grantee-principal` parameter dan ARN dari**AWSServiceRoleForEC2SpotFleet** peran terkait 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/aws-service-role/spotfleet.amazonaws.com/AWSServiceRoleForEC2SpotFleet \
      --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"
  ```

## Peran terkait layanan 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 [Peran tertaut layanan untuk permintaan Instans 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 Armada Spot baru atau yang sudah ada serta instance 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**.

### Pencegahan confused deputy lintas layanan
<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 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) dan [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-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 `aws-ec2-spot-fleet-tagging-role` kepercayaan**

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 AssumeRole aws-ec2-spot-fleet-tagging-role kemampuan spot-fleet-requests di akun yang ditentukan. | arn:aws:ec2:\$1:123456789012:spot-fleet-request/sfr-\$1 | 
| RequestSpotFleet | AWS STS (AssumeRole) | Batasi AssumeRole aws-ec2-spot-fleet-tagging-role kemampuan 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-\$1 | 
| 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. request-spot-fleet | arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-11111111-1111-1111-1111-111111111111 | 