Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Greengrass-Core-Geräte verwenden X.509-Zertifikate, um AWS IoT Core mithilfe von TLS-Protokollen für die gegenseitige Authentifizierung eine Verbindung herzustellen. Mit diesen Zertifikaten können Geräte AWS IoT ohne AWS Anmeldeinformationen interagieren, die in der Regel aus einer Zugriffsschlüssel-ID und einem geheimen Zugriffsschlüssel bestehen. Andere AWS Dienste benötigen AWS Anmeldeinformationen anstelle von X.509-Zertifikaten, um API-Operationen an Dienstendpunkten aufzurufen. AWS IoT Core hat einen Anbieter für Anmeldeinformationen, der es Geräten ermöglicht, ihr X.509-Zertifikat zur Authentifizierung von Anfragen zu verwenden. AWS Der Anbieter AWS IoT für Anmeldeinformationen authentifiziert Geräte mithilfe eines X.509-Zertifikats und gibt AWS Anmeldeinformationen in Form eines temporären Sicherheitstokens mit eingeschränkten Rechten aus. Geräte können dieses Token verwenden, um jede Anfrage zu signieren und zu authentifizieren. AWS Dadurch entfällt die Notwendigkeit, AWS Anmeldeinformationen auf Greengrass-Core-Geräten zu speichern. Weitere Informationen finden Sie unter Autorisieren von direkten Aufrufen von AWS Diensten im AWS IoT Core Entwicklerhandbuch.
Um Anmeldeinformationen von Greengrass abzurufen AWS IoT, verwenden Kerngeräte einen AWS IoT Rollenalias, der auf eine IAM-Rolle verweist. Diese IAM-Rolle wird Token-Exchange-Rolle genannt. Sie erstellen den Rollenalias und die Token-Austauschrolle, wenn Sie die AWS IoT Greengrass Core-Software installieren. Um den Rollenalias anzugeben, den ein Core-Gerät verwendet, konfigurieren Sie den iotRoleAlias
Parameter vonGrüngraskern.
Der Anbieter AWS IoT für Anmeldeinformationen übernimmt in Ihrem Namen die Rolle des Tokenaustauschs, um AWS Anmeldeinformationen für Kerngeräte bereitzustellen. Sie können dieser Rolle entsprechende IAM-Richtlinien zuordnen, um Ihren Kerngeräten den Zugriff auf Ihre AWS Ressourcen zu ermöglichen, z. B. auf Komponentenartefakte in S3-Buckets. Weitere Informationen zur Konfiguration der Token-Austauschrolle finden Sie unter. Autorisieren Sie Kerngeräte für die Interaktion mit Diensten AWS
Greengrass-Core-Geräte speichern AWS Anmeldeinformationen im Speicher, und die Anmeldeinformationen laufen standardmäßig nach einer Stunde ab. Wenn die AWS IoT Greengrass Core-Software neu gestartet wird, muss sie die Anmeldeinformationen erneut abrufen. Sie können den UpdateRoleAliasVorgang verwenden, um die Gültigkeitsdauer der Anmeldeinformationen zu konfigurieren.
AWS IoT Greengrass stellt eine öffentliche Komponente bereit, die Token-Exchange-Dienstkomponente, die Sie als Abhängigkeit in Ihrer benutzerdefinierten Komponente definieren können, um mit AWS Diensten zu interagieren. Der Token-Exchange-Dienst stellt Ihrer Komponente eine Umgebungsvariable zur VerfügungAWS_CONTAINER_CREDENTIALS_FULL_URI
, die den URI für einen lokalen Server definiert, der AWS Anmeldeinformationen bereitstellt. Wenn Sie einen AWS SDK-Client erstellen, sucht der Client nach dieser Umgebungsvariablen und stellt eine Verbindung zum lokalen Server her, um AWS Anmeldeinformationen abzurufen, und verwendet sie zum Signieren von API-Anfragen. Auf diese Weise können Sie andere Tools verwenden AWS SDKs , um AWS Dienste in Ihren Komponenten aufzurufen. Weitere Informationen finden Sie unter Token-Austauschdienst.
Wichtig
Die Support für den Erwerb von AWS Anmeldeinformationen auf diese Weise wurde AWS SDKs am 13. Juli 2016 hinzugefügt. Ihre Komponente muss eine AWS SDK-Version verwenden, die an oder nach diesem Datum erstellt wurde. Weitere Informationen finden Sie unter Verwenden eines unterstützten AWS SDK im Amazon Elastic Container Service Developer Guide.
Um AWS Anmeldeinformationen in Ihrer benutzerdefinierten Komponente abzurufen, definieren Sie aws.greengrass.TokenExchangeService
sie als Abhängigkeit im Komponentenrezept. Das folgende Beispielrezept definiert eine Komponente, die boto3
Anmerkung
Um diese Beispielkomponente ausführen zu können, muss Ihr Gerät über die entsprechende Berechtigung verfügen. s3:ListAllMyBuckets
Weitere Informationen finden Sie unter Autorisieren Sie Kerngeräte für die Interaktion mit Diensten AWS.
{
"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"
}
}
]
}
Diese Beispielkomponente führt das folgende Python-Skript aus, list_s3_buckets.py
das Amazon S3 S3-Buckets auflistet.
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)