AWS 認定デベロッパー – アソシエイト問題集

#はじめに
- 本問題集は、私がAWS 認定デベロッパー – アソシエイトを受験するにあたって、無料の問題集が欲しいと思い作成しました。少しでも皆様のお役に立てれば幸いです。
- ソースはAWS公式サイトを前提としています。もし、間違いが有りましたらご指摘ください。
- 徐々に更新して問題数は増やしていこうと思っています。

#問題

##問1 
以下に当てはまるものを選択肢から選択してください。
DynamoDBのSort Key以外に絞り込み検索を行うことが出来る。Partition Keyが同一で他のアイテムからの検索の為に使用できる。

A. Local Secondary Index(LSI)
B. Global Secondary Index(GSI)

[正解を表示](#問1の正解)

##問2
以下に当てはまるものを選択肢から選択してください。
DynamoDBの読み込みキャパシティーユニットの計算をしてください。項目サイズが3.5KB、1秒当たりの読込項目数が1000回/秒、強力な整合性のある読込をする場合の必要なキャパシティユニット。

A. 1000RCU
B. 2000RCU
C. 3000RCU
D. 3500RCU
 

[正解を表示](#問2の正解)

##問3
以下に当てはまるものを選択肢から選択してください。
DynamoDBの書き込みキャパシティーユニットの計算をしてください。項目サイズが1.1KB、1秒当たりの書込項目数が1000回/秒の場合の必要なキャパシティユニット。


A. 1000WCU
B. 1100WCU
C. 2000RCU
D. 4400RCU
 

[正解を表示](#問3の正解)




##問4
以下に当てはまるものを選択肢から選択してください。
DynamoDBのテーブル操作は公開APIを使用する事が出来ます。
「1件のアイテムを書き込むAPI」は何でしょうか？

A. PutItem
B. UpdateItem
C. AddItem
D. WriteItem


[正解を表示](#問4の正解)



##問5
以下に当てはまるものを選択肢から選択してください。
DynamoDBのテーブルからデータを読み取るには、GetItem、Query や Scan などのオペレーションを使用します。ですが、デフォルトではすべての項目属性を返します。すべての属性ではなく、一部の属性のみを取得するには、何を指定すれば良いでしょうか？

A. S3 Select
B. DynamoDB Select
C. プロジェクション式
D. ラムダ式


[正解を表示](#問5の正解)



##問6
以下に当てはまるものを選択肢から選択してください。
DynamoDBのテーブルの項目を自動的に削除する機能は何でしょうか？

A. Automatic deletion
B. TTL
C. VACUUM
D. SQS

[正解を表示](#問6の正解)

##問7
以下に当てはまるものを選択肢から選択してください。
Lambdaの関数がイベントの処理を終了すると、Lambda は呼び出しに関するメトリクスを Amazon CloudWatch に送信します。Lambdaの実行回数を計測したメトリックスを選択してください。

A. Duration
B. Throttles
C. IteratorAge
D. Invocations

[正解を表示](#問7の正解)


##問8
以下に当てはまるものを選択肢から選択してください。
Lambdaの関数呼び出しのパフォーマンスについてLambdaパフォーマンスメトリクスとして計測されます。イベントソースマッピングにおいてストリームの最後のデータを読み込んだ時刻からイベントをLambda関数に送信するまでの時間を計測したパフォーマンスメトリクスを選択してください。
（ストリームがレコードを受信した時刻 － イベントソースマッピングがイベントを関数に送信したときの時刻）

A. Duration
B. DeadLetterErrors
C. IteratorAge
D. Invocations

[正解を表示](#問8の正解)

##問9
以下に当てはまるものを選択肢から選択してください。
Lambda はイベントを処理するインスタンスの総数として同時実行メトリクスを報告しています。 プロビジョニングされた同時実行でイベントを処理している関数インスタンスの数を確認できる同時実行メトリクスを選択してください。

A. ProvisionedConcurrentExecutions 
B. ProvisionedConcurrencyUtilization 
C. UnreservedConcurrentExecutions 
D. ConcurrentExecutions 

[正解を表示](#問9の正解)

##問10
以下に当てはまるものを選択肢から選択してください。
Lambda の機能として、Lambda関数を異なるバージョンにデプロイ管理する事が出来る機能を選択してください。

A. タグ
B. エイリアス
C. バージョン

[正解を表示](#問10の正解)

##問11
以下に当てはまるものを選択肢から選択してください。
AWS Lambda では、関数の実行と保存に使用できるコンピューティングおよびストレージリソースの量が制限されています。制限の数を引き上げるには、サポートセンターコンソールにおいて上限緩和申請を行う必要が有ります。同時実行数のデフォルト制限数を以下から選択してください。

A. 100
B. 1000
C. 10000

[正解を表示](#問11の正解)

##問12
以下に当てはまるものを選択肢から選択してください。
Amazon DynamoDB と AWS Lambda はトリガー (DynamoDB ストリーム 内のイベントに自動的に応答するコード) を作成できます。トリガーを使用すると、DynamoDB テーブル内のデータ変更に対応するアプリケーションを構築できます。必要な設定方法を以下から選択してください。

A. 特別な設定は要らない
B. DynamoDBテーブルのストリームを有効にする
C. DynamoDBテーブルのストリームを有効にした上で、AWS Lambda 関数のイベントソースマッピングを作成する。イベントソースマッピングの ``` --event-source ``` にDynamoDBのARNを指定する
C. DynamoDBテーブルのストリームを有効にした上で、DynamoDBのAttributesにAWS Lambda関数のARNを設定し、イベントソースマッピングを作成する。

[正解を表示](#問12の正解)

##問13
以下に当てはまるものを選択肢から選択してください。
AWS Lambda 関数を使用して、Amazon Kinesis データストリームのレコードを処理できます。Lambda関数の呼び出しが増加したためにパフォーマンスが悪化しました。適切な対処方法を以下から1つ選択してください。

A. Lambda関数の割り当てメモリを増やす
B. Lambda関数のエイリアスを使用する
C. Kinesis ストリームのシャード数を増やす
D. Kinesis ストリームの割り当てメモリを増やす

[正解を表示](#問13の正解)

##問14
以下に当てはまるものを選択肢から選択してください。
Lambdaオーソライザーについて適切に述べているものを選択してください。

A. Lambda関数を実行する際の認証機能
B. Lambda 関数を使用して、API へのアクセスを制御する API Gateway の機能
C. Lambda 関数の新しいバージョンを自動的にデプロイし、新しいバージョンへのトラフィックを徐々に増やしていくことが出来る機能
D. Amazon RDS Proxy データベースプロキシを作成できる機能

[正解を表示](#問14の正解)

##問15
以下に当てはまるものを選択肢から選択してください。
Lambda環境変数を使用して、データベース接続情報などの情報を安全に保存する事が出来ます。また開発者は、コードを更新することなく関数の動作を制御出来ます。環境変数を保管時に暗号化しておきたいと思います。以下選択肢から適切なものを1つ選択してください。

A. IAMロールをLambda関数に割り当てる
B. KMSを使用する
C. Lambda Secretを使用する

[正解を表示](#問15の正解)

##問16
以下に当てはまるものを選択肢から選択してください。
Amazon S3やAmazon SNS などのサービスはLambda関数を非同期に呼び出してイベントを処理することが出来ます。関数を非同期的に呼び出す場合は、関数コードからのレスポンスを待機しません。
Lambda は関数の非同期イベントキューを管理し、エラー発生時に再試行を行います。関数からエラーが返された場合、Lambda はその関数をあと 2 回再試行します。
この場合、Lambda関数は合計何回実行されることになるでしょうか？

A. 2回
B. 3回
C. 4回
D. 無限

[正解を表示](#問16の正解)

##問17
以下に当てはまるものを選択肢から選択してください。
Amazon API Gateway は、CloudWatch にメトリクスデータを毎分送信します。
API Gateway がバックエンドにリクエストを中継してから、バックエンドからレスポンスを受け取るまでの時間を観測できるAPI Gateway メトリクスを1つ選択してください。

A. IntegrationLatency
B. Latency
C. Backend Latency

[正解を表示](#問17の正解)

##問18
以下に当てはまるものを選択肢から選択してください。
Lambda関数にデッドレターキューを設定することが出来ます。非同期呼び出しが失敗したイベントを送信できるトピックを選択してください。2つ選択します。

A. Amazon Simple Queue Service (SQS) 
B. Amazon Simple Notification Service(SNS)
C. Amazon Kinesis
D. Amazon Simple Storage Service (S3) 

[正解を表示](#問18の正解)

##問19
以下に当てはまるものを選択肢から選択してください。
Lambdaオーソライザーには2種類あります。以下選択肢から2つ選択してください。

A. セッションベース
B. トークンベース 
C. APIベース
D. リクエストパラメータベース

[正解を表示](#問19の正解)

##問20
以下に当てはまるものを選択肢から選択してください。
CodeDeployのアプリケーション仕様ファイルでデプロイを管理するために CodeDeploy によって使用される YAML 形式または JSON 形式ファイルの名前。ここでは、Amazon ECS または AWS Lambda デプロイの AppSpec file の名前を指します。

A. deployspec.yaml / deployspec.json
B. appspec.yaml / appspec.json 
C. codespec.yaml / codespec.json
D. deploy.yaml / deploy.json

[正解を表示](#問20の正解)

##問21
以下に当てはまるものを選択肢から選択してください。
AWS Lambda フックは、ライフサイクルイベントの名前の後の新しい行に文字列で指定された 1 つの Lambda 関数です。各フックはデプロイごとに 1 回実行されます。置き換えタスクセットが作成される前にタスクを実行するために使用するライフサイクルイベントを選択してください。

A. BeforeAllowTraffic 
B. BeforeInstall 
C. AfterInstall 
D. AfterAllowTestTraffic 
E. AfterAllowTraffic 

[正解を表示](#問21の正解)

##問22
以下に当てはまるものを選択肢から選択してください。
EC2/オンプレミス のデプロイのフックは、デプロイごとに 1 回インスタンスに対して実行されます。フックには実行するスクリプトを 1 つまたは複数指定することができます。デプロイが正常に完了したことを確認するために使用するライフサイクルイベントを選択してください。

A. DownloadBundle
B. ValidateService 
C. BeforeBlockTraffic
D. AfterBlockTraffic 
E. BeforeAllowTraffic 

[正解を表示](#問22の正解)

##問23
以下に当てはまるものを選択肢から選択してください。
CodePipeline パイプラインに手動の承認アクションを追加する方法を以下から選択してください。

A. 出来ない
B. CodePipelineコンソールのアクション編集ページでアクションプロバイダーの承認を[手動承認]、SNSトピックのARNを指定する
C. CodeBuildコンソールのアクション編集ページでアクションプロバイダーの承認を[手動承認]、SNSトピックのARNを指定する
D. CodeDeployコンソールのアクション編集ページでアクションプロバイダーの承認を[手動承認]、SNSトピックのARNを指定する

[正解を表示](#問23の正解)

##問24
以下に当てはまるものを選択肢から選択してください。
AWS CodeCommitのリポジトリ制限値について。アカウント毎にいくつまでか？

A. 100
B. 1000
C. 10000
D. 上限はない

[正解を表示](#問24の正解)

##問25
以下に当てはまるものを選択肢から選択してください。
CodeBuildのビルドアーティファクト (キャッシュ、ログ、出力された生のテストレポートファイルそしてビルド結果など) を保管している時の暗号化の設定方法として、記載が正しいものを選択してください。

A. デフォルトで暗号化されています。Amazon S3 のカスタマーマスターキー (CMKs) が使用されています。
B. 署名バージョン 4 の署名プロセスで署名された TLS 接続を使用して保護する
C. 暗号化する事は出来ません。

[正解を表示](#問25の正解)

##問26
以下に当てはまるものを選択肢から選択してください。
AWS CodeBuild でビルドを計画するにあたって、CodeBuildのビルド仕様に関して記載された仕様ファイルをソースコードに含めることにしました。適切なものを1つ選択してください。

A. deployspec.ymlをソースディレクトリのルートに配置
B. codebuild.ymlをソースディレクトリのルートに配置
C. buildspec.yml をソースディレクトリのルートに配置

[正解を表示](#問26の正解)

##問27
以下に当てはまるものを選択肢から選択してください。
AWS CodeBuildの環境変数のうち、ビルドが実行されている AWS リージョンを取得できるものを選択してください。

A. BUILD_DEFAUT_REGION/BUILD_REGION
B. CODE_BUILD_DEFAULT_REGION/CODE_BUILD_REGION
C. DEPLOY_DEFAULT_REGION/DEPLOY_REGION
D. AWS_DEFAULT_REGION/AWS_REGION

[正解を表示](#問27の正解)

##問28
以下に当てはまるものを選択肢から選択してください。
AWS CodeBuild 内でユーザーやロール、または AWS のサービスによって実行されたアクションを記録する事が出来るサービスを選択してください。

A. S3
B. CloudWatch
C. Amazon S3 Glacier
D. AWS CloudTrail 

[正解を表示](#問28の正解)

##問29
以下に当てはまるものを選択肢から選択してください。
AWS Command Line Interface (AWS CLI)、または AWS SDK を使用して、AWS CodeBuild で使用するエンドポイントを指定する事が出来ます。
AWS CLI を使用して、AWS CodeBuild にアクセスするエンドポイントを指定するには、CodeBuild コマンドに 何の引数を指定すれば良いでしょうか？

A. --endpoint-uri 引数
B. --endpoint-url 引数
C. --access-point-uri 引数
D. --access-point-url 引数

[正解を表示](#問29の正解)

##問30
以下に当てはまるものを選択肢から選択してください。
AWS Elastic Beanstalkの拡張状態ヘルスレポートを有効にすることで、環境内のリソースに関する追加の情報を収集できます。Elastic Beanstalk は、収集された情報を分析して環境全体の状態をより的確に示し、アプリケーションの使用を妨げる可能性のある問題を特定する事が可能となります。
環境内で実行されている Amazon EC2 インスタンスに関する詳細なヘルス情報をするには、どのような設定を行えば良いでしょうか？

A. EC2インスタンスのヘルス情報を収集する事は出来ない
B. SSM エージェントをEC2にインストール
C. ヘルスエージェントをEC2にインストール
D. CloudWatchエージェントをEC2にインストールする

[正解を表示](#問30の正解)

##問31
以下に当てはまるものを選択肢から選択してください。
AWS Elastic Beanstalkのデプロイオプションについて、以下の特徴を示すものを選択してください。
低速のデプロイ方法で、かつ、デプロイ時に既存のインスタンスを更新するのではなく、常に新しいアプリケーションバージョンを新しいインスタンスにデプロイします。

A. Rolling 
B. Always new deploy
C. Rolling with additional batch 
D. Immutable

[正解を表示](#問31の正解)

##問32
以下に当てはまるものを選択肢から選択してください。
AWS Elastic Beanstalk アプリケーションで、完了するまでに長い時間がかかるオペレーションまたはワークフローを実行する場合、それらのタスクを専用のワーカー環境にオフロードできます。
ソースファイルに定期的なタスクを定義する必要が有ります。そのファイル名を選択してください。

A. batch.yaml
B. cron.yaml
C. task.yaml
D. work.yaml

[正解を表示](#問32の正解)

##問33
以下に当てはまるものを選択肢から選択してください。
Elastic Beanstalk コンソールまたは EB CLI を使用して新しいバージョンのアプリケーションをアップロードするたびに、Elastic Beanstalk はアプリケーションバージョンを作成します。使用しなくなったバージョンを削除しないと、最終的にはアプリケーションバージョンクォータに到達し、そのアプリケーションの新しいバージョンを作成できなくなります。
クォータに到達するのを回避する方法を選択してください。

A. アプリケーションにアプリケーションバージョンクォータ削除ポリシーを適用する
B. アプリケーションにアプリケーションバージョンライフサイクルポリシーを適用する
C. アプリケーションにアプリケーションバージョンデプロイポリシーを適用する
D. アプリケーションにアプリケーションバージョンスケジュール設定を行う

[正解を表示](#問33の正解)

##問34
以下に当てはまるものを選択肢から選択してください。
環境を作成するときに使用する、環境の名前、ソリューションスタックと環境リンクを設定するために、YAML 形式の環境マニフェストをアプリケーションソースバンドルのルートに含めることができます。
含めるファイルを以下から選択してください。

A. cron.yaml
B. appspec.yaml
C. conf.yaml
D. env.yaml

[正解を表示](#問34の正解)

##問35
以下に当てはまるものを選択肢から選択してください。
AWS SAM は、AWS でサーバーレスアプリケーションを構築するために使用することができるオープンソースフレームワークです。AWS SAM を使用してサーバーレスアプリケーションを定義するにはCloud Formationテンプレートにおいて AWS SAMテンプレート仕様を使用する必要が有ります。
必要な定義を以下選択肢から選択してください。

A. Transform: AWS::Serverless-2016-10-31
B. Serverless: AWS::Transform-2016-10-31
C. Type: AWS::Serverless-2016-10-31
D．Runtime: AWS::Serverless-2016-10-31

[正解を表示](#問35の正解)

##問36
以下に当てはまるものを選択肢から選択してください。
AWS CloudFormation には、スタックの管理に役立ついくつかの組み込み関数が用意されています。実行するまでわからない値をプロパティに代入するには、テンプレートで組み込み関数を使用できます。
テンプレートのリソースから属性の値を返す組み込み関数を以下から選択してください。

A. Fn::FindInAZs
B. Fn::GetAZs
C. Fn::GetAtt
D. Fn::FindInMap

[正解を表示](#問36の正解)

##問37
以下に当てはまるものを選択肢から選択してください。
AWS CloudFormation を使用する際、関連リソースを単一のユニットとして管理でき、これを作成、更新、削除することで、リソースのコレクションを作成、更新、削除することが出来ます。

A. テンプレート
B. コレクションセット
C. スタック
D. 変更セット

[正解を表示](#問37の正解)

##問38
以下に当てはまるものを選択肢から選択してください。
AWS CloudFormation の組み込み関数について
指定されたリージョンのアベイラビリティーゾーンを含んだ配列を返す組み込み関数を以下から選択してください。

A. Fn::FindInAZs
B. Fn::GetAZs
C. Fn::GetAtt
D. Fn::FindInMap

[正解を表示](#問38の正解)

##問39
以下に当てはまるものを選択肢から選択してください。
AWS CloudFormation のスタックで実行中のリソースに変更を加える場合、スタックを更新する必要が有りますが、実際にリソースに変更を加える前に変更点を確認する事が出来ます。

A. テンプレート
B. 変更セット
C. CodeCommit
D. CodePipeline

[正解を表示](#問39の正解)

##問40
以下に当てはまるものを選択肢から選択してください。
AWS CloudFormation のスタックを削除することでスタックとスタック内のすべてのリソースを削除出来ます。
スタックの削除時に、必要なスタック内のリソースを保持するには何を設定すれば良いでしょうか？

A. リソースポリシー
B. IAMポリシー
C. 削除ポリシー
D. appspec.yml

[正解を表示](#問40の正解)

##問41
以下に当てはまるものを選択肢から選択してください。
AWS CloudFormation において AWS 認証情報のない一時的なアクセス権をユーザーに付与する必要があります。一時的なアクセス権を付与する場合は、何を設定すれば良いでしょうか？

A. IAMユーザー
B. IAMポリシー
C. IAMロール
D. AWS Security Token Service (AWS STS) 

[正解を表示](#問41の正解)

##問42
以下に当てはまるものを選択肢から選択してください。
AWS X-Ray はアプリケーションが処理するリクエストに関するデータを収集するサービスです。データを表示、フィルタリング、洞察を取得して問題の識別や最適化の機会を識別するために使用するツールを提供しています。インターセプター(HTTPリクエストのトレース)、クライアントハンドラー(AWS SDKクライアントの計測)、HTTPクライアントの計測が可能です。
X-Rayの概念でホスト、リクエスト、レスポンス、行った作業(開始・終了時刻、サブセグメント)、発生した問題(エラー、障害、例外)のデータを記録しているものを1つ選択してください。


A. サンプリング
B. セグメント
C. サブセグメント

[正解を表示](#問42の正解)

##問43
以下に当てはまるものを選択肢から選択してください。
DynamoDBの様なセグメントを送信しないサービスでは、X-Ray SDK はトレースの情報を何をもって表示するでしょうか？

A. サンプリング
B. セグメント
C. サブセグメント

[正解を表示](#問43の正解)

##問44
以下に当てはまるものを選択肢から選択してください。
X-Rayにおいて効率的にトレースを行ってアプリケーションが処理するリクエストの代表的なサンプルを提供するため、X-Ray SDK によってサンプリングアルゴリズムが適用され、トレースするリクエストが決定されます。デフォルトでは、X-Ray SDK は 1 秒ごとに最初のリクエスト(リザーバサイズ)と、追加リクエストの 5%(固定レート) を記録します。以下設定の場合の、トレース可能なリクエスト数を計算してください。
リザーバサイズ：30
固定レート：50%

A. 80
B. 45
C. 130
D. 150

[正解を表示](#問44の正解)

##問45
以下に当てはまるものを選択肢から選択してください。
X-Rayにおいてサンプリングされている場合でも、複雑なアプリケーションでは大量のデータが生成されます。AWS X-Ray コンソールでは、操作が簡単なサービスグラフのビューを提供します。特定の条件を指定してトレースを検索することが出来るものを選択してください。

A. ラムダ式
B. トレース式
C. フィルタ式
D. リクエストビュー

[正解を表示](#問45の正解)

##問46
以下に当てはまるものを選択肢から選択してください。
AWS X-Ray デーモンを実行するにポートをリッスンする必要が有ります。デフォルトポートについて、以下から選択してください。

A. TCPポート2000
B. UDPポート2000
C. HTTPポート80
D. HTTPSポート8080

[正解を表示](#問46の正解)

##問47
以下に当てはまるものを選択肢から選択してください。
ECSクラスターは、タスクまたはサービスの論理グループです。 EC2 を使用してタスクまたはサービスを実行している場合、クラスターはコンテナインスタンスのグループ化でもあります。  

A. All Deployment
B. Blue-Green Deployment
C. Application Deployment
D. Traffic Deployment

[正解を表示](#問47の正解)

##問48
以下に当てはまるものを選択肢から選択してください。
AWS OpsWorks スタックには、一連のスタックコマンドが用意されており、このスタックコマンドを使用して、スタックのインスタンスに対してさまざまな操作を実行できます。スタック コマンドを実行するには、[Stack] ページで、[Run Command] をクリックします。インスタンスに対して指定された一連のレシピを実行するスタックコマンドを以下から選択してください。

A. Run Commands
B. Execute Recipes
C. All At Once Commands
D. Run Recipes

[正解を表示](#問48の正解)

##問49
AWS OpsWorksのすべてのインスタンスには、サービスと定期的に通信する AWS OpsWorks スタックエージェントがあります。AWS OpsWorks スタックでは、インスタンスの状態のモニタリングにこの通信が使用されます。エージェントとサービスとの通信が約 5 分以上途絶えると、AWS OpsWorks スタックではインスタンスが失敗したと見なすにはどのような設定を行えばよいでしょうか？

A. 出来ない
B. AWSサポートコンソールから依頼する
C. Auto healing enabledを有効にする
D. Auto Recovely を有効にする


[正解を表示](#問49の正解)

##問50
AWS OpsWorks スタックは、Chef クックブックを使用して、パッケージのインストールや設定、アプリケーションのデプロイなどのタスクを処理します。カスタムクックブックはオンラインリポジトリ (.zip ファイルのようなアーカイブまたは Git のような ソース管理マネージャー) に保存する必要があります。
各クックブックディレクトリには、標準ディレクトリとファイルが少なくとも 1 つ (通常はすべて)、標準の名前で含まれていますが、クックブックの属性を記したファイルを以下から選択してください。

A. recipes 
B. attributes 
C. configs
D. cookbooks

[正解を表示](#問50の正解)

#正解


##問1の正解
A. Local Secondary Index(LSI)

- DynamoDBにおいては、Partition Key とSort Keyを併せて絞り込み検索を行うことが出来ます。Sort Key以外で絞込検索を行いたいときに、Local Secondary Index(LSI)を使用します。
- Global Secondary Index(GSI)はLSIと異なり、Partition Key属性の代わりに検索を行う為のIndexです。
- よって正解は、AのLocal Secondary Index(LSI)となります。

> ベーステーブルのプライマリキーを使用してデータのクエリを実行する必要があるのは、一部のアプリケーションだけです。ただし、代替のソートキーが役に立つ場合があります。アプリケーションにソートキーという選択肢を提供するために、Amazon DynamoDB テーブルに 1 つ以上のローカルセカンダリインデックスを作成して、それらのインデックスに対して Query または Scan リクエストを実行できます。
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/LSI.html

[問題文へ戻る](#問1)

##問2の正解
A. 1000RCU

DynamoDBの読込キャパシティユニットの計算式は以下です。

1秒辺りの読込項目数 × 項目のサイズ(4KBブロック)
※「整合性のある読込(≠強い整合性のある読込)」の場合は 上記に 1/2 を掛ける。
※項目のサイズは4KBブロックで有る。よって、3.5KBの場合は4KBとみなす。要は、4KBの入れ物の中に納まったら、4KBとみなす。4.1KBの様に4KBの入れ物に納まらなかったら、4KBのブロックを2つ消費する考え

今回の例だと、
1秒辺りの読込項目数＝1000
項目のサイズ=3.5KB
なので
1000 × 1 = 1000RCUとなります。

> 1 つの読み込みキャパシティーユニットは、最大サイズ 4 KB の項目について、1 秒あたり 1 回の強力な整合性のある読み込み、あるいは 1 秒あたり 2 回の結果整合性のある読み込みを表します。
例えば、10 ユニットのプロビジョニングされた読み取りキャパシティーでテーブルを作成するとします。これにより、最大 4 KB の項目について、1 秒あたり 10 回の強い整合性のある読み込み、または 20 回の結果的に整合性のある読み込みを行えます。
4 KB を超える項目の読み込みには、より多くの読み取りキャパシティーユニットを消費します。たとえば、8 KB (4 KB × 2) の項目の強い整合性のある読み込みは、2 ユニットの読み込みキャパシティーユニットを消費します。同じ項目の結果的に整合性のある読み込みは、読み込みキャパシティーを 1 ユニットしか消費しません。
読み込みの項目サイズは、次の 4 KB の倍数に切り上げられます。たとえば、3,500 バイトの項目の読み込みは、4 KB の項目の読み取りと同じスループットを消費します。
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/ProvisionedThroughput.html#ProvisionedThroughput.CapacityUnits.Read


[問題文へ戻る](#問2)


##問3の正解
C. 2000WCU


DynamoDBの書込キャパシティユニットの計算式は以下です。

1秒辺りの書込項目数 × 項目のサイズ(1KBブロック)

今回の例だと、
1秒辺りの読込項目数＝1000
項目のサイズ=1.1KB
なので1KBブロックが2つ必要となります。
よって、
1000 × 2 = 2000RCUとなります。

> 1 つの書き込みキャパシティーユニットは、最大サイズが 1 KB の項目について、1 秒あたり 1 回の書き込みを表します。
例えば、10 ユニットのプロビジョニングされた書き込みキャパシティーでテーブルを作成するとします。これにより、1 秒あたり最大でサイズが 1 KB の項目について、1 秒あたり 10 回の書き込みを行えます。
書き込みの項目サイズは、次の 1 KB の倍数に切り上げられます。たとえば、500 バイトの項目の書き込みは、1 KB の項目の書き込みと同じスループットを消費します。
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/ProvisionedThroughput.html#ProvisionedThroughput.CapacityUnits.Write


[問題文へ戻る](#問3)


##問4の正解
A. PutItem

「B. UpdateItem」は更新を掛けるAPIですので、違います。
「C. AddItem」、「D. WriteItem」というAPIは有りませんので、違います。

DynamoDBの主なAPIをまとめました。

| API       |  説明      |
|:-----------------|:------------------|
| PutItem |項目を作成します。 |
| GetItem |項目を読み取ります。 |
| UpdateItem |項目を更新します。 |
| DeleteItem |項目を削除します。 |
| BatchGetItem |1 つ以上のテーブルから最大 100 個の項目を読み取ります。 |
| BatchWriteItem  |1 つ以上のテーブルから最大 25 個の項目を作成または削除します。 |

> DynamoDB は、作成、読み込み、更新、削除 (CRUD) の 4 つの基本的なオペレーション機能を提供します。
> PutItem — 項目を作成します。
> GetItem — 項目を読み取ります。
> UpdateItem — 項目を更新します。
> DeleteItem — 項目を削除します。
> これらの各オペレーションでは、作業対象の項目のプライマリキーを指定する必要があります。たとえば、GetItem を使用して項目を読み込むには、その項目のパーティションキーとソートキー (該当する場合) を指定する必要があります。
> 4 つの基本的な CRUD オペレーションに加えて、DynamoDB は以下も提供します。
> BatchGetItem — 1 つ以上のテーブルから最大 100 個の項目を読み取ります。
> BatchWriteItem — 1 つ以上のテーブルから最大 25 個の項目を作成または削除します。
> これらのバッチ操作は、複数の CRUD オペレーションを単一のリクエストにまとめます。さらに、応答のレイテンシーを最小限に抑えるため、バッチオペレーションは項目を並列で読み書きします。
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/WorkingWithItems.html


[問題文へ戻る](#問4)


##問5の正解
C. プロジェクション式

プロジェクション式を使用する事で1つ以上の属性を指定して、取得する事が出来ます。

例：プロジェクション式を使用する場合（CLIの例）

```
aws dynamodb get-item \
    --table-name ProductCatalog \
    --key file://key.json \
    --projection-expression "Description, RelatedItems[0], ProductReviews.FiveStar"
```

上記例の通り、 ``` --projection-expression ``` を指定します。


[問題文へ戻る](#問5)


##問6の正解
B. TTL

設定方法は、TTL属性にしたい属性を設定し、有効にするだけです。
該当の属性内の値は時間をエポック形式で含む数値データ型とします。

> Amazon DynamoDB Time to Live (TTL) では、項目ごとのタイムスタンプを定義して、項目が不要になる時期を特定できます。指定されたタイムスタンプの日付と時刻の直後に、DynamoDB は書き込みスループットを消費することなく、テーブルから項目を削除します。TTL は、ワークロードのニーズに合わせて最新の状態に保たれている項目のみを保持することで、保存されたデータボリュームを削減する手段として、追加料金なしで提供されます。
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/TTL.html


[問題文へ戻る](#問6)



##問7の正解
D. Invocations

Lambdaの呼び出しメトリスの主なものを以下にまとめました。


| メトリクス       |  説明      |
|:-----------------|:------------------|
| Invocations |関数コードが実行された回数を記録します。 |
| Errors |関数エラーが発生した呼び出しの数。 |
| DeadLetterErrors| 非同期呼び出しの場合、Lambda がイベントをデッドレターキューに送信しようとしたが、失敗した回数。 |
| DestinationDeliveryFailures |非同期呼び出しの場合、Lambda がイベントを送信先に送信しようとしたが、失敗した回数。 |
| Throttles |スロットリングされた呼び出しリクエストの数。AWSアカウント単位でLambdaの同時期同数超過が発生した回数 |
| ProvisionedConcurrencyInvocations | プロビジョニングされた同時実行で関数コードが実行される回数。 |

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/monitoring-metrics.html#monitoring-metrics-invocation

[問題文へ戻る](#問7)

##問8の正解
C. IteratorAge

Lambdaのパフォーマンスメトリスの主なものを以下にまとめました。


| メトリクス       |  説明      |
|:-----------------|:------------------|
| Duration |関数コードがイベントの処理に費やす時間。 |
| IteratorAge |ストリームから読み取るイベントソースマッピングの場合、イベントの最後のレコードの所要時間。 |

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/monitoring-metrics.html#monitoring-metrics-performance

[問題文へ戻る](#問8)

##問9の正解
A. ProvisionedConcurrentExecutions 

Lambdaの同時実行メトリクスを以下にまとめました。

| メトリクス       |  説明      |
|:-----------------|:------------------|
| ConcurrentExecutions |イベントを処理している関数インスタンスの数。 |
| ProvisionedConcurrentExecutions | プロビジョニングされた同時実行でイベントを処理している関数インスタンスの数。 |
| ConcurrentExecutions |イベントを処理している関数インスタンスの数。 |
| ProvisionedConcurrencyUtilization | Lambdaのバージョン、エイリアス機能を使用した場合、ProvisionedConcurrentExecutions の値を、割り当て済みのプロビジョニングされた同時実行の合計量で割った値。 |
| UnreservedConcurrentExecutions | リージョン内の同時実行が予約されていない場合に、Lambda関数が同時実行処理されているイベントの数。 |

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/monitoring-metrics.html#monitoring-metrics-concurrency

[問題文へ戻る](#問9)

##問10の正解
C. バージョン

> バージョンを使用して、AWS Lambda 関数のデプロイを管理できます。たとえば、安定した実稼働バージョンのユーザーに影響を与えることなく、ベータテスト用の新しいバージョンの関数を公開できます。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-versions.html

[問題文へ戻る](#問10)

##問11の正解
B. 1000

ちなみに、同時実行数は「呼び出されたイベントの数/秒 x 平均実行時間」で求められます。

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/gettingstarted-limits.html

[問題文へ戻る](#問11)

##問12の正解

C. DynamoDBテーブルのストリームを有効にした上で、AWS Lambda 関数のイベントソースマッピングを作成する。イベントソースマッピングの ``` --event-source ``` にDynamoDBのARNを指定する

> Amazon DynamoDB は AWS Lambda と統合されているため、トリガー (DynamoDB ストリーム 内のイベントに自動的に応答するコード) を作成できます。トリガーを使用すると、DynamoDB テーブル内のデータ変更に対応するアプリケーションを構築できます。
テーブルで DynamoDB ストリーム を有効にした場合、書き込む AWS Lambda 関数にストリームの Amazon リソースネーム (ARN) を関連付けることができます。テーブルの項目が変更されるとすぐに、新しいレコードがテーブルのストリームに表示されます。AWS Lambda はストリームをポーリングし、新しいストリームレコードを検出すると、Lambda 関数を同期的に呼び出します。
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Streams.Lambda.html

AWS CLI を使用して、AWS Lambda でイベントソースを追加する事が出来ます。

```
$ aws lambda create-event-source-mapping --function-name ProcessDynamoDBRecords \
 --batch-size 100 --starting-position LATEST --event-source DynamoDB-stream-arn
```

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/with-ddb-example.html#with-ddb-attach-notification-configuration

[問題文へ戻る](#問12)

##問13の正解

C. Kinesis ストリームのシャード数を増やす

Lambda関数の呼び出しが増加したためにパフォーマンスが悪化したという条件ですので、スループット向上の為、Kinesisストリームのシャード数を増やすことが有効と思われます。
Lambda関数自体の処理性能が悪い場合は、「A. Lambda関数の割り当てメモリを増やす」が有効です。
「B. Lambda関数のエイリアスを使用する」はパフォーマンスには無関係です。「D. Kinesis ストリームの割り当てメモリを増やす」はでたらめです。

> シャードを追加して Kinesis ストリーム処理のスループットを向上させます。 Kinesis ストリームは 1 つ以上のシャードで構成されます。 Lambda は、最大で 1 つの同時呼び出しを使用して各シャードをポーリングします。たとえば、ストリームに 100 個のアクティブなシャードがある場合は、最大で 100 個の Lambda 関数呼び出しが同時に実行されます。シャードの数を増やすと、直接的な結果として、Lambda 関数の同時呼び出しの最大数が増えます。また、Kinesis ストリーム処理のスループットが増える場合があります。Kinesis ストリームのシャード数を増やす場合は、データの適切なパーティションキー (パーティションキーを参照) を選択していることを確認し、関連レコードが同じシャードに割り当てられ、データが適切に配分されるようにします。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/best-practices.html#stream-events

[問題文へ戻る](#問13)

##問14の正解

B. Lambda 関数を使用して、API へのアクセスを制御する API Gateway の機能

「A. Lambda関数を実行する際の認証機能」はIAM機能です。「C. Lambda 関数の新しいバージョンを自動的にデプロイし、新しいバージョンへのトラフィックを徐々に増やしていくことが出来る機能」はLambda 関数のローリングデプロイの機能についてです。「D. Amazon RDS Proxy データベースプロキシを作成できる機能」はLambdaコンソールを使用して作成できるデータベースプロキシの事です。

> Lambda オーソライザー (以前のカスタムオーソライザー) は、Lambda 関数を使用して API へのアクセスを制御する API Gateway の機能です。
Lambda オーソライザーは、OAuth や SAML などのベアラートークン認可戦略を使用する、または発信者 ID を判断するためにリクエストパラメータを使用するカスタム認証スキームを実装する場合に便利です。
クライアントが API のメソッドの 1 つにリクエストを送信すると、API Gateway は Lambda オーソライザーを呼び出します。これは発信者 ID を入力として受け取り、IAM ポリシーを出力として返します。
Lambda オーソライザーには 2 種類あります。
トークンベース の Lambda オーソライザー (TOKEN オーソライザーとも呼ばれる) は、JSON ウェブトークン (JWT) や OAuth トークンなどのベアラートークンで発信者 ID を受け取ります。
リクエストパラメータベースの Lambda オーソライザー (REQUEST オーソライザーとも呼ばれる) は、ヘッダー、クエリ文字列パラメータ、stageVariables、および $context 変数の組み合わせで、発信者 ID を受け取ります。
https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html

[問題文へ戻る](#問14)

##問15の正解
B. KMSを使用する

> Lambda は、環境変数を保管時に暗号化して安全に保存します。別の暗号化キーを使用したり、クライアント側で環境変数値を暗号化したり、AWS Secrets Manager で AWS CloudFormation テンプレートを使用して環境変数を設定したりするように Lambda を設定できます。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-envvars.html

[問題文へ戻る](#問15)

##問16の正解
B. 3回

1回実行された後、2回再試行されるので、合計3回となります。

[問題文へ戻る](#問16)

##問17の正解
A. IntegrationLatency

API Gateway メトリクスを以下まとめました。

| メトリクス       |  説明      |
|:-----------------|:------------------|
| 4XXError|指定された期間に取得されたクライアント側エラーの数。|
| 5XXError|指定された期間に取得されたサーバー側エラーの数。|
| CacheHitCount|指定された期間内に API キャッシュから配信されたリクエストの数。|
| CacheMissCount|API キャッシュが有効になっている特定の期間における、バックエンドから提供されたリクエストの数。|
| Count|指定された期間内の API リクエストの合計数。|
| IntegrationLatency|API Gateway がバックエンドにリクエストを中継してから、バックエンドからレスポンスを受け取るまでの時間。|
| Latency|API Gateway がクライアントからリクエストを受け取ってから、クライアントにレスポンスを返すまでの時間。|

[問題文へ戻る](#問17)

##問18の正解
A. Amazon Simple Queue Service (SQS) 
B. Amazon Simple Notification Service(SNS)

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/invocation-async.html#dlq

[問題文へ戻る](#問18)

##問19の正解

B. トークンベース 
D. リクエストパラメータベース

> Lambda オーソライザーには 2 種類あります。

> トークンベース の Lambda オーソライザー (TOKEN オーソライザーとも呼ばれる) は、JSON ウェブトークン (JWT) や OAuth トークンなどのベアラートークンで発信者 ID を受け取ります。

> リクエストパラメータベースの Lambda オーソライザー (REQUEST オーソライザーとも呼ばれる) は、ヘッダー、クエリ文字列パラメータ、stageVariables、および $context 変数の組み合わせで、発信者 ID を受け取ります。
https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html

[問題文へ戻る](#問19)

##問20の正解

B. appspec.yaml / appspec.json 

> EC2/オンプレミス デプロイの AppSpec file の名前は appspec.yml または appspec.json にする必要があります。​Amazon ECS または AWS Lambda デプロイの AppSpec file の名前は appspec.yaml または appspec.json にする必要があります。​
https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/reference-appspec-file.html

[問題文へ戻る](#問20)

##問21の正解

B. BeforeInstall 

> BeforeInstall – 置き換えタスクセットが作成される前にタスクを実行するために使用します。1 つのターゲットグループが元のタスクセットに関連付けられています。オプションのテストリスナーが指定されている場合、それは元のタスクセットに関連付けられます。この時点で、ロールバックはできません。

> AfterInstall – 置き換えタスクセットが作成され、ターゲットグループの 1 つがそれに関連付けられた後、タスクを実行するために使用します。オプションのテストリスナーが指定されている場合、それは元のタスクセットに関連付けられます。このライフサイクルイベントでのフック関数の結果により、ロールバックをトリガーできます。

> AfterAllowTestTraffic – テストリスナーが置き換えタスクセットにトラフィックを提供した後、タスクを実行するために使用します。この時点でのフック関数の結果により、ロールバックをトリガーできます。

> BeforeAllowTraffic – 2 番目のターゲットグループが置き換えタスクセットに関連付けられた後、かつ、トラフィックが置き換えタスクセットに移行される前に、タスクを実行するために使用します。このライフサイクルイベントでのフック関数の結果により、ロールバックをトリガーできます。

> AfterAllowTraffic – 2 番目のターゲットグループが置き換えタスクセットにトラフィックを提供した後、タスクを実行するために使用します。このライフサイクルイベントでのフック関数の結果により、ロールバックをトリガーできます。

**Amazon ECS デプロイでのフックの実行順**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235774/ca994d63-52e6-1de8-bd92-346b972abc1b.png)


https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.html#reference-appspec-file-structure-hooks-list-ecs

[問題文へ戻る](#問21)

##問22の正解

B. ValidateService 

> ApplicationStop – このデプロイライフサイクルイベントは、アプリケーションリビジョンがダウンロードされる前でも発生します。アプリケーションを適切に中止するか、現在インストールされているパッケージを削除してデプロイの準備をする場合は、このイベントのスクリプトを指定できます。このデプロイライフサイクルイベントに使用される AppSpec file とスクリプトは、前回正常にデプロイされたアプリケーションリビジョンのものです。

> DownloadBundle – このデプロイライフサイクルイベント中に、CodeDeploy エージェントはアプリケーションリビジョンファイルを一時的な場所にコピーします。
Amazon Linux、Ubuntu Server、および RHEL Amazon EC2 インスタンスの /opt/codedeploy-agent/deployment-root/deployment-group-id/deployment-id/deployment-archive フォルダ。
Windows Server Amazon EC2 インスタンスの C:\ProgramData\Amazon\CodeDeploy\deployment-group-id\deployment-id\deployment-archive フォルダ。
このイベントは CodeDeploy 用に予約されていて、スクリプトを実行するために使用することはできません。
DownloadBundle デプロイライフサイクルイベント中に失敗するデプロイをトラブルシューティングするには、「「不明なエラー: 読み取り用に開いていません」で失敗した DownloadBundle デプロイライフサイクルイベントのトラブルシューティング」を参照してください。

> BeforeInstall – このデプロイライフサイクルイベントは、ファイルの復号や現在のバージョンのバックアップの作成などの事前インストールタスクに使用できます。

> Install – このデプロイのライフサイクルイベントでは、CodeDeploy エージェントが一時的なロケーションからリビジョンファイルを最終的な送信先フォルダにコピーします。このイベントは CodeDeploy 用に予約されていて、スクリプトを実行するために使用することはできません。

> AfterInstall – アプリケーションの設定や、ファイルのアクセス許可の変更などのタスクに、このデプロイライフサイクルイベントを使用できます。

> ApplicationStart – 通常、このデプロイライフサイクルイベントを使用して、ApplicationStop 中に停止されたサービスを再起動します。

> ValidateService – これが最後のデプロイライフサイクルイベントです。デプロイが正常に完了したことを確認するために使用されます。

> BeforeBlockTraffic – このデプロイライフサイクルイベントを使用して、ロードバランサーから登録解除される前のインスタンスでタスクを実行できます。
BeforeBlockTrafficデプロイライフサイクルイベント中に失敗するデプロイをトラブルシューティングするには、「失敗した ApplicationStop、BeforeBlockTraffic、および AfterBlockTraffic デプロイライフサイクルイベントのトラブルシューティング」を参照してください。

> BlockTraffic – このデプロイライフサイクルイベント中は、現在トラフィックの処理中であるインスタンスに対するインターネットトラフィックのアクセスがブロックされます。このイベントは CodeDeploy 用に予約されていて、スクリプトを実行するために使用することはできません。

> AfterBlockTraffic – このデプロイライフサイクルイベントを使用して、ロードバランサーから登録解除された後のインスタンスでタスクを実行できます。
AfterBlockTraffic デプロイライフサイクルイベント中に失敗するデプロイをトラブルシューティングするには、「失敗した ApplicationStop、BeforeBlockTraffic、および AfterBlockTraffic デプロイライフサイクルイベントのトラブルシューティング」を参照してください。

> BeforeAllowTraffic – このデプロイライフサイクルイベントを使用して、ロードバランサーに登録される前のインスタンスでタスクを実行できます。

> AllowTraffic – このデプロイライフサイクルイベント中は、デプロイ後のインスタンスに対するインターネットトラフィックのアクセスが許可されます。このイベントは CodeDeploy 用に予約されていて、スクリプトを実行するために使用することはできません。

> AfterAllowTraffic – このデプロイライフサイクルイベントを使用して、ロードバランサーに登録された後のインスタンスでタスクを実行できます。

> https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.html#appspec-hooks-server

[問題文へ戻る](#問22)

##問23の正解
B. CodePipelineコンソールのアクション編集ページでアクションプロバイダーの承認を[手動承認]、SNSトピックのARNを指定する

https://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/approvals-action-add.html#approvals-action-add-console

[問題文へ戻る](#問23)

##問24の正解
B. 1000

> AWS アカウントあたり最大 1,000 件。この制限は変更が可能です。
https://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/limits.html

[問題文へ戻る](#問24)

##問25の正解
A. デフォルトで暗号化されています。Amazon S3 のカスタマーマスターキー (CMKs) が使用されています。

> 保管時のデータの暗号化 - ビルドアーティファクト (キャッシュ、ログ、出力された生のテストレポートファイルそしてビルド結果など) は、デフォルトで暗号化されます。この暗号化には、AWS Key Management Service が管理する Amazon S3 のカスタマーマスターキー (CMKs) が使用されます。これらの CMK を使用しない場合は、カスタマー管理 CMK を独自に作成して設定する必要があります。

> ビルド出力アーティファクトを暗号化するために CodeBuild で使用する AWS KMS キーの識別子は、 CODEBUILD_KMS_KEY_ID 環境変数に保存できます。

> ビルドプロジェクトの作成時にカスタマー管理 CMK を指定できます。

> https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/security-encryption.html

[問題文へ戻る](#問25)

##問26の正解
C. buildspec.yml をソースディレクトリのルートに配置


> buildspec をソースコードの一部として含める場合、デフォルトの buildspec ファイルの名前は buildspec.yml で、ソースディレクトリのルートに配置する必要があります。
https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/build-spec-ref.html#build-spec-ref-name-storage

[問題文へ戻る](#問26)

##問27の正解
D. AWS_DEFAULT_REGION/AWS_REGION

AWS CodeBuild の環境変数を以下まとめました。



| CodeBuildの環境変数       |  説明      |
|:-----------------|:------------------|
|AWS_DEFAULT_REGION| ビルドが実行されている AWS リージョン (例| us-east-1)。この環境変数は、AWS CLI で主に使用されます。|
|AWS_REGION| ビルドが実行されている AWS リージョン (例| us-east-1)。この環境変数は、AWS SDK で主に使用されます。|
|CODEBUILD_BUILD_ARN| ビルドの Amazon リソースネーム (ARN) (例|arn|aws|codebuild|region-ID|account-ID|build/codebuild-demo-project|b1e6661e-e4f2-4156-9ab9-82a19EXAMPLE)。|
|CODEBUILD_BUILD_ID| ビルドの CodeBuild ID (例| codebuild-demo-project|b1e6661e-e4f2-4156-9ab9-82a19EXAMPLE)。|
|CODEBUILD_BUILD_IMAGE| CodeBuild ビルドイメージ識別子 (例| aws/codebuild/standard|2.0)。|
|CODEBUILD_BUILD_NUMBER| プロジェクトの現在のビルド番号。|
|CODEBUILD_BUILD_SUCCEEDING| 現在のビルドが成功かどうか。ビルドが失敗の場合は 0 に設定され、成功の場合は 1 に設定されます。|
|CODEBUILD_INITIATOR| ビルドを開始したエンティティ。CodePipeline でビルドが開始された場合は、パイプラインの名前を表します (例| codepipeline/my-demo-pipeline)。IAM ユーザーがビルドを開始した場合は、ユーザーの名前を表します (例| MyUserName)。CodeBuild の Jenkins プラグインがビルドを開始した場合、これは文字列 CodeBuild-Jenkins-Plugin です。|
|CODEBUILD_KMS_KEY_ID| CodeBuild がビルド出力アーティファクトを暗号化するために使用している AWS KMS キーの識別子 (例| arn|aws|kms|region-ID|account-ID|key/key-ID または alias/key-alias)。|
|CODEBUILD_LOG_PATH| CloudWatch Logs でのビルドのログストリーム名。|
|CODEBUILD_RESOLVED_SOURCE_VERSION| ビルドのソースコードのバージョンの識別子。その形式は、ソースコードリポジトリによって異なります。|
|CODEBUILD_SOURCE_REPO_URL| 入力アーティファクトまたはソースコードリポジトリの URL。Amazon S3 では、これは s3|// の後にバケット名と入力アーティファクトへのパスが続きます。CodeCommit および GitHub の場合、これはリポジトリのクローン URL です。CodePipeline から生成されたビルドの場合は空の場合があります。|
|CODEBUILD_SOURCE_VERSION|Amazon S3 では、入力アーティファクトに関連付けられたバージョン ID。CodeCommit では、ビルドするソースコードのバージョンに関連付けられたコミット ID またはブランチ名。GitHub、GitHub Enterprise Server、Bitbucket の場合、ビルドするソースコードのバージョンに関連付けられたコミット ID、ブランチ名、またはタグ名を指します。|
|CODEBUILD_SRC_DIR| CodeBuild がビルドに使用するディレクトリパス|
|CODEBUILD_START_TIME| Unix タイムスタンプとして指定されたビルドの開始時間 (ミリ秒単位)。|
|CODEBUILD_WEBHOOK_ACTOR_ACCOUNT_ID| Webhook イベントをトリガーしたユーザーのアカウント ID。|
|CODEBUILD_WEBHOOK_BASE_REF| 現在のビルドをトリガーする Webhook イベントの基本参照名。プルリクエストでは、ブランチ参照を表します。|
|CODEBUILD_WEBHOOK_EVENT| 現在のビルドをトリガーした Webhook イベント。|
|CODEBUILD_WEBHOOK_PREV_COMMIT| 現在のビルドをトリガーする Webhook プッシュイベントの前の最新のコミットの ID。|
|CODEBUILD_WEBHOOK_HEAD_REF| 現在のビルドをトリガーする Webhook イベントのヘッド参照名。ブランチ参照またはタグ参照を表します。|
|CODEBUILD_WEBHOOK_TRIGGER| ビルドをトリガーした Webhook イベントを表示します。|
|HOME| この環境変数は常に /root に設定されます。|



https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/build-env-ref-env-vars.html

[問題文へ戻る](#問27)

##問28の正解
D. AWS CloudTrail 

> AWS CodeBuild は AWS CloudTrail と統合されています。
> このサービスは、CodeBuild 内でユーザーやロール、または AWS のサービスによって実行されたアクションを記録するサービスです。
> CloudTrail は、CodeBuild コンソールからのコールや、CodeBuild API へのコード呼び出しを含む、CodeBuild のすべての API コールをイベントとしてキャプチャします。
> 証跡を作成する場合は、S3 バケットへの CloudTrail イベント (CodeBuild のイベントなど) の継続的な配信を有効にすることができます。
> 証跡を設定しない場合でも、CloudTrail コンソールの [Event history (イベント履歴)] で最新のイベントを表示できます。
> CloudTrail によって収集された情報を使用して、CodeBuild に対するリクエスト、リクエスト元の IP アドレス、リクエスト者、リクエスト日時などの詳細を確認できます。

https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/cloudtrail.html

[問題文へ戻る](#問28)

##問29の正解
B. --endpoint-url 引数

> たとえば、米国東部 (バージニア北部) リージョン で連邦情報処理標準 (FIPS) エンドポイントを使用して、プロジェクトビルド名のリストを取得するには、このコマンドを実行します。

```
aws codebuild list-projects --endpoint-url https://codebuild-fips.us-east-1.amazonaws.com
```

https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/endpoint-specify.html#endpoint-specify-cli

[問題文へ戻る](#問29)

##問30の正解
C. ヘルスエージェントをEC2にインストール

> 環境内で実行されている Amazon EC2 インスタンスに関する詳細なヘルス情報を提供するため、Elastic Beanstalk は、拡張ヘルスをサポートする各プラットフォームのバージョンの Amazon マシンイメージ (AMI) にヘルスエージェントを含めます。
> 状態エージェントは、ウェブサーバーログとシステムメトリクスをモニタリングして、Elastic Beanstalk サービスに中継します。
> Elastic Beanstalk は、これらのメトリクスを Elastic Load Balancing および Amazon EC2 Auto Scaling のデータと共に分析し、環境の状態に関する全体像を提示します。
https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/health-enhanced.html

[問題文へ戻る](#問30)

##問31の正解

D. Immutable

> Immutable (変更不可) – 低速のデプロイ方法。
既存のインスタンスを更新するのではなく、常に新しいアプリケーションバージョンを新しいインスタンスにデプロイします。また、デプロイが失敗した場合に迅速かつ安全にロールバックできるという追加の利点もあります。
この方法では、Elastic Beanstalk は変更不可の更新を実行してアプリケーションをデプロイします。
変更不可能な更新では、環境内で 2 番目の Auto Scaling グループが起動し、新しいインスタンスがヘルスチェックに合格するまで、新しいバージョンが旧バージョンと並行してトラフィックを提供します。

https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.deploy-existing-version.html#deployments-scenarios

[問題文へ戻る](#問31)

##問32の正解
B. cron.yaml

> ソースバンドルで cron.yaml という名前のファイルに定期的なタスクを定義し、定期的な間隔でワーカー環境のキューにジョブを自動的に追加できます。
たとえば、次の cron.yaml ファイルは 2 つの定期的なタスクを作成します。
最初のタスクは 12 時間ごとに実行され、2 番目のタスクは毎日午後 11 時 (UTC) に実行されます。

```
version: 1
cron:
 - name: "backup-job"
   url: "/backup"
   schedule: "0 */12 * * *"
 - name: "audit"
   url: "/audit"
   schedule: "0 23 * * *"
```

https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features-managing-env-tiers.html#worker-periodictasks

[問題文へ戻る](#問32)

##問33の正解
B. アプリケーションにアプリケーションバージョンライフサイクルポリシーを適用する

> アプリケーションにアプリケーションバージョンライフサイクルポリシーを適用することで、クォータに到達するのを回避できます。ライフサイクルポリシーにより、古いアプリケーションバージョンを削除するか、アプリケーションの合計数が指定した数を超えた場合にアプリケーションバージョンを削除するよう Elastic Beanstalk に指示されます。
https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/applications-lifecycle.html

[問題文へ戻る](#問33)

##問34の正解
D. env.yaml

> このファイル形式には環境グループのサポートが含まれます。グループを使用するには、マニフェスト内の環境の名前の末尾に +記号を指定します。環境を作成あるいは更新する場合、グループ名を --group-name (AWS CLI) または --env-group-suffix (EB CLI) と指定します。
次の例では、マニフェストが、ウェブサーバー環境に依存しているワーカー環境のコンポーネントへのリンクを持つウェブサーバー環境を定義します。マニフェストは、グループを使用して同じソースバンドルで複数の環境を作成することを許可します。

```~/myapp/frontend/env.yaml
AWSConfigurationTemplateVersion: 1.1.0.0
SolutionStack: 64bit Amazon Linux 2015.09 v2.0.6 running Multi-container Docker 1.7.1 (Generic)
OptionSettings:
  aws:elasticbeanstalk:command:
    BatchSize: '30'
    BatchSizeType: Percentage
  aws:elasticbeanstalk:sns:topics:
    Notification Endpoint: me@example.com
  aws:elb:policies:
    ConnectionDrainingEnabled: true
    ConnectionDrainingTimeout: '20'
  aws:elb:loadbalancer:
    CrossZone: true
  aws:elasticbeanstalk:environment:
    ServiceRole: aws-elasticbeanstalk-service-role
  aws:elasticbeanstalk:application:
    Application Healthcheck URL: /
  aws:elasticbeanstalk:healthreporting:system:
    SystemType: enhanced
  aws:autoscaling:launchconfiguration:
    IamInstanceProfile: aws-elasticbeanstalk-ec2-role
    InstanceType: t2.micro
    EC2KeyName: workstation-uswest2
  aws:autoscaling:updatepolicy:rollingupdate:
    RollingUpdateType: Health
    RollingUpdateEnabled: true
Tags:
  Cost Center: WebApp Dev
CName: front-A08G28LG+
EnvironmentName: front+
EnvironmentLinks:
  "WORKERQUEUE" : "worker+"
```


https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/environment-cfg-manifest.html

[問題文へ戻る](#問34)

##問35の正解
A. Transform: AWS::Serverless-2016-10-31

> AWS CloudFormation によってホストされるマクロである AWS::Serverless 変換は、AWS Serverless Application Model (AWS SAM) 構文で記述されたテンプレート全体を受け取り、それを準拠した AWS CloudFormation テンプレートに変換および拡張します。
次の例では、テンプレートは AWS SAM 構文を使用して Lambda 関数とその実行ロールの宣言を簡素化しています。

```
Transform: AWS::Serverless-2016-10-31
Resources:
  MyServerlessFunctionLogicalID:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.handler
      Runtime: nodejs8.10
      CodeUri: 's3://testBucket/mySourceCode.zip'
```

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/transform-aws-serverless.html

[問題文へ戻る](#問35)

##問36の正解
C. Fn::GetAtt

> Fn::GetAtt 組み込み関数は、テンプレートのリソースから属性の値を返します。


**使用方法(JSONの場合)**

```
{ "Fn::GetAtt" : [ "logicalNameOfResource", "attributeName" ] }
```

**使用方法(YAMLの場合)**

```
Fn::GetAtt: [ logicalNameOfResource, attributeName ]
```


https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html

[問題文へ戻る](#問36)

##問37の正解
C. スタック

> AWS CloudFormation を使用する際、関連リソースはスタックと呼ばれる単一のユニットとして管理します。
スタックを作成、更新、削除することで、リソースのコレクションを作成、更新、削除します。
スタック内のすべてのリソースは、スタックの AWS CloudFormation テンプレートで定義されます。
Auto Scaling グループ、Elastic Load Balancing ロードバランサー、および Amazon Relational Database Service (Amazon RDS) データベースインスタンスを含むテンプレートを作成したとします。
これらのリソースを作成するには、作成したテンプレートを送信することによってスタックを作成します。
すると、AWS CloudFormation によってすべてのリソースがプロビジョニングされます。スタックの操作には、AWS CloudFormation コンソール、API、または AWS CLI を使用できます。

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/cfn-whatis-concepts.html#w2aab5c15b9

[問題文へ戻る](#問37)

##問38の正解
B. Fn::GetAZs

> 組み込み関数 Fn::GetAZs は、指定されたリージョンのアベイラビリティーゾーンを含んだ配列を返します。アベイラビリティーゾーンへのアクセス権は顧客ごとに異なります。テンプレート作成者は、組み込み関数 Fn::GetAZs を使用することで、呼び出し元のユーザーのアクセス権にうまく適応するテンプレートを作成することができます。この方法により、特定のリージョンのすべてのアベイラビリティーゾーンをハードコーディングする必要はありません。


**使用方法(JSONの場合)**

```
{ "Fn::GetAZs" : "region" }
```

**使用方法(YAMLの場合)**

```
Fn::GetAZs: region
```

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getavailabilityzones.html

[問題文へ戻る](#問38)

##問39の正解
B. 変更セット

> スタックで実行中のリソースに変更を加える必要がある場合は、スタックを更新します。リソースに変更を加える前に、変更案の概要である変更セットを生成できます。変更セットで、変更が実行中のリソース、特に重要なリソースに与える可能性のある影響を、実装前に確認できます。
たとえば、Amazon RDS データベースインスタンスの名前を変更すると、AWS CloudFormation によって新しいデータベースが作成され、古いものは削除されます。古いデータベースのデータは、バックアップしていない限り、失われます。変更セットを生成すると、変更によってデータベースが置き換えられることがわかり、スタックを更新する前に対応策を立てることができます。

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/cfn-whatis-concepts.html#w2aab5c15c11

[問題文へ戻る](#問39)

##問40の正解
C. 削除ポリシー

> スタックを削除する場合は、削除するスタックを指定します。AWS CloudFormation はそのスタックとスタック内のすべてのリソースを削除します。AWS CloudFormation コンソール、API、または AWS CLI を使用してスタックを削除できます。
スタックを削除してもその中のいくつかのリソースを保持する場合は、削除ポリシーを使用してそのリソースを保持できます。
すべてのリソースの削除が完了すると、AWS CloudFormation はスタックが正常に削除されたというシグナルを送信します。AWS CloudFormation がリソースを削除できない場合、スタックは削除されません。削除されなかったリソースは、スタックが正常に削除されるまで保持されます。

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/cfn-whatis-howdoesitwork.html#w2aab5c17c17

[問題文へ戻る](#問40)

##問41の正解
D. AWS Security Token Service (AWS STS) 

「C. IAMロール」でもアクセス権を付与できますが、本設問では、一時的なという条件が有りますので、「D. AWS Security Token Service (AWS STS) 」が正解となります。

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/using-iam-template.html#using-iam-template-grant-access

[問題文へ戻る](#問41)

##問42の正解
B. セグメント

> アプリケーションロジックを実行しているコンピューティングリソースは、セグメントとしての動作に関するデータを送信します。セグメントには、リソース名、リクエストの詳細、行った作業の詳細が含まれています。

https://docs.aws.amazon.com/ja_jp/xray/latest/devguide/xray-concepts.html#xray-concepts-segments

[問題文へ戻る](#問42)

##問43の正解
C. サブセグメント

> Amazon DynamoDB のような独自のセグメントを送信しないサービスでは、X-Ray はサブセグメントを使用してサービスマップ上に推測セグメントとダウンストリームノードを生成します。これにより、トレースをサポートしていない場合でも、外部の場合でも、すべてのダウンストリーム依存関係を表示することができます。
サブセグメントは、クライアントとしてのダウンストリーム呼び出しのアプリケーションビューを表します。ダウンストリームサービスも計測されている場合、送信するセグメントは、アップストリームクライアントのサブセグメントから生成された推測セグメントを置き換えます。利用可能であれば、サービスグラフのノードはサービスのセグメントからの情報を常に使用しますが、2 つのノード間のエッジはアップストリームサービスのサブセグメントを使用します。
たとえば、実装された AWS SDK クライアントで DynamoDB を呼び出すと、X-Ray SDK はその呼び出しのサブセグメントを記録します。DynamoDB はセグメントを送信しないため、トレースの推測セグメント、サービスグラフの DynamoDB ノード、およびサービスと DynamoDB の間のエッジにはサブセグメントの情報が含まれます。

https://docs.aws.amazon.com/ja_jp/xray/latest/devguide/xray-concepts.html#xray-concepts-subsegments

[問題文へ戻る](#問43)

##問44の正解
B. 45

X-Rayのサンプリングルールのカスタマイズはリザーバサイズと固定レートの設定値を変更することにより実現できます。以下の計算式でトレース可能なリクエスト数を設定することが出来ます。

トレース可能なリクエスト数 = リザーバサイズ + リザーバサイズ × 固定レート

リザーバサイズ：30
固定レート：50%
の場合
トレース可能なリクエスト数 = 30 + 30 × 0.5
答え. 45

[問題文へ戻る](#問44)

##問45の正解
C. フィルタ式

> サンプリングされている場合でも、複雑なアプリケーションでは大量のデータが生成されます。AWS X-Ray コンソールでは、操作が簡単なサービスグラフのビューを提供します。問題を識別しアプリケーションを最適化するために役立つ健全性とパフォーマンス情報が表示されます。高度なトレースでは、個別のリクエストのトレースを掘り下げたり、フィルタ式を使用して特定のパスまたはユーザーに関連するトレースを検索したりできます。

https://docs.aws.amazon.com/ja_jp/xray/latest/devguide/xray-concepts.html#xray-concepts-filterexpressions

[問題文へ戻る](#問45)

##問46の正解
B. UDPポート2000

> AWS X-Ray デーモンは、UDP ポート 2000 のトラフィックをリッスンし、未加工のセグメントデータを収集して AWS X-Ray API に中継するソフトウェアアプリケーションです。デーモンは AWS X-Ray SDK と連動します。SDK によって送信されたデータが X-Ray サービスに到達するように実行する必要があります。


https://docs.aws.amazon.com/ja_jp/xray/latest/devguide/xray-daemon.html

[問題文へ戻る](#問46)

##問47の正解
B. Blue-Green Deployment

BeanstalkのBlue-Green Deploymentを実行することで、ダウンタイムを回避できます。デプロイ後、2つの環境の CNAME を入れ替えする必要が有ります。

> アプリケーションのバージョンを更新するときに AWS Elastic Beanstalk がインプレース更新を実行するため、アプリケーションはわずかな期間、ユーザーに利用不可になることがあります。Blue-Green Deployment を実行することで、このダウンタイムを回避できます。この場合、個別の環境に新しいバージョンをデプロイしてから、2 つの環境の CNAME を入れ替えて、すぐに新しいバージョンにトラフィックをリダイレクトします。

https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.CNAMESwap.html

[問題文へ戻る](#問47)

##問48の正解
B. Execute Recipes

https://docs.aws.amazon.com/ja_jp/opsworks/latest/userguide/workingstacks-commands.html

[問題文へ戻る](#問48)

##問49の正解
C. Auto healing enabledを有効にする


> 自動ヒーリングはレイヤーレベルで設定されます。次のスクリーンショットにあるように、レイヤー設定を編集することで自動ヒーリングの設定を変更できます。

https://docs.aws.amazon.com/ja_jp/opsworks/latest/userguide/workinginstances-autohealing.html

[問題文へ戻る](#問49)

##問50の正解 
B. attributes

https://docs.aws.amazon.com/ja_jp/opsworks/latest/userguide/workingcookbook-installingcustom-repo.html

[問題文へ戻る](#問50)