Berinteraksilah dengan layanan AWS - AWS IoT Greengrass

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

Berinteraksilah dengan layanan AWS

Perangkat inti Greengrass menggunakan sertifikat X.509 untuk terhubung ke AWS IoT Core menggunakan protokol autentikasi bersama TLS. Sertifikat ini memungkinkan perangkat berinteraksi dengan AWS IoT tanpa kredensial AWS, yang biasanya terdiri atas access key ID dan secret access key. Layanan AWS lainnya membutuhkan kredensial AWS dan bukan sertifikat X.509 untuk memanggil operasi API pada titik akhir layanan. AWS IoT Corememiliki penyedia kredensial yang memungkinkan perangkat untuk menggunakan sertifikat X.509 untuk mengautentikasi permintaan AWS. Penyedia kredensial AWS IoT mengautentikasi perangkat menggunakan sertifikat X.509 dan mengeluarkan kredensial AWS dalam bentuk token keamanan sementara dengan hak istimewa terbatas. Perangkat dapat menggunakan token ini untuk menandatangani dan mengautentikasi permintaan AWS. Hal ini menghilangkan kebutuhan untuk menyimpan kredensial AWS.pada perangkat inti Greengrass. Untuk informasi selengkapnya, lihat Mengotorisasi panggilan langsung ke layanan AWS di Panduan Developer AWS IoT Core.

Untuk mengambil kredensial dari AWS IoT, Greengrass, perangkat inti menggunakan peran alias AWS IoT yang menunjuk ke IAM role. IAM role ini disebut peran pertukaran token. Anda membuat peran alias dan token pertukaran peran ketika Anda menginstal perangkat lunak inti AWS IoT Greengrass. Untuk menentukan alias peran yang digunakan perangkat inti, konfigurasikan parameter iotRoleAlias pada Inti Greengrass.

Penyedia kredensial AWS IoT meneruskan peran pertukaran token atas nama Anda untuk memberikan kredensial AWS ke perangkat inti. Anda dapat melampirkan kebijakan IAM yang sesuai dengan peran ini untuk memungkinkan perangkat inti Anda mengakses sumber daya AWS Anda, seperti artefak komponen dalam bucket S3. Untuk informasi lebih lanjut tentang cara mengonfigurasi peran pertukaran token, lihat Otorisasi perangkat inti untuk berinteraksi dengan AWS layanan.

Perangkat inti Greengrass menyimpan kredensial AWS dalam memori, dan kredensialnya kedaluwarsa setelah satu jam secara default. Jika Perangkat lunak inti AWS IoT Greengrass memulai ulang, ia harus mengambil kredensial lagi. Anda dapat menggunakan UpdateRoleAliasoperasi untuk mengonfigurasi durasi kredensialnya valid.

AWS IoT Greengrass menyediakan komponen publik, komponen layanan pertukaran token, yang dapat Anda tentukan sebagai dependensi dalam komponen kustom Anda untuk berinteraksi dengan layanan AWS. Layanan pertukaran token memberi komponen Anda variabel lingkungan, AWS_CONTAINER_CREDENTIALS_FULL_URI, yang menentukan URI ke server lokal yang menyediakan kredensial AWS. Saat Anda membuat klien SDK AWS, klien tersebut akan memeriksa variabel lingkungan ini dan terhubung ke server lokal untuk mengambil AWS dan menggunakannya untuk menandatangani permintaan API. Hal ini memungkinkan Anda menggunakan SDK AWS dan alat lain untuk memanggil layanan AWS dalam komponen Anda. Untuk informasi selengkapnya, lihat Layanan pertukaran token.

penting

Dukungan untuk memperoleh kredensial AWS dengan cara ini telah ditambahkan ke SDK AWS pada 13 Juli 2016. Komponen Anda harus menggunakan Versi SDK AWS yang dibuat pada atau setelah tanggal tersebut. Untuk informasi lebih lanjut, lihat Menggunakan SDK AWS yang didukung pada Panduan Developer Layanan Amazon Elastic Container.

Untuk memperoleh kredensial AWS dalam komponen kustom Anda, tentukan aws.greengrass.TokenExchangeService sebagai dependensi dalam resep komponen. Contoh resep berikut menentukan komponen yang menginstal boto3 dan menjalankan skrip Python yang menggunakan kredensial AWS dari layanan pertukaran token untuk mendaftar 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 AWS layanan.

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)