IAM 実行ロールを使用して AWS リソースにアクセスする - AWS Device Farm

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

IAM 実行ロールを使用して AWS リソースにアクセスする

Device Farm は、テストの実行中にカスタムテストランタイム環境が引き受ける IAM ロールの指定をサポートしています。この機能を使用すると、Amazon S3 バケット、DynamoDB テーブル、またはアプリケーションが依存する他の AWS サービスなど、テストがアカウント内の 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 実行ロールは、プロジェクトレベルまたは個々のテスト実行に指定できます。プロジェクトレベルで設定すると、そのプロジェクト内のすべての実行が実行ロールを継承します。実行で設定された実行ロールは、親プロジェクトで設定された よりも優先されます。

実行ロールの設定の詳細な手順については、以下を参照してください。

Device Farm API を使用して実行ロールを設定することもできます。詳細については、Device Farm API リファレンスを参照してください。

ベストプラクティス

Device Farm テストの IAM 実行ロールを設定するときは、次のベストプラクティスに従ってください。

  • 最小特権の原則: テストが機能するために必要な最小限のアクセス許可のみを付与します。* アクションやリソースなど、過度に広範なアクセス許可を使用しないでください。

  • リソース固有のアクセス許可を使用する: 可能な場合は、タイプのすべてのリソースではなく、特定のリソース (特定の S3 バケットや DynamoDB テーブルなど) へのアクセス許可を制限します。

  • テストリソースと本番稼働用リソースを分離する: 専用のテストリソースとロールを使用して、テスト中に本番稼働用システムに誤って影響しないようにします。

  • 定期的なロールレビュー: 実行ロールを定期的にレビューして更新し、テストニーズを満たし、セキュリティのベストプラクティスに従っていることを確認します。

  • 条件キーの使用: IAM 条件キーを使用して、ロールをいつどのように使用できるかをさらに制限することを検討してください。

トラブルシューティング

IAM 実行ロールで問題が発生した場合は、以下を確認してください。

  • 信頼関係: ロールの信頼ポリシーに信頼されたサービスdevicefarm.amazonaws.comとして が含まれていることを確認します。

  • アクセス許可: ロールに、テストがアクセスしようとしている AWS のサービスに必要なアクセス許可があることを確認します。

  • テストログ: テスト実行ログで、AWS API コールまたはアクセス許可の拒否に関連する特定のエラーメッセージを確認します。