DVA#44

DVA#43 – DVA#44 – DVA#45
R – F

お疲れ様でした!DVA#44のクイズ終了しました。

解答スコアは %%SCORE%% / %%TOTAL%% 問正解です。

%%RATING%%


あなたの選択した答えは強調表示されています。
問題1
会社はマイクロサービスアプリケーションを AWS に移行し、サーバーレスアーキテクチャに完全に切り替えたいと考えています。同社がそれを達成するのに役立つサービスを選択してください。
A
API Gateway -> ELB -> Amazon EC2 Auto Scaling
B
API Gateway -> Lambda
C
CloudFront -> S3
D
API Gateway -> ECS
問題 1 の説明および補足 
サーバーレス
Lambda を使用した API Gateway は完全なサーバーレスアーキテクチャを提供します。ユーザーはサーバーインスタンスをプロビジョニングする必要がなく、処理は AWS によって動的に完全に行われます。
参考URL:サーバーレス

■以下は間違いです。
・CloudFront -> S3
→Amazon S3 は動的サービスをホストするために使用できないため間違いです。

・API Gateway -> ECS
→ECS は EC2 インスタンスをプロビジョニングする必要があるため間違いです。

・API Gateway -> ELB -> Amazon EC2 Auto Scaling
→EC2 をプロビジョニングする必要があるため間違いです。
問題2
次の属性を持つ DynamoDB テーブルを作成しています。

- PurchaseOrderNumber(パーティションキー)
- CustomerID
- PurchaseDate
- TotalPurchaseValue

アプリケーションの 1 つがテーブルから項目を取得して、日付範囲の特定の顧客の購入の合計値を計算する必要があります。 テーブルに追加する必要があるセカンダリインデックスを選択してください。
A
CustomerID のパーティションキーと PurchaseDate のソートキーを持つローカルセカンダリインデックス。TotalPurchaseValue 属性を投影します。
B
CustomerID のパーティションキーと PurchaseDate のソートキーを持つグローバルセカンダリインデックス。TotalPurchaseValue 属性を投影します。
C
PurchaseDate のパーティションキーと CustomerID のソートキーを持つローカルセカンダリインデックス。TotalPurchaseValue 属性を投影します。
D
PurchaseDate のパーティションキーと CustomerID のソートキーを持つグローバルセカンダリインデックス。TotalPurchaseValue 属性を投影します。
問題 2 の説明および補足 
DynamoDB : グローバルセカンダリインデックス
クエリは特定の CustomerID に対するため、別のパーティションキーにはグローバルセカンダリインデックスが必要です。目的の日付範囲のみを取得するには、PurchaseDate をソートキーにする必要があります。TotalPurchaseValue をインデックスに射影すると、ユースケースを満たすために必要なすべてのデータが提供されます。
参考URL:DynamoDB : グローバルセカンダリインデックス
問題3
開発者が、既存のプログラムをコンソールで AWS Lambda 関数に変換しました。このプログラムは、ローカルのラップトップでは正常に動作しますが、Lambda コンソールでテストすると「Unable to import module (モジュールをインポートできません)」というエラーが表示されます。このエラーを修正できるものを選択してください。
A
不足しているモジュールを lib ディレクトリにインストールします。lib ディレクトリ以下のすべてのファイルを含む ZIP ファイルを作成し、依存ファイルとしてアップロードします。
B
不足しているモジュールをインストールし、ターゲットにカレントディレクトリを指定します。カレントディレクトリ以下のすべてのファイルを含むように ZIP ファイルを作成し、その ZIP ファイルをアップロードします。
C
Lambda コードで、Linux コマンドを起動して、不足しているモジュールを /usr/lib ディレクトリにインストールします。
D
Lambda コンソールで、LB_LIBRARY_PATH 環境を作成し、システムライブラリパスの値を指定します。
問題 3 の説明および補足 
エラー解決 : モジュールをインポートできません
「Unable to import module (モジュールをインポートできません)は、必要なモジュールをまとめてパッケージ化することで解決できます。

