

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

# Berinteraksi dengan AWS layanan
<a name="interact-with-aws-services"></a>

Perangkat inti Greengrass menggunakan sertifikat X.509 untuk terhubung menggunakan protokol otentikasi timbal balik TLS. AWS IoT Core Sertifikat ini memungkinkan perangkat berinteraksi AWS IoT tanpa AWS kredensyal, yang biasanya terdiri dari ID kunci akses dan kunci akses rahasia. AWS Layanan lain memerlukan AWS kredensyal alih-alih sertifikat X.509 untuk memanggil operasi API di titik akhir layanan. AWS IoT Core memiliki penyedia kredensyal yang memungkinkan perangkat menggunakan sertifikat X.509 mereka untuk mengautentikasi permintaan. AWS Penyedia AWS IoT kredensyal mengautentikasi perangkat menggunakan sertifikat X.509 dan mengeluarkan AWS kredensyal dalam bentuk token keamanan hak istimewa terbatas sementara. Perangkat dapat menggunakan token ini untuk menandatangani dan mengautentikasi permintaan AWS . Ini menghilangkan kebutuhan untuk menyimpan AWS kredensyal pada perangkat inti Greengrass. Untuk informasi selengkapnya, lihat [Mengotorisasi panggilan langsung ke layanan AWS](https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html) di *Panduan Developer AWS IoT Core *.

Untuk mengambil kredensyal dari, AWS IoT Greengrass, perangkat inti menggunakan alias peran yang menunjuk ke peran AWS IoT IAM. IAM role ini disebut *peran pertukaran token*. Anda membuat alias peran dan peran pertukaran token saat Anda menginstal perangkat lunak AWS IoT Greengrass Core. Untuk menentukan alias peran yang digunakan perangkat inti, konfigurasikan parameter `iotRoleAlias` pada [Inti Greengrass](greengrass-nucleus-component.md).

Penyedia AWS IoT kredensyal mengasumsikan peran pertukaran token atas nama Anda untuk memberikan AWS kredensyal ke perangkat inti. Anda dapat melampirkan kebijakan IAM yang sesuai ke peran ini untuk memungkinkan perangkat inti Anda mengakses AWS sumber daya Anda, seperti artefak komponen di bucket S3. Untuk informasi lebih lanjut tentang cara mengonfigurasi peran pertukaran token, lihat [Otorisasi perangkat inti untuk berinteraksi dengan layanan AWS](device-service-role.md).

Perangkat inti Greengrass AWS menyimpan kredensyal dalam memori, dan kredensialnya kedaluwarsa setelah satu jam secara default. Jika perangkat lunak AWS IoT Greengrass Core dimulai ulang, ia harus mengambil kredensyal lagi. Anda dapat menggunakan [UpdateRoleAlias](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateRoleAlias.html)operasi untuk mengonfigurasi durasi kredensialnya valid.

AWS IoT Greengrass menyediakan komponen publik, komponen layanan pertukaran token, yang dapat Anda definisikan sebagai ketergantungan dalam komponen kustom Anda untuk berinteraksi dengan AWS layanan. Layanan pertukaran token menyediakan komponen Anda dengan variabel lingkungan,`AWS_CONTAINER_CREDENTIALS_FULL_URI`, yang mendefinisikan URI ke server lokal yang menyediakan AWS kredensyal. Saat Anda membuat klien AWS SDK, klien memeriksa variabel lingkungan ini dan terhubung ke server lokal untuk mengambil AWS kredensyal dan menggunakannya untuk menandatangani permintaan API. Ini memungkinkan Anda menggunakan AWS SDKs dan alat lain untuk memanggil AWS layanan di komponen Anda. Untuk informasi selengkapnya, lihat [Layanan pertukaran token](token-exchange-service-component.md).

**penting**  <a name="token-exchange-service-aws-sdk-requirement"></a>
Support untuk memperoleh AWS kredensyal dengan cara ini ditambahkan ke AWS SDKs pada tanggal 13 Juli 2016. Komponen Anda harus menggunakan versi AWS SDK yang dibuat pada atau setelah tanggal tersebut. Untuk informasi selengkapnya, lihat [Menggunakan AWS SDK yang didukung](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#task-iam-roles-minimum-sdk) di *Panduan Pengembang Layanan Amazon Elastic Container*.

Untuk memperoleh AWS kredensi dalam komponen kustom Anda, tentukan `aws.greengrass.TokenExchangeService` sebagai dependensi dalam resep komponen. Contoh resep berikut mendefinisikan komponen yang menginstal [boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html) dan menjalankan skrip Python yang menggunakan AWS kredensyal dari layanan pertukaran token untuk mencantumkan bucket Amazon S3.

**catatan**  
Untuk menjalankan komponen contoh ini, perangkat Anda harus memiliki izin `s3:ListAllMyBuckets`. Untuk informasi selengkapnya, lihat [Otorisasi perangkat inti untuk berinteraksi dengan layanan AWS](device-service-role.md).

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

```
{
  "RecipeFormatVersion": "2020-01-25",
  "ComponentName": "com.example.ListS3Buckets",
  "ComponentVersion": "1.0.0",
  "ComponentDescription": "A component that uses the token exchange service to list S3 buckets.",
  "ComponentPublisher": "Amazon",
  "ComponentDependencies": {
    "aws.greengrass.TokenExchangeService": {
      "VersionRequirement": "^2.0.0",
      "DependencyType": "HARD"
    }
  },
  "Manifests": [
    {
      "Platform": {
        "os": "linux"
      },
      "Lifecycle": {
        "install": "pip3 install --user boto3",
        "Run": "python3 -u {artifacts:path}/list_s3_buckets.py"
      }
    },
    {
      "Platform": {
        "os": "windows"
      },
      "Lifecycle": {
        "install": "pip3 install --user boto3",
        "Run": "py -3 -u {artifacts:path}/list_s3_buckets.py"
      }
    }
  ]
}
```

------
#### [ YAML ]

```
---
RecipeFormatVersion: '2020-01-25'
ComponentName: com.example.ListS3Buckets
ComponentVersion: '1.0.0'
ComponentDescription: A component that uses the token exchange service to list S3 buckets.
ComponentPublisher: Amazon
ComponentDependencies:
  aws.greengrass.TokenExchangeService:
    VersionRequirement: '^2.0.0'
    DependencyType: HARD
Manifests:
  - Platform:
      os: linux
    Lifecycle:
      install:
        pip3 install --user boto3
      Run: |-
        python3 -u {artifacts:path}/list_s3_buckets.py
  - Platform:
      os: windows
    Lifecycle:
      install:
        pip3 install --user boto3
      Run: |-
        py -3 -u {artifacts:path}/list_s3_buckets.py
```

------

Komponen contoh ini menjalankan skrip Python berikut, `list_s3_buckets.py` yang berisi daftar bucket Amazon S3.

```
import boto3
import os

try:
    print("Creating boto3 S3 client...")
    s3 = boto3.client('s3')
    print("Successfully created boto3 S3 client")
except Exception as e:
    print("Failed to create boto3 s3 client. Error: " + str(e))
    exit(1)

try:
    print("Listing S3 buckets...")
    response = s3.list_buckets()
    for bucket in response['Buckets']:
        print(f'\t{bucket["Name"]}')
    print("Successfully listed S3 buckets")
except Exception as e:
    print("Failed to list S3 buckets. Error: " + str(e))
    exit(1)
```