AWS認定資格 WEB問題集&徹底解説
デベロッパー–アソシエイト
合格に向けて、もっと深く学習する
豊富な問題と詳細なAWSサービス解説を、24時間無料でお試しいただけます
問題文と選択肢
デベロッパーは、テキストファイルを .pdf ファイルに変換する新しいアプリケーションを構築しています。別のアプリケーションが、テキストファイルをソース Amazon S3 バケットに書き込みます。新しいアプリケーションは、Amazon S3 に到着したファイルを読み取り、AWS Lambda 関数を使用してファイルを .pdf ファイルに変換する必要があります。デベロッパーは、Amazon S3 と Amazon CloudWatch Logs へのアクセスを許可する IAM ポリシーを作成しました。
Lambda 関数に正しいアクセス許可があることを確認するために、デベロッパーは何をすべきですか。
Lambda 関数に正しいアクセス許可があることを確認するために、デベロッパーは何をすべきですか。
- AWS Identity and Access Management (IAM) を使用して Lambda 実行ロールを作成する。IAM ポリシーをロールに添付する。Lambda 実行ロールを Lambda 関数に割り当てる。
- AWS Identity and Access Management (IAM) を使用して Lambda 実行ユーザーを作成する。IAM ポリシーをユーザーに添付する。Lambda 実行ユーザーを Lambda 関数に割り当てる。
- AWS Identity and Access Management (IAM) を使用して Lambda 実行ロールを作成する。IAM ポリシーをロールに添付する。IAM ロールを Lambda 関数に環境変数として保存する。
- AWS Identity and Access Management (IAM) を使用して Lambda 実行ユーザーを作成する。IAM ポリシーをユーザーに添付する。IAM ユーザーの認証情報を Lambda 関数に環境変数として保存する。
解説
頻出度★★★★★
この問題は、「Lambda 関数に AWS リソースへの権限を与える」場面で、実行ロール(execution role)を作成して関数に割り当てるという基本形を選べるかがポイント
正解
A. AWS Identity and Access Management (IAM) を使用して Lambda 実行ロールを作成する。IAM ポリシーをロールに添付する。Lambda 実行ロールを Lambda 関数に割り当てる。
Lambda 関数が他の AWS サービスを呼び出すための権限は、実行ロール(Lambda execution role)で与えるのが唯一の正しい方法。
S3 と CloudWatch Logs へのアクセスを許可する IAM ポリシーをロールにアタッチし、そのロールを関数に割り当てれば、Lambda は実行のたびに一時的な認証情報を自動で受け取る。
関数コードにも環境変数にもキーを保存する必要がなく、権限の変更もポリシーの更新だけで反映できる。
B. AWS Identity and Access Management (IAM) を使用して Lambda 実行ユーザーを作成する。IAM ポリシーをユーザーに添付する。Lambda 実行ユーザーを Lambda 関数に割り当てる。
IAM ユーザーは人間や外部システムが長期のアクセスキーで認証するための ID であり、Lambda 関数に「割り当てる」ことはできない。
Lambda の設定項目にあるのはロールであってユーザーではないため、この手順はそもそも実行不可能。
「実行ユーザー」というサービスに存在しない用語が使われている点にも注意。
C. AWS Identity and Access Management (IAM) を使用して Lambda 実行ロールを作成する。IAM ポリシーをロールに添付する。IAM ロールを Lambda 関数に環境変数として保存する。
実行ロールを作成してポリシーをアタッチするところまでは正しいが、ロールは「環境変数として保存する」ものではない。
ロールは関数の設定で実行ロールとして指定して初めて有効になり、環境変数に ARN を書いても Lambda は何の権限も得られない。
正しい手順の一歩手前で誤らせる、もっともらしい誤答。
D. AWS Identity and Access Management (IAM) を使用して Lambda 実行ユーザーを作成する。IAM ポリシーをユーザーに添付する。IAM ユーザーの認証情報を Lambda 関数に環境変数として保存する。
IAM ユーザーのアクセスキーを環境変数に保存する方式は、長期的な認証情報を平文で持ち回ることになり、AWS のセキュリティベストプラクティスに真っ向から反する。
Lambda の環境変数は関数の設定を参照できる相手に見えてしまい、キーのローテーションも自前で行う必要がある。
実行ロールを使えばキー自体が不要になるため、この構成を選ぶ理由はない。
これだけ覚える(記憶フック)
Lambda の権限=実行ロール。ユーザーを作る/認証情報を環境変数に置く選択肢は、見た瞬間に切る。
Lambda の権限=実行ロール。ユーザーを作る/認証情報を環境変数に置く選択肢は、見た瞬間に切る。
正解への思考ルート
問題文から要件を抽出し、選択肢の適否を判断するのがポイントです。| 要件 | 判断ポイント |
|---|---|
| Lambda 関数から Amazon S3・CloudWatch Logs にアクセスする | Lambda への権限付与は実行ロールで行う。IAM ユーザーは関数に割り当てられない →選択肢(B・D)を消す |
| 作成済みの IAM ポリシーを Lambda に効かせる | ポリシーはロールにアタッチし、そのロールを関数の実行ロールに指定して初めて有効になる →選択肢(A)が正解 |
| 認証情報を関数に「保存」する必要があるか | 実行ロールなら一時的な認証情報が自動で供給されるため、環境変数への保存は不要かつ有害 →選択肢(C・D)を消す |
| 正しいアクセス許可を「確認」する手順 | ロールの作成 → ポリシーのアタッチ → 関数への割り当ての 3 手順が揃っているかで判定する →選択肢(A)が正解、選択肢(C)は最後の手順が誤り |
ひっかけポイント
- 選択肢 C は「実行ロールを作成しポリシーをアタッチ」まで正しく、最後の「環境変数として保存する」だけが誤り。冒頭が正しいと最後まで正しく見えるのがひっかけ
- 「Lambda 実行ユーザー」という用語は AWS に存在しない。実在するのは Lambda 実行ロール(execution role)だけ
- 環境変数にアクセスキーを入れる選択肢は原則すべて誤り。DVA では「キーを保存する」発想が出た時点で誤答と判断してよい
- Lambda の環境変数は設定値の受け渡し用。暗号化ヘルパーを使わない限り平文で表示されるため、シークレットの置き場所ではない
出題バリエーション
同じ知識が本番では条件を変えて出題されます。| 問題文がこう変わったら | 正解はこう変わる |
|---|---|
| 「Lambda が VPC 内の RDS にアクセスする必要がある」 | 実行ロールに加えて VPC 設定(ENI 作成権限を含む AWSLambdaVPCAccessExecutionRole)が論点に。 |
| 「Lambda から別アカウントの S3 バケットを読みたい」 | バケットポリシーでのクロスアカウント許可、または AssumeRole が正解軸に。 |
| 「S3 が Lambda 関数を呼び出すための設定は?」 | 実行ロールではなく、Lambda のリソースベースポリシー(AddPermission)が正解に変わる。 |
| 「Lambda で DB のパスワードを扱いたい」 | 環境変数への直書きではなく、Secrets Manager / Parameter Store からの取得が正解軸に。 |
+ 質問 / コメント
解答・解説に疑問がある場合や、よりよい解説がある場合など、お気軽にコメントください。ただし、短文コメントは表示されません。また、中傷などコメントの内容によっては、会員機能を停止させて頂きます。教え学び合える場になれば嬉しいです。(コメント投稿にはログインが必要です)
正答率 78%
No.2 解説
デベロッパーは、テキストファイルを .pdf ファイルに変換する新しいアプリケーションを構築しています。別のアプリケーションが、テキストファイルをソース Amazon S3 バケットに書き込みます。新しいアプリケーションは、Amazon S3 に到着したファイルを読み取り、AWS Lambda 関数を使用してファイルを .pdf ファイルに変換する必要があります。デベロッパーは、Amazon S3 と Amazon CloudWatch Logs へのアクセスを許可する IAM ポリシーを作成しました。
Lambda 関数に正しいアクセス許可があることを確認するために、デベロッパーは何をすべきですか。
Lambda 関数に正しいアクセス許可があることを確認するために、デベロッパーは何をすべきですか。
- AWS Identity and Access Management (IAM) を使用して Lambda 実行ロールを作成する。IAM ポリシーをロールに添付する。Lambda 実行ロールを Lambda 関数に割り当てる。
- AWS Identity and Access Management (IAM) を使用して Lambda 実行ユーザーを作成する。IAM ポリシーをユーザーに添付する。Lambda 実行ユーザーを Lambda 関数に割り当てる。
- AWS Identity and Access Management (IAM) を使用して Lambda 実行ロールを作成する。IAM ポリシーをロールに添付する。IAM ロールを Lambda 関数に環境変数として保存する。
- AWS Identity and Access Management (IAM) を使用して Lambda 実行ユーザーを作成する。IAM ポリシーをユーザーに添付する。IAM ユーザーの認証情報を Lambda 関数に環境変数として保存する。