※Python で Lambda コードを実行すると「モジュールをインポートできません」というエラーが表示されるのですが、どうすれば解決できますか?
通常、このエラーは、Lambda 環境が Python コードで指定されたライブラリを見つけられない場合に表示されます。これは、Lambda がすべての Python ライブラリに事前にパッケージ化されているわけではないためです。このエラーを解決するには、Lambda の Python コードで使用するライブラリを含めたデプロイパッケージまたは Lambda レイヤーを作成します。
参考URL:Python で Lambda コードを実行すると「モジュールをインポートできません」というエラーが表示されるのですが、どうすれば解決できますか?
問題4
ある企業が、サーバーレスの e コマースウェブアプリケーションを開発しています。このアプリケーションは、Amazon DynamoDB の会社のインベントリテーブルにある複数のアイテムに対して、調整されたオールオアナッシングの変更を行う必要があります。要件を満たすソリューションを選択してください。
A
TransactWriteItems 操作を使用して、変更をグループ化します。テーブルの項目を更新します。
B
Amazon SQS を使用して FIFO キューを設定します。キュー内の変更をグループ化します。グループ化された変更に基づいて、テーブルを更新します。
C
DynamoDB テーブルのトランザクションを有効にします。BatchWriteItem 操作を使用して、アイテムを更新します。
D
トランザクションを管理するために Amazon Aurora DB クラスターにトランザクションテーブルを作成します。Aurora DB テーブルと DynamoDB テーブルを同期するバックエンドプロセスを記述します。
問題 4 の説明および補足 
TransactWriteItems
TransactWriteItems は、テーブル内の複数のアイテムに対する調整されたオールオアナッシングの変更をサポートしているため正解です。

※TransactWriteItems
TransactWriteItems は、最大 25 のアクション要求をグループ化する同期書き込み操作です。これらのアクションは、異なるテーブルのアイテムを対象とすることができますが、異なる AWS アカウントやリージョンではなく、2 つのアクションが同じ項目を対象とすることはできません。例えば、同じ項目に対して ConditionCheck と Update の両方を行うことはできません。トランザクション内のアイテムの合計サイズは、4MB を超えることはできません。アクションはアトミックに完了し、すべてが成功するか、すべてが失敗するかのどちらかです。
参考URL:TransactWriteItems

■以下は間違いです。
・Amazon SQS を使用して FIFO キューを設定します。キュー内の変更をグループ化します。グループ化された変更に基づいて、テーブルを更新します。
・トランザクションを管理するために Amazon Aurora DB クラスターにトランザクションテーブルを作成します。Aurora DB テーブルと DynamoDB テーブルを同期するバックエンドプロセスを記述します。
→無効であり、テーブル内の複数の項目に対する調整されたオールオアナッシングの変更を保証しないため間違いです。

・DynamoDB テーブルのトランザクションを有効にします。BatchWriteItem 操作を使用して、アイテムを更新します。
→複数の項目に対する調整されたオールオアナッシングの変更をサポートしていないため間違いです。

※BatchWriteItem
BatchWriteItem 操作は、1 つまたは複数のテーブルに複数のアイテムを配置または削除します。BatchWriteItem を 1 回呼び出すと、最大 16MB のデータを書き込むことができ、25 個の書き込みまたは削除要求を構成することができます。書き込まれる個々の項目は、最大で 400KB にもなります。
BatchWriteItem で指定された個々の PutItem と DeleteItem の操作はアトミックですが、BatchWriteItem 全体ではアトミックではありません。テーブルのプロビジョニングされたスループットを超えたり、内部処理に失敗したりして要求されたオペレーションが失敗した場合、失敗したオペレーションは UnprocessedItems レスポンスパラメータで返されます。
参考URL:BatchWriteItem
問題5
ある企業では、Amazon API Gateway を使用して、公開用の API を管理しています。CISO は、API をテストアカウントユーザーのみが使用することを要求しています。この特定の AWS アカウントのユーザーに API アクセスを制限するための最も安全な方法を選択してください。
A
使用量プラン
B
API Gateway のリソースポリシー
C
クライアント側の SSL 証明書による認証
D
Cross-Origin Resource Sharing (CORS)
問題 5 の説明および補足 
API Gateway リソースポリシー
API Gateway リソースポリシーは、どの IAM ユーザーまたはロールが API を呼び出すことができるかを制御するのに役立つため正解です。

