本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
與AWS服務互動
Greengrass 核心裝置使用 X.509 憑證來連線到AWS IoT Core使用 TLS 相互驗證通訊協定。這些憑證可讓裝置在沒有AWS認證的AWS IoT情況下進行互動,這些憑證通常包含存取金鑰 ID 和秘密存取金鑰。其他AWS服務需要AWS憑證而非 X.509 憑證,才能在服務端點呼叫 API 作業。 AWS IoT Core具有認證提供者,可讓裝置使用其 X.509 憑證來驗證AWS要求。AWS IoT憑證提供者會使用 X.509 憑證驗證裝置,並以臨時、有限權限的安全性權杖形式發出AWS認證。設備可以使用此令牌來簽署和驗證任何AWS請求。這樣就不需要在 Greengrass 核心設備上存儲AWS憑據。如需詳細資訊,請參閱AWS IoT Core開發人員指南中的授權直接呼叫AWS服務。
若要從 AWS IoT Greengrass 擷取認證,核心裝置會使用指向 IAM AWS IoT 角色的角色別名。此 IAM 角色稱為權杖交換角色。您可以在安裝 AWS IoT Greengrass Core 軟體時建立角色別名和權杖交換角色。若要指定核心裝置使用的角色別名,請設定的iotRoleAlias
參數Greengrass 核。
AWS IoT憑據提供程序代表您承擔令牌交換角色,以向核心設備提供AWS憑據。您可以將適當的 IAM 政策附加到此角色,以允許核心裝置存取您的AWS資源,例如 S3 儲存貯體中的元件成品。如需如何設定 Token 交換角色的詳細資訊,請參閱授權核心裝置與 AWS 服務互動。
Greengrass 核心裝置會將AWS認證儲存在記憶體中,依預設,認證會在一小時後過期。如果AWS IoT Greengrass核心軟體重新啟動,它必須再次擷取認證。您可以使用此UpdateRoleAlias作業來設定認證有效的持續時間。
AWS IoT Greengrass提供一個公共組件,即令牌交換服務組件,您可以將其定義為自定義組件中的依賴項以與AWS服務進行交互。Token 交換服務會為您的元件提供環境變數AWS_CONTAINER_CREDENTIALS_FULL_URI
,該變數會定義提供認AWS證的本機伺服器的 URI。當您建立 AWS SDK 用戶端時,用戶端會檢查此環境變數,並連線至本機伺服器以擷取AWS認證,並使用它們簽署 API 要求。這可讓您使用 AWS SDK 和其他工具來呼叫元件中的AWS服務。如需詳細資訊,請參閱 代幣交換服務。
重要
以這種方式取得AWS認證的 Support 已於 2016 年 7 月 13 日新增至 AWS SDK。您的元件必須使用在該日期或之後建立的 AWS SDK 版本。如需詳細資訊,請參閱 Amazon 彈性容器服務開發人員指南中的使用支援的 AWS SDK。
若要取得自訂元件中的AWS認證,請在元件方案中定義aws.greengrass.TokenExchangeService
為相依性。下列範例方法定義了安裝 boto3
注意
若要執行此範例元件,您的裝置必須具有s3:ListAllMyBuckets
權限。如需詳細資訊,請參閱 授權核心裝置與 AWS
服務互動。
此範例元件會執行下列列出 Amazon S3 儲存貯體的 Python 指令碼。list_s3_buckets.py
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)