Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Berinteraksi dengan AWS layanan
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 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.
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 AWS layanan.
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 UpdateRoleAliasoperasi 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.
penting
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 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
catatan
Untuk menjalankan komponen contoh ini, perangkat Anda harus memiliki izin s3:ListAllMyBuckets
. Untuk informasi selengkapnya, lihat Otorisasi perangkat inti untuk berinteraksi dengan AWS
layanan.
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)