※API Gateway リソースポリシーを使用して API へのアクセスを制御する
Amazon API Gateway のリソースポリシーは、JSON ポリシードキュメントです。指定されたプリンシパル (通常、IAM ユーザーまたはロール) で API を呼び出せるかどうかにかかわらず、制御する API にアタッチします。API Gateway リソースポリシーを使用すると、API を以下から安全に呼び出すことができます。
・指定された AWS アカウントのユーザー
・指定されたソース IP アドレス範囲または CIDR ブロック
・指定された Virtual Private Cloud (VPC) または VPC エンドポイント (任意のアカウント)

API Gateway のすべての API エンドポイントタイプ (プライベート、エッジ最適化、リージョン) のリソースポリシーを使用できます。
プライベート API の場合は、リソースポリシーを VPC エンドポイントポリシーとともに使用して、どのプリンシパルがどのリソースやアクションにアクセスできるかを制御することができます。
リソースポリシーを API にアタッチするには、AWS Management Console、AWS CLI、AWS SDK を使用します。
API Gateway リソースポリシーは、IAM アイデンティティベースのポリシーとは異なります。IAM アイデンティティベースのポリシーは、IAM ユーザー、グループ、またはロールにアタッチされ、実行できるアクションとリソースを定義します。API Gateway リソースポリシーはリソースにアタッチされます。
API Gateway リソースポリシーは、IAM ポリシーと組み合わせて使用できます。
参考URL:API Gateway リソースポリシーを使用して API へのアクセスを制御する

■以下は間違いです。
・使用量プラン
→使用量プランは、デプロイされた 1 つ以上の API ステージとメソッドにアクセスできるユーザーを指定します。使用量プランは、API にアクセスできる量と速度を指定します。API アクセスを制限するための最も安全な方法ではないため間違いです。
このプランは、API キーを API クライアントを特定し、各キーの関連付けられた API ステージへのアクセスを測定します。これを使用して、スロットリング制限とクォータ制限を設定できます。これらは、個々のクライアント API キーに適用されます。
参考URL:使用量プランおよび API キーとは

・Cross-Origin Resource Sharing (CORS)
→Cross-Origin Resource Sharing (CORS) は、特定のドメインにロードされたクライアントウェブアプリケーションが異なるドメイン内のリソースと通信する方法を定義します。API アクセスを制限するための最も安全な方法ではないため間違いです。
参考URL:Cross-Origin Resource Sharing (CORS) の使用

・クライアント側の SSL 証明書による認証
→クライアント側の SSL 証明書による認証は、クライアントからサーバーへの認証を提供するものであるため間違いです。API アクセスを制限するための最も安全な方法ではありません。
問題6
広告収入で運用する、S3 を使用した写真共有サイトでサイトの訪問者に写真を配信しています。ある時点で、他のサイトが写真共有サイトの写真にリンクしていることが分かり、広告収入が減少していることが分かりました。これを軽減する効果的な方法を選択してください。
A
静的コンテンツに、CloudFront ディストリビューションを使用します。
B
パブリックアクセスを削除し、有効期限付きの署名付き URL を使用します。
C
ウェブサーバーの EBS ボリュームに写真を保存します。
D
違反しているウェブサイトの IP をセキュリティグループでブロックします。
問題 6 の説明および補足 
有効期限付きの署名付き URL
他のサイトからのアクセスを禁止する必要があるため、パブリックアクセスを削除し、有効期限付きの署名付き URL を使用します。サイト訪問者のみが、S3 にあるファイルをダウンロードができるようになります。

