本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 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 账户中。不支持跨账户角色假设。
-
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 配置执行角色。如需了解更多信息,请参阅 Dev ice Farm API 参考。
最佳实践
在为 Device Farm 测试配置 IAM 执行角色时,请遵循以下最佳实践:
-
最低权限原则:仅授予测试运行所需的最低权限。避免使用过于宽泛的权限,例如
*操作或资源。 -
使用特定资源的权限:如果可能,请将权限限制为特定资源(例如特定的 S3 存储桶或 DynamoDB 表),而不是某一类型的所有资源。
-
将测试资源和生产资源分开:使用专用的测试资源和角色,以避免在测试期间意外影响生产系统。
-
定期审查角色:定期审查和更新您的执行角色,以确保他们仍然满足您的测试需求并遵循安全最佳实践。
-
使用条件键:考虑使用 IAM 条件键来进一步限制角色的使用时间和方式。
问题排查
如果您遇到与 IAM 执行角色有关的问题,请检查以下内容:
-
信任关系:验证角色的信任策略是否包含
devicefarm.amazonaws.com为可信服务。 -
权限:检查该角色是否具有您的测试尝试访问的 AWS 服务的必要权限。
-
测试日志:查看测试执行日志,了解与 AWS API 调用或权限拒绝相关的特定错误消息。