本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 IAM 執行角色存取 AWS 資源
Device Farm 支援指定由自訂測試執行期環境在測試執行期間擔任的 IAM 角色。此功能可讓您的測試安全地存取帳戶中的 AWS 資源,例如 Amazon S3 儲存貯體、DynamoDB 資料表或應用程式依賴的其他 AWS 服務。
概觀
當您指定 IAM 執行角色時,Device Farm 會在測試執行期間擔任此角色,讓您的測試使用角色中定義的許可與 AWS 服務互動。
IAM 執行角色的常見使用案例包括:
-
存取存放在 Amazon S3 儲存貯體中的測試資料
-
將測試成品推送至 Amazon S3 儲存貯體
-
從 AWS AppConfig 擷取應用程式組態
-
將測試日誌和指標寫入 Amazon CloudWatch
-
將測試結果或狀態訊息傳送至 Amazon SQS 佇列
-
在測試工作流程中呼叫 AWS Lambda 函數
IAM 角色需求
若要搭配 Device Farm 使用 IAM 執行角色,您的角色必須符合下列要求:
-
信任關係:必須信任 Device Farm 服務主體才能擔任該角色。信任政策必須包含
devicefarm.amazonaws.com做為信任的實體。 -
許可:該角色必須具備必要的許可,才能存取您的測試所需的 AWS 資源。
-
工作階段持續時間:只要 Device Farm 專案的任務逾時設定,角色的工作階段持續時間上限必須至少為 。根據預設,Device Farm 專案的任務逾時為 150 分鐘,因此您的角色必須支援至少 150 分鐘的工作階段持續時間。
-
相同的帳戶需求:IAM 角色必須與用來呼叫 Device Farm 的 AWS 帳戶位於相同的 AWS 帳戶中。不支援跨帳戶角色假設。
-
PassRole 許可:呼叫者必須獲授權,才能透過允許對指定執行角色
iam:PassRole執行動作的政策傳遞 IAM 角色。
範例信任政策
下列範例顯示允許 Device Farm 擔任執行角色的信任政策。此信任政策應僅連接至您想要與 Device Farm 搭配使用的特定 IAM 角色,而非您帳戶中的其他角色:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "devicefarm.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
許可政策範例
下列範例顯示許可政策,授予測試中常用 AWS 服務的存取權:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::my-test-bucket", "arn:aws:s3:::my-test-bucket/*" ] }, { "Effect": "Allow", "Action": [ "appconfig:GetConfiguration", "appconfig:StartConfigurationSession" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:log-group:/devicefarm/test-*" }, { "Effect": "Allow", "Action": [ "sqs:SendMessage", "sqs:GetQueueUrl" ], "Resource": "arn:aws:sqs:*:*:test-results-*" } ] }
設定 IAM 執行角色
您可以在專案層級或個別測試執行中指定 IAM 執行角色。在專案層級設定時,該專案內的所有執行都會繼承執行角色。在執行中設定的執行角色將取代其父專案上設定的任何 。
如需設定執行角色的詳細說明,請參閱:
-
在 AWS Device Farm 中建立專案 - 在專案層級設定執行角色
-
在 Device Farm 中建立測試執行 - 用於設定個別執行的執行角色
您也可以使用 Device Farm API 設定執行角色。如需詳細資訊,請參閱 Device Farm API 參考。
最佳實務
為 Device Farm 測試設定 IAM 執行角色時,請遵循下列最佳實務:
-
最低權限原則:僅授予測試運作所需的最低許可。避免使用過於廣泛的許可,例如
*動作或資源。 -
使用資源特定的許可:盡可能限制特定資源 (例如特定 S3 儲存貯體或 DynamoDB 資料表) 的許可,而不是類型的所有資源。
-
獨立測試和生產資源:使用專用測試資源和角色,以避免在測試期間意外影響生產系統。
-
定期角色檢閱:定期檢閱和更新執行角色,以確保其仍符合您的測試需求,並遵循安全最佳實務。
-
使用條件索引鍵:考慮使用 IAM 條件索引鍵進一步限制何時及如何使用角色。
疑難排解
如果您遇到 IAM 執行角色的問題,請檢查下列項目:
-
信任關係:確認角色的信任政策包含
devicefarm.amazonaws.com做為信任的服務。 -
許可:檢查角色是否具有測試嘗試存取之 AWS 服務的必要許可。
-
測試日誌:檢閱測試執行日誌,了解與 AWS API 呼叫或許可拒絕相關的特定錯誤訊息。