※他ユーザーとのオブジェクトの共有
デフォルトでは、すべてのオブジェクトがプライベートです。オブジェクトの所有者のみがプライベートのオブジェクトにアクセスできます。ただし、オブジェクトの所有者はオプションで他ユーザーとオブジェクトを共有することができます。その場合は、署名付き URL を作成し、独自のセキュリティ証明書を使用して、オブジェクトをダウンロードするための期限付きの許可を相手に付与します。
オブジェクトの署名付き URL を作成するときは、セキュリティ証明書を提供し、バケット名とオブジェクトキーを指定する必要があります。また、HTTP メソッド (オブジェクトをダウンロードするには GET) と有効期限の日時も指定する必要があります。署名付き URL は、指定した期間のみ有効です。
署名付き URL を受け取った相手は誰でも、そのオブジェクトにアクセスできるようになります。たとえば、プライベートのバケット内にプライベートの動画を格納している場合は、署名付き URL を生成することで、その動画を他ユーザーと共有できます。
参考URL:他ユーザーとのオブジェクトの共有
問題7
フロントエンドのウェブアプリケーションは、Amazon Cognito ユーザープールを使用してユーザー認証フローを処理しています。開発者は、AWS SDK for JavaScript を使用して Amazon DynamoDB をアプリケーションに統合しています。アクセスキーやシークレットキーを公開せずに、安全に API を呼び出す最適な方法を選択してください。
A
Amazon Cognito ユーザープールの JSON Web Tokens (JWT) を使用して、DynamoDB API にアクセスします。
B
Amazon Cognito ID プールを構成し、JSON Web Token (JWT) を一時的な認証情報と交換します。
C
認証情報をハードコア化し、Amazon S3 を使用してウェブアプリケーションをホストし、サーバー側の暗号化を有効にします。
D
インスタンスプロファイルを設定した Amazon EC2 インスタンスでウェブアプリケーションを実行します。
問題 7 の説明および補足 
Amazon Cognito ID プール (フェデレーティッド ID)
Amazon Cognito ユーザープールは認証用であり、ID プールは承認(アクセス制御)用です。ID プールを使用して、ユーザーに一意の ID を作成し、トークンを AWS ユーザーの認証情報と交換することで他の AWS サービスへのアクセスを許可できます。

※Amazon Cognito ID プール (フェデレーティッド ID)
Amazon Cognito ID プール (フェデレーティッド ID) は、ユーザーのために一意の ID を作成し、ID プロバイダーでそれらをフェデレートすることを可能にします。ID プールを使用すると、権限が制限された一時的な AWS 認証情報を取得して、AWS の他のサービスにアクセスすることができます。Amazon Cognito ID プールは、以下の ID プロバイダーをサポートします。
・パブリックプロバイダー: Login with Amazon (ID プール)、Facebook (ID プール)、Google (ID プール)、「Apple でサインイン」 (ID プール)。
・Amazon Cognito user pools
・Open ID Connect プロバイダー (ID プール)
・SAML ID プロバイダー (ID プール)
・デベロッパーが認証したアイデンティティ (ID プール)
参考URL:Amazon Cognito ID プール (フェデレーティッド ID)

※ID プール (フェデレーティッド ID) の使用
Amazon Cognito ID プールは、ゲストユーザー (未認証)、および認証されてトークンを受け取ったユーザーに一時的な AWS 認証情報を提供します。ID プールはアカウントに固有のユーザー ID データのストアです。
参考URL:ID プール (フェデレーティッド ID) の使用

※ユーザープールと ID プールを使用して AWS のサービスにアクセスする
ユーザープールの認証が正常に行われると、アプリケーションが Amazon Cognito からユーザープールトークンを受け取ります。これらは、ID プールを使用した AWS の他のサービスへの一時的なアクセス権と交換できます。

参考URL:ユーザープールと ID プールを使用して AWS のサービスにアクセスする

■以下は間違いです。
・Amazon Cognito ユーザープールの JSON Web Tokens (JWT) を使用して、DynamoDB API にアクセスします。
→Amazon Cognito ユーザープールの JSON Web Tokens (JWT) を AWS ユーザーの認証情報と交換する必要があるため間違いです。

・認証情報をハードコア化し、Amazon S3 を使用してウェブアプリケーションをホストし、サーバー側の暗号化を有効にします。
→ハードコードされた認証情報の使用は推奨されないため間違っています。

・インスタンスプロファイルを設定した Amazon EC2 インスタンスでウェブアプリケーションを実行します。
→ウェブアプリケーションはフロントエンドであり、AWS SDK for JavaScript を使用しているため間違いです。
お疲れさまでした。 クイズが完了したら、「クイズの結果を見る」ボタンをクリックしてください。あなたが完了していないアイテムは、間違いのマークがされます。 クイズの結果を見る
問題は全部で 7 問。全て答えられるように頑張りましょう!
リスト
戻る
網掛け部分は完了した項目です。
12345
67ゴール
戻る
error: コンテンツの複製・転用は禁止されております。