<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>1.Programing | ともぶろぐ</title>
	<atom:link href="https://tomoblog.net/category/programing/feed/" rel="self" type="application/rss+xml" />
	<link>https://tomoblog.net</link>
	<description>welcome to tomoblog</description>
	<lastBuildDate>Fri, 19 Dec 2025 21:23:49 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://tomoblog.net/wp-content/uploads/2024/08/cropped-siteicon-32x32.png</url>
	<title>1.Programing | ともぶろぐ</title>
	<link>https://tomoblog.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【AWS】クラウドプラクティショナー無料試験問題。</title>
		<link>https://tomoblog.net/programing/aws/cloud-practitioner-practice/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cloud-practitioner-practice</link>
					<comments>https://tomoblog.net/programing/aws/cloud-practitioner-practice/#respond</comments>
		
		<dc:creator><![CDATA[tomo]]></dc:creator>
		<pubDate>Thu, 18 Dec 2025 06:56:26 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<guid isPermaLink="false">https://tomoblog.net/?p=7220</guid>

					<description><![CDATA[<p>このサイトはAWS認定資格のクラウドプラクティショナーの試験問題を無料で公開しているサイトです。本サイト著者も実際に認定資格の試験を受講した経験を踏まえて、解説を記載いたします。AWSクラウドプラクティショナーの資格試験 [&#8230;]</p>
The post <a href="https://tomoblog.net/programing/aws/cloud-practitioner-practice/">【AWS】クラウドプラクティショナー無料試験問題。</a> first appeared on <a href="https://tomoblog.net">ともぶろぐ</a>.]]></description>
										<content:encoded><![CDATA[<p>このサイトはAWS認定資格のクラウドプラクティショナーの試験問題を無料で公開しているサイトです。本サイト著者も実際に認定資格の試験を受講した経験を踏まえて、解説を記載いたします。AWSクラウドプラクティショナーの資格試験を受講予定の方は是非参考にしてみてください。</p>



<p>クラウドプラクティショナーの用語集は下記記事で案内しております。</p>



<p>「<a target="_blank" href="https://tomoblog.net/programing/aws/cloud-practitioner/" title="">【AWS】クラウドプラクティショナー用語一覧</a>」</p>



<p>公式Amazonのドキュメントが最も信頼できるので気になる方は「<a rel="noopener" target="_blank" href="https://docs.aws.amazon.com/index.html" title="">こちら</a>」から。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">AWSクラウドプラクティショナー無料問題</a><ol><li><a href="#toc2" tabindex="0">「クラウドの概念」無料問題</a><ol><li><a href="#toc3" tabindex="0">問題1</a></li><li><a href="#toc4" tabindex="0">問題2</a></li><li><a href="#toc5" tabindex="0">問題3</a></li><li><a href="#toc6" tabindex="0">問題4</a></li><li><a href="#toc7" tabindex="0">問題5</a></li><li><a href="#toc8" tabindex="0">問題6</a></li><li><a href="#toc9" tabindex="0">問題7</a></li></ol></li><li><a href="#toc10" tabindex="0">「クラウドのセキュリティ」無料問題</a><ol><li><a href="#toc11" tabindex="0">問題8</a></li><li><a href="#toc12" tabindex="0">問題9</a></li><li><a href="#toc13" tabindex="0">問題10</a></li><li><a href="#toc14" tabindex="0">問題11</a></li><li><a href="#toc15" tabindex="0">問題12</a></li><li><a href="#toc16" tabindex="0">問題13</a></li><li><a href="#toc17" tabindex="0">問題14</a></li><li><a href="#toc18" tabindex="0">問題15</a></li><li><a href="#toc19" tabindex="0">問題16</a></li><li><a href="#toc20" tabindex="0">問題17</a></li><li><a href="#toc21" tabindex="0">問題18</a></li><li><a href="#toc22" tabindex="0">問題19</a></li><li><a href="#toc23" tabindex="0">問題20</a></li></ol></li><li><a href="#toc24" tabindex="0">「クラウドのテクノロジー」無料問題</a><ol><li><a href="#toc25" tabindex="0">問題21</a></li><li><a href="#toc26" tabindex="0">問題22</a></li><li><a href="#toc27" tabindex="0">問題23</a></li><li><a href="#toc28" tabindex="0">問題24</a></li><li><a href="#toc29" tabindex="0">問題25</a></li><li><a href="#toc30" tabindex="0">問題26</a></li><li><a href="#toc31" tabindex="0">問題27</a></li><li><a href="#toc32" tabindex="0">問題28</a></li><li><a href="#toc33" tabindex="0">問題29</a></li><li><a href="#toc34" tabindex="0">問題30</a></li><li><a href="#toc35" tabindex="0">問題31</a></li><li><a href="#toc36" tabindex="0">問題32</a></li><li><a href="#toc37" tabindex="0">問題33</a></li><li><a href="#toc38" tabindex="0">問題34</a></li><li><a href="#toc39" tabindex="0">問題35</a></li><li><a href="#toc40" tabindex="0">問題36</a></li><li><a href="#toc41" tabindex="0">問題37</a></li><li><a href="#toc42" tabindex="0">問題38</a></li><li><a href="#toc43" tabindex="0">問題39</a></li><li><a href="#toc44" tabindex="0">問題40</a></li><li><a href="#toc45" tabindex="0">問題41</a></li><li><a href="#toc46" tabindex="0">問題42</a></li><li><a href="#toc47" tabindex="0">問題43</a></li><li><a href="#toc48" tabindex="0">問題44</a></li><li><a href="#toc49" tabindex="0">問題45</a></li><li><a href="#toc50" tabindex="0">問題46</a></li><li><a href="#toc51" tabindex="0">問題47</a></li><li><a href="#toc52" tabindex="0">問題48</a></li><li><a href="#toc53" tabindex="0">問題49</a></li><li><a href="#toc54" tabindex="0">問題50</a></li><li><a href="#toc55" tabindex="0">問題51</a></li><li><a href="#toc56" tabindex="0">問題52</a></li><li><a href="#toc57" tabindex="0">問題53</a></li><li><a href="#toc58" tabindex="0">問題54</a></li><li><a href="#toc59" tabindex="0">問題55</a></li><li><a href="#toc60" tabindex="0">問題56</a></li><li><a href="#toc61" tabindex="0">問題57</a></li><li><a href="#toc62" tabindex="0">問題58</a></li><li><a href="#toc63" tabindex="0">問題59</a></li><li><a href="#toc64" tabindex="0">問題60</a></li><li><a href="#toc65" tabindex="0">問題61</a></li><li><a href="#toc66" tabindex="0">問題62</a></li><li><a href="#toc67" tabindex="0">問題63</a></li><li><a href="#toc68" tabindex="0">問題64</a></li><li><a href="#toc69" tabindex="0">問題65</a></li><li><a href="#toc70" tabindex="0">問題66</a></li><li><a href="#toc71" tabindex="0">問題67</a></li></ol></li><li><a href="#toc72" tabindex="0">「クラウドの料金と請求」無料問題</a><ol><li><a href="#toc73" tabindex="0">問題68</a></li><li><a href="#toc74" tabindex="0">問題69</a></li><li><a href="#toc75" tabindex="0">問題70</a></li><li><a href="#toc76" tabindex="0">問題71</a></li><li><a href="#toc77" tabindex="0">問題72</a></li><li><a href="#toc78" tabindex="0">問題73</a></li><li><a href="#toc79" tabindex="0">問題74</a></li><li><a href="#toc80" tabindex="0">問題75</a></li></ol></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">AWSクラウドプラクティショナー無料問題</span></h2>



<h3 class="wp-block-heading"><span id="toc2">「クラウドの概念」無料問題</span></h3>



<h4 class="wp-block-heading"><span id="toc3">問題1</span></h4>



<p>AWSのアーキテクチャ設計において考えるべき必要がないものは？</p>



<ol class="wp-block-list">
<li>スケーラビリティを確保</li>



<li>環境構築の自動化</li>



<li>リソースを使い捨てできるようにする</li>



<li>ソースコードの管理</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：4</p>
<p>ソースコードの管理はAWSドキュメントで明言されておりません。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc4">問題2</span></h4>



<p>AWS Well-Architected Framework(W-A)に含まれないものは？</p>



<ol class="wp-block-list">
<li>セキュリティ</li>



<li>パフォーマンス</li>



<li>耐震性</li>



<li>信頼性</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>Well-Architected Framework(W-A)の5本柱は「運用」「セキュリティ」「信頼性」「パフォーマンス効率」「コスト最適化」です。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc5">問題3</span></h4>



<p>リージョンについて正しい情報はどれか？</p>



<ol class="wp-block-list">
<li>リージョンはセキュリティを担保するためにある</li>



<li>リージョンにはAZが最低1つは含まれる</li>



<li>日本のリージョンは1つで東京にある</li>



<li>リージョンは耐障害性を高めるためにある</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：4</p>
<p>AWSにおけるリージョンとは地理的な場所をさしており、耐障害性を高めるためにあります。セキュリティを担保する目的ではありません。また、リージョンには必ず複数のAZがあります。日本のリージョンは東京・大阪で2つ存在します。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc6">問題4</span></h4>



<p>AZ（アベイラブルゾーン）について間違った情報はどれか？</p>



<ol class="wp-block-list">
<li>東京リージョンには4つのAZがあると言われている</li>



<li>冗長的な電力源を持つ</li>



<li>低遅延で相互接続された2つ以上のデータセンター</li>



<li>AWSリージョンをまたがることはできない</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>AZは1つのAWSリージョンでそれぞれ切り離され、冗長的な電力源、ネットワーク、そして接続機能を備えている低遅延で相互接続された1つ以上のデータセンターです。場所は公開されておらず、ユーザは入れません。東京リージョンには関東近郊に4つのAZがあると言われています。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc7">問題5</span></h4>



<p>エッジロケーションの情報で間違っているものは？</p>



<ol class="wp-block-list">
<li>エッジロケーションはAZの一部のデータセンターのことである</li>



<li>動画のローディングなどの重たい処理に利用される</li>



<li>サービスとして、DNSがある</li>



<li>サービスとして、CDNがある</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1</p>
<p>エッジロケーショんはリージョンやAZとは異なるデータセンターです。近くにあったほうがパフォーマンスが上がるサービスはエッジロケーションで提供される。（動画のローディングなど）DNSやCDNが代表的なサービス。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc8">問題6</span></h4>



<p>クラウドサービスに関して正しい説明はどれか？（複数回答）</p>



<ol class="wp-block-list">
<li>IaaSではネットワーキング機能、コンピュータ機能、データストレージ領域へのアクセスが提供されます。</li>



<li>SaaSでは基盤となるインフラストラクチャの管理を考える必要がなくなります。</li>



<li>PaaSではリソース調達、容量計画、パッチ適用などを考慮する必要がなくなります。</li>



<li>クラウドサービスは有料である</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1,2,3</p>
<p>1,2,3は全て正しい。クラウドサービスの金額は無料のものもあれば有料のものもあり様々。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc9">問題7</span></h4>



<p>クラウドのデプロイモデルに関して正しい説明はどれか？（複数回答）</p>



<ol class="wp-block-list">
<li>ハイブリッドデプロイモデルとはクラウドのリソースとクラウド以外の既存リソースとの間でアプリを接続するモデル</li>



<li>オンプレミスデプロイモデルは仮想化および、リソース管理ツールを使用してリソースをオンプレミスでデプロイする構成</li>



<li>オンプレミスデプロイモデルはプライベートクラウドとも呼ばれる</li>



<li>クラウドデプロイモデルは完全にクラウド上だけでデプロイされている構成</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1,2,3,4</p>
<p>1,2,3,4は全て正しい。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc10">「クラウドのセキュリティ」無料問題</span></h3>



<h4 class="wp-block-heading"><span id="toc11">問題8</span></h4>



<p>コンプライアンスレポートをダウンロードできるサービスはどれか？</p>



<ol class="wp-block-list">
<li>AWS Key Management Service</li>



<li>AWS Security Hub</li>



<li>AWS Artifact</li>



<li>AWS Secret Manager</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>AWSのコンプライアンスレポートにアクセスできる一元管理型のポータル。準拠する国の法律の変更もポータル上で可能。AWS Artifactで利用可能な契約には、事業提携契約(BAA)と機密保持契約(NDA)が含まれる。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc12">問題9</span></h4>



<p>AWS Game Dayについて間違った説明は？</p>



<ol class="wp-block-list">
<li>AWSの信頼性を高めるためのイベント</li>



<li>Chaos Mokeyというソフトを使う</li>



<li>障害を起こす側と守る側でスコアを競う</li>



<li>AWS Game Dayの日にはすべてのAWSサービスが使用できなくなる</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：4</p>
<p>AWSサービスが使用できなくなることは基本的にありません。AWSの信頼性を高めるためのイベント。障害を起こす側と守る側に分かれて、本番環境でスコアを争います。障害を避ける最も良い方法は継続的に障害を起こすことという思想のもとにこのようなイベントが開かれている。Chaos Mokeyというランダムに障害を起こすソフトなどが使われます。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc13">問題10</span></h4>



<p>機械学習を用いたクラウドネイティブな脅威検知サービスはどれか？</p>



<ul class="wp-block-list">
<li>AWS GuardDuty</li>



<li>Inspector</li>



<li>AWS X-Ray</li>



<li>AWS WAF(ウェブアプリケーションファイアウォール)</li>
</ul>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1</p>
<p>InspectorはEC2にデプロイされたアプリケーションのセキュリティ脆弱性や準拠違反を自動的に検出するサービス。機械学習を利用した脅威検知はGuardDuty。AWS X-Rayはアプリケーションが処理するリクエストに関するデータを収集するサービス。AWS WAFはファイアウォール。
</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc14">問題11</span></h4>



<p>Inspectorの説明で間違っているものはどれか？</p>



<ol class="wp-block-list">
<li>Inspectorは設定すると自動で継続的なアセスメントを行う</li>



<li>セキュリティリスクを評価する</li>



<li>ユーザにベストプラクティスを提供する</li>



<li>Inspectorサービスは無償サービスである</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：4</p>
<p>Inspectorは設定されるとEC2にデプロイされたアプリケーションのセキュリティ脆弱性や準拠違反を自動的に検出するサービス。セキュリティリスクを評価し、ユーザにベストプラクティスを提供します。無料枠は設定されていますが、有償サービスです。
</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc15">問題12</span></h4>



<p>ユーザがサービスのセキュリティを強化したい場合、利用するべきサービスはどれか？（※複数回答）</p>



<ol class="wp-block-list">
<li>IAM</li>



<li>MFA</li>



<li>AMI</li>



<li>セキュリティグループ</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1,2,4</p>
<p>IAMはユーザの権限を制限できるため、セキュリティ強化に良い。MFAは多要素認証で認証を強化できる。AMIはマシンイメージでマシンイメージをもとにEC2の環境を作成できるがセキュリティと直接関係はない。セキュリティグループはEC2に対してのファイアウォールのようなものなのでセキュリティ強化できる。
</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc16">問題13</span></h4>



<p>IAMについて間違っている情報はどれか？</p>



<ol class="wp-block-list">
<li>IAMは無償サービスである</li>



<li>IAMの正式名称は「Identify and Management」である</li>



<li>ユーザにロール単位で権限を付与できる</li>



<li>MFAをユーザに付与することもできる</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2</p>
<p>1,3,4は正しい。IAMの正式名称はIdentify and Access Managementである。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc17">問題14</span></h4>



<p>AWS KMS（Key Management Service）の説明で正しいものはどれか？（※複数回答）</p>



<ol class="wp-block-list">
<li>キーの作成ができる</li>



<li>外部キーをインポートできる</li>



<li>1年ごとに自動でキーを更新するように設定できる</li>



<li>無償サービスである</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1,2,3</p>
<p>1,2,3は正しい。無料枠ではあるが有償サービスである。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc18">問題15</span></h4>



<p>AWS Shieldに関して正しい説明はどれか？</p>



<ol class="wp-block-list">
<li>有償サービスである</li>



<li>デフォルトでAWSサービスに組み込まれている</li>



<li>アベイラビリティゾーンのサービス</li>



<li>SQLインジェクションを保護する</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2</p>
<p>AWS ShieldはDDoS攻撃から保護するサービス。スタンダード機能はAWSのサービスにデフォルトで組み込まれているため、追加料金などは不要。自動で有効化されます。エッジロケーションのサービスです。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc19">問題16</span></h4>



<p>IAMの説明で正しいものは？（※複数解答）</p>



<ol class="wp-block-list">
<li>IAMポリシーはユーザにAWSリソースへのアクセス許可設定を提供するドキュメント</li>



<li>IAMユーザはグループ化することで、組織に合わせてポリシー管理を楽できる</li>



<li>IAMのアクセスキーとシークレットキーはユーザに紐づく</li>



<li>AWSロールはAWSリソースにAWSサービスへのアクセスを提供できる</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1,2,3,4</p>
<p>全て正しい。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc20">問題17</span></h4>



<p>データベースやその他のアプリケーションにアクセスするために使用される認証情報やアプリケーションを管理するサービスはどれか？</p>



<ol class="wp-block-list">
<li>AWS Secrets Manager</li>



<li>AWS Security Hub</li>



<li>AWS IAM</li>



<li>AWS KMS（Key Management Service）</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1</p>
<p>AWS Security Hubは複数のAWSアカウントとサービスにわたってセキュリティアラートと一貫性のあるセキュリティスコアを提供する統合サービスです。これにより、ユーザーはセキュリティの優先順位付けと通知を効率化できるようになります。</p>
<p>AWS IAMはユーザの権限管理。AWS KMSはキーを管理するサービス。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc21">問題18</span></h4>



<p>AWS RAM（Resource Access Manager）について間違った説明はどれか？</p>



<ol class="wp-block-list">
<li>AWS RAMはAWSリソースを組織内のアカウントやサービスと簡単に共有するためのサービス</li>



<li>複数のアカウント間でのリソース共有を簡素化できる</li>



<li>セキュリティを向上できる</li>



<li>AWS RAMの承認期限は24時間である</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：4</p>
<p>AWS RAMの承認期限は12時間である。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc22">問題19</span></h4>



<p>AWSの責任範囲でないものは説明で間違っているものはどれか？</p>



<ol class="wp-block-list">
<li>データセンターのハード保守</li>



<li>データベースのパッチ適用</li>



<li>EC2のパッチ適用</li>



<li>AWSサービスのバグ</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>AWSでユーザがパッチ適用を行うのはEC2のみ。ユーザーの責任範囲はデータ、プラットフォーム、アプリケーション、OS(パッチ適用含む)、NW構成、暗号化などで、AWSの責任範囲はソフト、ストレージ、ハードウェア、データベースなど。</p>
</div></div>



<h4 class="wp-block-heading" id="i-20"><span id="toc23">問題20</span></h4>



<p>セキュリティに関して正しい説明はどれか？</p>



<ol class="wp-block-list">
<li>サブネットに対して、セキュリティグループを設定することで通信トラフィックを制御する</li>



<li>インスタンスにネットワークACL（Access Control List）を設定することで、ファイアーウォールと同じように使用できる</li>



<li>ネットワークACLは拒否するインバウンドポートと送信元を設定するブラックリスト方式</li>



<li>セキュリティグループはデフォルトでは全トラフィックが開いた状態になっている</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>セキュリティグループはインスタンスの通信トラフィックを制御するファイアウォール。HTTPやSSLなどに対して通信を許可する設定を行うことができる。ルールをひとまとめにしたテンプレートをセキュリティグループと呼ぶ。デフォルトでは全トラフィックが閉じた状態。</p>
<p>
ネットワークACL (Access Control List)はサブネットに対して設定する仮想ファイアウォールで、拒否するインバウンドのポートと送信元を設定するブラックリスト方式。セキュリティレイヤー</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc24">「クラウドのテクノロジー」無料問題</span></h3>



<h4 class="wp-block-heading"><span id="toc25">問題21</span></h4>



<p>ユーザのアクティビティとAPI使用状況を追跡する監査サービスはどれか？</p>



<ol class="wp-block-list">
<li>AWS CloudTrail</li>



<li>Cloud Watch</li>



<li>AWS Personal Health Dashboard</li>



<li>AWSインフラストラクチャーイベント管理</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1</p>
<p>AWS CloudTrailはどのユーザーがどのような操作を行ったのかを記録するサービス。ユーザアクティビティとAPI使用状況を追跡することができるので正解。リソースを起動・終了させるなどのアクションをユーザー毎に確認できる。</p>
<p>Cloud Watchはサーバの状況を取得できる「ネットワークIO」「CPU使用率」「ステータスチェック」などを標準的に取得でき、設定により「メモリ使用率」や「ディスク空き容量」なども監視可能。</p>
<p>AWS Personal Health DashboardはAWSサービスやアカウントに影響を与える可能性があるAWS Healthイベントについて確認できます。</p>
<p>AWSインフラストラクチャーイベント管理は、製品のローンチ・移行といった予定イベントの準備や実行時に、アーキテクチャとスケーリングのガイダンスと運用サポートを提供するサービス。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc26">問題22</span></h4>



<p>Amazon Auroraの特徴で間違っているものはどれか？</p>



<ol class="wp-block-list">
<li>MySQLと互換性がある</li>



<li>PostgreSQLと互換性がある</li>



<li>自動バックアップが実行される</li>



<li>キーバリューストア方式でデータを保存する</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：4</p>
<p>Amazon AuroraはAmazonがクラウドに合わせて設計したデータベース。オープンソースのため、通常ソフトの1/10程度の価格で、従来のMySQLと比較し最大5倍の処理能力が可能です。常に自動でバックアップがなされる。MySQL・PostgreSQLと互換性があります。</p>
<p>キーバリューストアでデータを保存するのはNoSQLでAWSのDynamoDBがNoSQLです。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc27">問題23</span></h4>



<p>動画などの大容量ファイルをローミングする際に使用されるAWSのサービスはどれか？（※複数解答）</p>



<ol class="wp-block-list">
<li>エッジローケーション</li>



<li>Amazon EFS</li>



<li>Amazon CloudFront</li>



<li>Amazon Cognito</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1,3</p>
<p>エッジロケーションはユーザと距離が近く大容量ファイルの送受信に適している。また、AmazonCloudFrontもエッジロケーショんにコンテンツをキャッシュするため正解。</p>
<p>Amazon EFSは共有ファイルサービスで、CognitoはWebアプリにサインアップ機能などを追加するサービス</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc28">問題24</span></h4>



<p>Amazon CloudFrontの説明で間違っているものはどれか？</p>



<ol class="wp-block-list">
<li>コンテンツがエッジロケーションにない場合、Amazon S3からデータを取得する。</li>



<li>コンテンツがエッジロケーションにない場合、DBから値を取得する</li>



<li>コンテンツがエッジロケーションにない場合、MediaPackageチャネルからデータを取得する</li>



<li>コンテンツがエッジロケーションにない場合、HTTP通信でインターネットからデータを取得する</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1,3</p>
<p>Amazon CloudFrontはDBから値を取ることはしません。</p>
</div></div>



<h4 class="wp-block-heading" id="i-23"><span id="toc29">問題25</span></h4>



<p>ユーザへのキャンペーン通知などを特定のユーザに絞って処理を実行する際に使用するものはどれか？</p>



<ol class="wp-block-list">
<li>AWS Device Farm</li>



<li>Amazon SNS</li>



<li>Amazon Pinpoint</li>



<li>AWS Step Function</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>対象を絞ったキャンペーンを容易に実行できるのはAmazon Pinpoint</p>
<p>AWS Device Farmは端末のテストを行うサービス。Amazon SNSは通知サービス。AWS Step FunctionはAWSの一部のサービスを統合して実行することができるサービスで全て別機能。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc30">問題26</span></h4>



<p>アプリケーションにログイン画面を追加しようと考えている。ログイン画面とログイン処理を簡単に行うために利用するサービスはどれか？</p>



<ol class="wp-block-list">
<li>Amazon SQS</li>



<li>Amazon Cognito</li>



<li>AWS ConfirmEntry</li>



<li>AWS Config</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2</p>
<p>Cognitoはウェブアプリケーションおよびモバイルアプリにユーザーのサインアップ機能とアクセスコントロール機能を追加できます。</p>
<p>Amazon SQSはキュー管理サービス、3は存在しない、AWS ConfigはAWS リソースの設定を評価、監査、審査できるサービス。AWSリソース間の設定に対する全体的なコンプライアンスを確認できる。サードパーティー製品のリソースをサポートしています。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc31">問題27</span></h4>



<p>アプリが処理するリクエストに関するデータを収集するサービスはどれか？</p>



<ol class="wp-block-list">
<li>AWS X-Ray</li>



<li>Amazon Cloud Watch</li>



<li>AWSマネジメントコンソール</li>



<li>Cloud Trail</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1</p>
<p>AWS X-Ray はアプリケーションが処理するリクエストに関するデータを収集するサービスです。 データを表示、フィルタリング、洞察を取得して問題の識別や最適化の機会を識別するために使用するツールを提供します。</p>
<p>Amazon Cloud Watchdはリクエストのデータ収集はできません。マネジメントコンソールで確認できるのはAWSのリソースです。Croud Trailはユーザが何をしたかを確認できます。そのため、リクエストに関するデータ収集を行うサービスは1。</p>
</div></div>



<h4 class="wp-block-heading" id="i-25"><span id="toc32">問題28</span></h4>



<p>Amazon Cloud Watchの説明で正しいものはどれか？（※複数回答）</p>



<ol class="wp-block-list">
<li>標準メトリクスで収集できるのは「ネットワークIO」「CPU使用率」「メモリ使用率」など</li>



<li>エージェントを起動し、カスタムメトリクスを利用すれば「ディスク空容量」も監視可能</li>



<li>環境内の異常動作を検知し、アラートの設定が可能</li>



<li>ログとメトリクスを視覚化し、自動化したアクションを実行できる</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2,3,4</p>
<p>標準メトリクスで収集できるデータでメモリ使用率は取得できない。取得するためにはカスタムメトリクスを利用する必要がある。Cloud Watchでは他にも問題のトラブルシューティングやインサイトの検出も可能でアプリのスムーズな実行を維持する機能が提供される。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc33">問題29</span></h4>



<p>ある会社が日中しか利用しないサービスをAWSで動かそうと考えています。費用面的にEC2は夜間はシャットダウンさせる予定です。その際にデータを保存しておくのに役立つストレージサービスはどれか？</p>



<ol class="wp-block-list">
<li>Amazon EC2インスタンスストア</li>



<li>Amazon EBS(Amazon Elastic Block Store)</li>



<li>Amazon Night DB</li>



<li>Amazon TMP DB</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2</p>
<p>3,4,は存在しません。EBSはスループットとトランザクションが集中するどんな規模のシステムにも対応できる永続的なブロックレベルのストレージです。EC2をシャットダウンさせてもデータは消えません。反対にEC2インスタンスストアはEC2をシャットダウンするとデータが消えます。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc34">問題30</span></h4>



<p>ある企業でHTTPSプロトコルを使用して、SSLエンドポイント経由でデータを安全にアップロードしたいと考えている。データが保存される先はどれか？</p>



<ol class="wp-block-list">
<li>EBS</li>



<li>Amazon EC2インスタンスストア</li>



<li>S3</li>



<li>EFS</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>S3はVPCに設定したエンドポイントからデータをインターネットを介さずにデータをアップロード・ダウンロードできる。</p>
<p>EFSはEC2から接続できるファイルストレージ。EFSは複数インスタンス間で共有することが出来るのでファイルサーバのように利用できる。</p>
<p>EBSはスループットとトランザクションが集中するどんな規模のシステムにも対応できる永続的なブロックレベルのストレージです。反対にEC2インスタンスストアはEC2を止めるとデータが消えるストレージです。</p>
</div></div>



<ol class="wp-block-list">
<li></li>
</ol>



<p>HTTPS プロトコルを使用して、SSL エンドポイント経由で Amazon S3 にデータを安全にアップロードまたはダウンロードできます。</p>



<h4 class="wp-block-heading"><span id="toc35">問題31</span></h4>



<p>EC2に関して正しい説明はどれか？（※複数解答）</p>



<ol class="wp-block-list">
<li>従量課金で利用可能な仮想サーバー構築サービス</li>



<li>EC2を別リージョンに複数設置することで、セキュリティ面が向上する</li>



<li>マネージドサービスである</li>



<li>EC2に対してパッチ適用を行うのはユーザ側の責任である</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1,4</p>
<p>EC2はアンマネージドサービスです。EC2を別リージョンに設置することで、向上するのはセキュリティ面ではなく災害時などに強い信頼性の柱である。</p>
</div></div>



<h4 class="wp-block-heading" id="block-d1ab3aca-48d4-41b8-9f39-8d1ba2c16814"><span id="toc36">問題32</span></h4>



<p>EC2 Auto Scalingの説明で正しいものはどれか？（複数解答）</p>



<ol class="wp-block-list">
<li>耐障害性を向上させる</li>



<li>アプリの可用性を向上させる</li>



<li>コストの削減が見込める</li>



<li>利用料金はAuto Scaling設定時にEC2の増減範囲によって月額で請求される</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1,2,3</p>
<p>EC2 Auto Scalingは利用料金は無料である。</p>
</div></div>



<h4 class="wp-block-heading" id="i-28"><span id="toc37">問題33</span></h4>



<p>複数のEC2インスタンス間でファイルを共有したい場合に利用するサービスはどれか？</p>



<ol class="wp-block-list">
<li>Amazon EBS</li>



<li>Amazon EFS</li>



<li>Amazon VPC</li>



<li>Amazon EMR</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2</p>
<p>Amazon EFSはEC2から接続できるファイルストレージ。EFSは複数インスタンス間で共有することが出来るのでファイルサーバのように利用できる。</p>
<p>EBSはEC2のブロックストレージで共有はできない。VPCは論理的に分離された仮想ネットワーク。EMRはビッグデータフレームワークとして、大量のデータを処理および分析するマネージド型クラスタープラットフォーム。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc38">問題34</span></h4>



<p>EC2インスタンスのクラスタでコンテナ化されたアプリを実行できるサービスはどれか？</p>



<ol class="wp-block-list">
<li>Amazon ECR</li>



<li>Amazon MCS</li>



<li>Amazon ECS</li>



<li>Amazon Batch</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>Amazon ECSはDockerコンテナを簡単に実行、停止、管理できる高度にスケーラブルなコンテナオーケストレーションサービスです。</p>
<p>Amazon MCSはスケーラブルで可用性の高い、管理されたApache Cassandra互換のデータベースサービス。</p>
<p>Amazon ECSは開発者がDockerコンテナイメージをAWSクラウドに保存・管理することができる。</p>
<p>Amazon Batchはフルマネージド型のバッチ処理実行環境サービス。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc39">問題35</span></h4>



<p>ウェブサイトやウェブアプリケーションを構築する必要がある開発者が Amazon Web Services (AWS) の使用を開始する最も簡単な方法はどれか？</p>



<ol class="wp-block-list">
<li>EC2</li>



<li>Lambda</li>



<li>LaightSail</li>



<li>テクニカルサポート</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>Amazon Lightsail は、ウェブサイトやウェブアプリケーションを構築する必要がある開発者が Amazon Web Services (AWS) の使用を開始する最も簡単な方法です。料金体系は従来課金ではなくプランという形態。プロジェクトを開始できるようなサービスが多数組み込まれている。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc40">問題36</span></h4>



<p>ある会社ではウェブアプリに検索ソリューションを設定しようと考えている。その際に最も適したAWSサービスはどれか？</p>



<ol class="wp-block-list">
<li>Amazon CloudMap</li>



<li>Amazon CloudSearch</li>



<li>Amazon SearchSolution</li>



<li>Amazon SearchMap</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2</p>
<p>Amazon CloudMapは、クラウドリソース検出サービスです。 Cloud Mapでは、アプリケーションリソースのカスタム名を定義して、動的に変化するこれらのリソースの更新された場所を管理できます。あらかじめ設定した自分の好きな名前で、あらゆるAWSリソースに対してアクセスできます。</p>
<p>3,4は存在しないサービス。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc41">問題37</span></h4>



<p>インタラクティブなクエリサービスで、AmazonS3内のデータを標準SQLを使用して簡単に分析するサービスはどれか？</p>



<ol class="wp-block-list">
<li>Amazon Neptune</li>



<li>Amazon Athena</li>



<li>Amazon Kinesis</li>



<li>Amazon Polly</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2</p>
<p>Amazon Athenaはインタラクティブなクエリサービスで、AmazonS3内のデータを標準SQLを使用して簡単に分析。非構造化データ、構造化データ、半構造化データを扱えます。料金はクエリ単位。</p>
<p>Neptureはグラフの可視化サービス。</p>
<p>Kinesisはストリーミングデータをリアルタイムで収集・処理・分析する。</p>
<p>Amazon PollyはAI技術を活用したテキストを音声に変換するサービス。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc42">問題38</span></h4>



<p>Amazon RDSの説明で間違っているものはどれか？</p>



<ol class="wp-block-list">
<li>リレーショナル型のデータベース</li>



<li>MySQL、Oracle、SQL Server、PostgreSQL、MariaDB、Auroraのエンジンを選択できる</li>



<li>負荷分散のためのリードレプリカを作成できる</li>



<li>設定を加えると自動バックアップ機能が追加される</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：4</p>
<p>自動バックアップ機能はデフォルトで着いているので設定を追加する必要はない。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc43">問題39</span></h4>



<p>Amazon S3(Amazon Simple Storage Service)に関して正しい説明はどれか？</p>



<ol class="wp-block-list">
<li>S3サービスを利用する際はAZを指定する必要がある</li>



<li>S3サービスを利用する際にストレージ量を決めてからサービスが起動される</li>



<li>S3に設定を追加することで、スケーリングを自動で行うことができる</li>



<li>サーバー側のSSEオプションを使用して、保存データを暗号化できる</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：4</p>
<p>S3サービスを利用する場合、AZを指定せずリージョンに直接サービスが設置される。ストレージ量も事前に決める必要がなく、設定なしで自動スケーリングが付いている。そのため、1,2,3は間違い。4は正しい。</p>
<p></p>
</div></div>



<h4 class="wp-block-heading"><span id="toc44">問題40</span></h4>



<p>Amazon Batchの説明として間違っているものはどれか？</p>



<ol class="wp-block-list">
<li>フルマネージド型のバッチ処理実行環境サービス</li>



<li>Docker コンテナとして実行できるあらゆるジョブをサポート</li>



<li>インタラクティブな処理に向いている</li>



<li>数十万件のバッチジョブでも効率的に実行可能</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>Amazon Batchはインタラクティブな処理には向いていない</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc45">問題41</span></h4>



<p>インフラストラクチャをコードとして管理し、AWSリソースの起動・設定等をするサービスはどれか？</p>



<ol class="wp-block-list">
<li>AWS CodeDeploy</li>



<li>AWS CloudFormation</li>



<li>AWS AutoInfrastructure</li>



<li>AWS CodeBuild</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2</p>
<p>AWS CloudFormationは、インフラストラクチャをコードとして、AWSリソースの起動、設定、接続をするサービス。JSONまたはYAML形式のファイル(ソースコード)としてインフラを扱い、リポジトリで管理する。CloudFormation自体の課金は発生しません。テンプレートで作成された関連リソース群は単一のスタックとして管理されます。</p>
<p>AWS CodeDeployはソフトウェアのデプロイを自動化するフルマネージド型のサービス。ライブラリなどのアプリケーションリソースをアプリケーションコードとともに保存できる。</p>
<p>AutoInfrastructureは存在しない。</p>
<p>AWS CodeBuildは、ソースコードをコンパイルし、テストを実行し、デプロイ可能なソフトウェアパッケージを作成できる完全マネージド型のビルドサービスです。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc46">問題42</span></h4>



<p>Amazon S3に関して正しい情報はどれか？（※複数解答）</p>



<ol class="wp-block-list">
<li>S3にはURLでアクセス可能することができる</li>



<li>耐久性は99.999999999%(イレブンナイン)である</li>



<li>AZを指定して、リージョン内に直接自動的なレプリケートが出来る</li>



<li>保存されたデータは自動的に3か所以上の別リージョンのデータセンターに複製される</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1,2</p>
<p>S3は指定リージョン内にAZを指定せず直接自動的なレプリケートができる。また、保存されたデータは同一リージョン内のデータセンター3箇所以上に自動的に複製される。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc47">問題43</span></h4>



<p>ビッグデータフレームワークとして、大量のデータを処理および分析するマネージド型クラスタープラットフォームサービスはどれか？</p>



<ol class="wp-block-list">
<li>Amazon Redshift</li>



<li>Amazon EMR</li>



<li>Amazon Macie</li>



<li>Amazon Machine Learning</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2</p>
<p>Amazon EMRは、ビッグデータフレームワーク (Apache Hadoop や Apache Spark など)の実行を簡素化して、ビッグデータを処理および分析するマネージドクラスタープラットフォームです。</p>
<p>Amazon Redshiftはデータウェアハウスと分析に利用できるマネージド型データベース。</p>
<p>Amazon Macieは機械学習を利用してデータ保護とデータ漏洩のリスクを解析し、AWS上で保存されているデータを監視・保護するためのセキュリティサービスです。Macieは、機密情報や個人情報（PII）などの検出を自動化し、データアクセスの異常を特定し、予防策を講じることができます。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc48">問題44</span></h4>



<p>Amazon EBSの説明で正しいものはどれか？（※複数解答）</p>



<ol class="wp-block-list">
<li>EC2を起動後にアタッチすることができる</li>



<li>暗号化が可能</li>



<li>容量は後から変更可能</li>



<li>スナップショット機能で差分バックアップができる</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1,2,3,4</p>
<p>上記全て正しい。スナップショットはS3に保存される。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc49">問題45</span></h4>



<p>ある企業で1年に1度確認するかわからない公文書を保存するストレージをクラウドに保存しようと考えています。読み取りまでに時間はかかっても問題ない場合、どのストレージが適しているでしょうか？</p>



<ol class="wp-block-list">
<li>S3</li>



<li>S3 Glacier</li>



<li>EBS</li>



<li>EFS</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2</p>
<p>S3 Glacierは使用頻度の少ないファイルを長期保存するのに適している。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc50">問題46</span></h4>



<p>Amazon VPC(Virtual Private Cloud)に関して間違っている説明はどれか？</p>



<ol class="wp-block-list">
<li>論理的に分離された仮想ネットワークで、AWS内にユーザ専用のネットワーク空間を提供する</li>



<li>AZをまたがることができる</li>



<li>通信プロトコルにはIPv6のみを採用している</li>



<li>インターネットに接続するためにはインターネットゲートウェイを使用する</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>通信プロトコルにはIPv6とIPv4も使用できる。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc51">問題47</span></h4>



<p>VPCに設定できるサブネットに関しての説明で正しいものはどれか？</p>



<ol class="wp-block-list">
<li>サブネットはAZを跨いで作成することができる</li>



<li>パブリックサブネットではインターネットゲートウェイにルーティングされる</li>



<li>プライベートサブネットはインターネットゲートウェイにルーティングされるが、特定のサイトのみにアクセスできる</li>



<li>AWSアカウントで共有できるサブネット数は256である</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2</p>
<p>サブネットのトラフィックがインターネットゲートウェイにルーティングされる場合、そのサブネットはパブリックサブネットと呼ばれる。そのため2が正解。そうではない場合、プライベートサブネットと呼ばれます。</p>
<p>また、サブネットはAZを跨いで作成することはできません。AWSアカウントで共有できるサブネット数は100である。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc52">問題48</span></h4>



<p>複数のVPC間で異なるリージョン間での通信ができるサービスはどれか？</p>



<ol class="wp-block-list">
<li>VPCピアリング</li>



<li>AWS Transit Gateway</li>



<li>AWS Fargate</li>



<li>AWS Directory Service</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1</p>
<p>VPCピアリングは2つのVPC間でプライベートなトラフィックのルーティングを可能にするネットワーキング接続です。複数のVPCで接続する場合はAWSTransitGatewayのため2が正解。</p>
<p>AWS FargateはEC2とEKSの両方で動作するコンテナ向けサーバレスコンピューティングエンジン。</p>
<p>AWS Directory Serviceは、マネージド型のMicrosoft Active Directory、および軽量なディレクトリを提供するサービスです。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc53">問題49</span></h4>



<p>ある企業が保有するオンプレ環境のデータをキャリア専用回線を使用してAWSにデータを転送したいと考えています。適したサービスはどれか？</p>



<ol class="wp-block-list">
<li>AWS VPN</li>



<li>Amazon Connect</li>



<li>Data Pipeline</li>



<li>AWS Diret Connect</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：4</p>
<p>AWS Diret Connectはキャリアの専用線を利用して、AWSと他ネットワーク間に専用のプライベートネットワーク接続を確立するサービスです。ハイブリッドアーキテクチャに向いています。</p>
<p>AWS VPNはVPCと他ネットワーク間にプライベート接続(VPN)を確立するサービス。</p>
<p>Amazon ConnectはAWSが提供するクラウドベースのコンタクトセンターサービスです。低コストで簡単にセットアップでき、電話やチャットを含むオムニチャネルサポートを提供します。</p>
<p>Data Pipelineは複雑なデータ処理ワークロードを簡単に作成できるサービスです。パイプラインで利用されるリソースはパイプライン実行時に定義ファイルを元に自動的に作成されます。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc54">問題50</span></h4>



<p>AWS導入前にAWSを使って期待するビジネス上の成果を達成するためのサポートはどれか？</p>



<ol class="wp-block-list">
<li>プロフェッショナルサービス</li>



<li>エンタープライズサポート</li>



<li>ビジネスサポート</li>



<li>ディベロッパーサービス</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1</p>
<p>プロフェッショナルサービスはAWSを使って期待するビジネス上の成果を達成するためのサポート。導入前に受けるサービス（導入後はエンタープライズサポート）。</p>
<p>ビジネスサポートは企業向けのサポートサービス。24時間365日のサポートを受けられる。また、ケースをオープンに出来るユーザー数に制限がないことも特徴。導入後のサポートでコンシェルジェサービスも付いている。</p>
<p>24時間365日のテクニカルサポートを受けられる。AWSに実稼働ワークロードを持っているユーザーに推奨される。</p>
</div></div>



<h4 class="wp-block-heading" id="i-82"><span id="toc55">問題51</span></h4>



<p>AWSにおいて全ての組織およびアカウント全体で大規模にセキュリティ・コンプライアンスルールを適用できるサービスはどれか？</p>



<ol class="wp-block-list">
<li>AWS Config</li>



<li>AWS Control Tower</li>



<li>AWS Inspector</li>



<li>AWS Artifact</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2</p>
<p>AWS ConfigはAWSリソースの設定を評価、監査、審査できるサービス。AWSリソース間の設定に対する全体的なコンプライアンスを確認できます。セキュリティ・オペレーション・コンプライアンスルールを適用するにはAWS Control Towerを使用します。</p>
<p>InspecorはEC2にデプロイされたアプリケーションのセキュリティ脆弱性や準拠違反を自動的に検出するサービスです。</p>
<p>ArtifactはAWSのコンプライアンスレポートにアクセスできる一元管理型のポータル。ドキュメントを確認できる。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc56">問題52</span></h4>



<p>音声とテキストを使用してアプリケーションに会話型インターフェイスを構築するためのサービスはどれか？</p>



<ol class="wp-block-list">
<li>AWS Glue</li>



<li>Amazon Lex</li>



<li>Amazon Fsx</li>



<li>Amazon Rekognition Image</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2</p>
<p>AWS Glueは抽出、変換、ロード (ETL) を行う完全マネージド型のサービスです。</p>
<p>AWS FsxはWindows server 上に構築されたフルマネージド型の共有ストレージ。 世界で最も人気のある高性能ファイルシステムをベースに構築された、フルマネージド型共有ストレージです。</p>
<p>Amazon Rekognition Imageオブジェクト、シーン、顔の検出や、テキストの抽出、有名人の認識、画像内の不適切なコンテンツの識別ができる、深層学習による画像認識サービス。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc57">問題53</span></h4>



<p>ソースコードからビルドしたソフトウェアを本番環境にリリースするために必要なステップのモデル化、および自動化に使用できる継続的な配信サービスはどれか？</p>



<ol class="wp-block-list">
<li>AWS OpsWorks</li>



<li>AWS CodeCommit</li>



<li>AWS CodePipeline</li>



<li>AWS DataPipeline</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>AWS OpsWorksはマネージド型インスタンスを利用できるようになる構成管理サービス。オンプレミス環境でも使用することができる。</p>
<p>CodeCommitは完全に管理されたソース管理サービスであり、企業が安全で拡張性の高いプライベートGitリポジトリを簡単にホストできるようになります。
</p>
<p>AWS Data Pipelineは複雑なデータ処理ワークロードを簡単に作成できるサービスです。パイプラインで利用されるリソースはパイプライン実行時に定義ファイルを元に自動的に作成されます。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc58">問題54</span></h4>



<p>エクサバイト規模のデータ転送サービスでトラックでデータを運ぶサービスはどれか？</p>



<ol class="wp-block-list">
<li>AWS Snowball Edge</li>



<li>AWS Snowball</li>



<li>AWS Snowmobile</li>



<li>AWS Snowexa</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>AWS Snowball Edgeはテラバイト規模、AWS Snowballはペタバイト規模のデータ用のサービスです。AWS Snowexaは存在しません。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc59">問題55</span></h4>



<p>DynamoDBの説明で正しいものはどれか？（※複数回答）</p>



<ol class="wp-block-list">
<li>データの形式はJSON</li>



<li>高速で予測可能なパフォーマンスとシームレスな拡張性を持つ</li>



<li>キーバリューという構造</li>



<li>完全マネージド型のNoSQLデータベースサービス</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1,2,3,4</p>
<p>全て正しい。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc60">問題56</span></h4>



<p>AWSのEBSボリュームの暗号化で使用できるサービスはどれか？</p>



<ol class="wp-block-list">
<li>AWS STS（Security Token Service）</li>



<li>AWS KMS（Key Management Service）</li>



<li>アクセスキー</li>



<li>AWS Certificate Manager</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2</p>
<p>AWS KMSはEBSボリュームの暗号化で使用されるサービス。</p>
<p>STSはAWSリソースに対して一時的な認証情報を提供する機能。</p>
<p>アクセスキーはAWSサービスにアクセスすることができるキーのこと。</p>
<p>AWS Certificate Managerはキーを管理できるサービス。</p>
</div></div>



<h4 class="wp-block-heading" id="i-55"><span id="toc61">問題57</span></h4>



<p>AWS Certificate Managerで正しい説明はどれか？（※複数解答）</p>



<ol class="wp-block-list">
<li>SSL/TLS 証明書で使用されるプライベートキーを保護できる</li>



<li>AWS基盤内の各種サービスでの利用に限り、SSL証明書を無料で作成できる</li>



<li>サードパーティの証明書はインポートできない</li>



<li>各種AWSサービスにSSL証明書をデプロイできる</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1,2,4</p>
<p>AWS Certificate Managerはサードパーティの証明書はインポートできます。1,2,4は全て正しい説明です。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc62">問題58</span></h4>



<p>AWS Trusted Advisorについて間違った説明はどれか？</p>



<ol class="wp-block-list">
<li>AWS Trusted AdvisorはAWS環境を分析し、最適化するベストプラクティスを提供するサービス</li>



<li>ビジネスサポートで使用できる</li>



<li>エンタープライズサポートで使用できる</li>



<li>AWS Trusted Advisorでは「コスト最適化」「パフォーマンス」「可用性」「耐障害性」「サービスクォータ」の観点でチェックを行う</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：4</p>
<p>AWS Trusted Advisorでは「コスト最適化」「パフォーマンス」「セキュリティ」「耐障害性」「サービスクォータ」の観点でチェックを行います。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc63">問題59</span></h4>



<p>直感的なウェブベースのUIでAWSリソースを管理できるインターフェイスはどれか？</p>



<ol class="wp-block-list">
<li>AWS Compute Optimizer</li>



<li>AWS マネージメントコンソール</li>



<li>AWS System Manager</li>



<li>AWS インフラストラクチャーイベント管理</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2</p>
<p>AWS Compute Optimizerはお客様のワークロードに対する最適な AWS コンピューティングリソースを推奨します。</p>
<p>AWS System Managerは統合されたユーザーインターフェイスを備えており、AWS のアプリケーションとリソース全体の運用上の問題を一元的に追跡および解決できる。</p>
<p>AWSインフラストラクチャーイベント管理は製品のローンチ、移行といった予定イベントの準備や実行時に、アーキテクチャとスケーリングのガイダンスと運用サポートを提供するサービス。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc64">問題60</span></h4>



<p>EC2インスタンスが同じ量のトラフィックを取得するよう調節するAWSサービスはどれか？</p>



<ol class="wp-block-list">
<li>Route 53</li>



<li>ALB（Application Load Balancer）</li>



<li>ELB（Elastic Load Balancing）</li>



<li>NLB（Network Load Balancer）</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>ELBはトラフィックの分散を管理するレギュレーターとして機能し、システム内の各EC2インスタンスが同じ量のトラフィックを取得するよう調整するAWSサービス。サーバーへの負荷集中を防ぎます。そのため正解。</p>
<p>Route 53はDNSサービス。</p>
<p>ALB（Application Load Balancer）はアプリケーションロードバランサー。レイヤー7(アプリケーション層)で動作する。</p>
<p>NLB（Network Load Balancer）はネットワークロードバランサー。レイヤー4(トランスポート層)で動作する。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc65">問題61</span></h4>



<p>AWS上でのイベント発生のタイミングで通知を行うサービスはどれか？</p>



<ol class="wp-block-list">
<li>AWS SMS</li>



<li>Amazon SES</li>



<li>Amazon SNS</li>



<li>Amazon SQS</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>Amazon SNS(Simple Notification Service)はAWS上でのイベント発生のタイミングで、様々な手段で通知を行うサービス。通知先として、SMS、SQS、Lambdaなどを選択できる。コンポーネント間のメッセージングをプッシュ方式で実施するサービス。そのため3が正解。</p>
<p>AWS Server Migration Service(SMS)はサーバーの移行を支援するサービス。</p>
<p>Amazon SESはEメール送受信機能を利用できるクラウドベースのサービス。</p>
<p>Amazon SQSはAWS上でキューイング処理・タスク並列処理・ポーリング型の通知ができるサービス。</p>
</div></div>



<h4 class="wp-block-heading" id="block-7f2c76bf-5666-4ae1-b565-cab74abaf05c"><span id="toc66">問題62</span></h4>



<p>AWS Elastic Beanstalkの説明で正しいものはどれか？（※複数回答）</p>



<ol class="wp-block-list">
<li>AWSにアプリケーションをデプロイするための最も早くて簡単な方法である</li>



<li>アプリケーションの容量プロビジョニング、負荷分散、自動スケーリング、およびアプリケーションのモニタリングなどの機能を提供するサービス</li>



<li>容量のプロビジョニング、ロードバランシング、スケーリングができる</li>



<li>アプリケーション状態モニタリングといった詳細を自動的処理する</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1,2,3,4</p>
<p>全て正しい。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc67">問題63</span></h4>



<p>ファイル送信やWebアプリのレスポンスの高速化を行うためのAWSサービスはどれか？（※複数回答）</p>



<ol class="wp-block-list">
<li>Amazon S3 Transfer Acceleration</li>



<li>AWS Application Discovery Service</li>



<li>AWS Database Migration Service(DMS)</li>



<li>AWS ElastiCache</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1,4</p>
<p>Amazon S3 Transfer AccelerationはAmazon CloudFront の世界中に分散したエッジロケーションを利用してユーザーに近いエッジロケーションを介したS3へのファイル転送を高速にするサービス。また、AWS ElastiCacheはインメモリキャッシュサービスの構築・管理及びスケーリングを用意に実施することができるサービス。キャッシュ自体をメモリに保存してやり取りをすることで、Webアプリケーションのレスポンスタイム向上に役立ちます。そのため、1,4が正解。</p>
<p>AWS Application Discovery Serviceはオンプレミスデータセンターに関する情報を収集することにより、移行プロジェクト計画を支援するサービスです。AWS Database Migration Service(DMS)はデータベースの機能に悪影響を与えずに移行できるサービス。移行中でもソースデータベースは完全に利用可能な状態に保たれるサービス。そのため問題には適さない。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc68">問題64</span></h4>



<p>AWS Lambdaの説明で間違っているものはどれか？</p>



<ol class="wp-block-list">
<li>サーバなどのインフラ管理を意識せずにコードを実行できる</li>



<li>Lambdaから他のAWSサービス間のデータ転送には料金が発生する</li>



<li>Lambda登録時にメモリサイズとCPUタイプを指定できる</li>



<li>Lambda関数の作成は無料です</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>CPUタイプは指定できません。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc69">問題65</span></h4>



<p>Webおよびモバイルアプリケーション開発プラットフォームであり、フロントエンド開発とクラウドサービスの統合を簡単にするツールとサービスはどれか？</p>



<ol class="wp-block-list">
<li>AWS Service Catalog</li>



<li>AWS AppSync</li>



<li>Amazon AppStream 2.0</li>



<li>AWS Amplify</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：4</p>
<p>AWS Service Catalogは組織として管理している製品を、AWS利用者であるユーザ部門が早く簡単に立ち上げる事ができるサービスです。</p>
<p>AWS AppSyncはフルマネージド型のGraphQLサービスである。リアルタイムのデータ同期とオフラインアクセス機能を持つ柔軟でスケーラブルなAPIをデザイン可能で、アプリケーションやデバイスとデータソースをシームレスに連携させることができる。</p>
<p>Amazon AppStream 2.0はデスクトップアプリケーションに即座にアクセスできるようにする、完全マネージド型のアプリケーションストリーミングサービス</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc70">問題66</span></h4>



<p>1つのVPCとオンプレミス環境をVPN経由で接続する時にVPCに設置する通信の出入口はどれか？</p>



<ol class="wp-block-list">
<li>API Gateway</li>



<li>AWS Storage Gateway</li>



<li>AWS WAF（ウェブアプリケーションファイアウォール）</li>



<li>AWS Virtual&nbsp;Private Gateway</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：4</p>
<p>AWS Virtual Private Gatewayは仮想プライベートゲートウェイ。</p>
<p>API GatewayはREST APIやWebSocket APIに対応しているゲートウェイ。</p>
<p>AWS Storage Gatewayはオンプレミスから実質無制限のクラウドストレージへのアクセスを提供するハイブリッドクラウドストレージサービス。S3への接続など。</p>
<p>AWS WAFはウェブアプリケーションまたは API を保護するウェブアプリケーションファイアウォール。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc71">問題67</span></h4>



<p>ある企業が自社の保有するサーバでAWSサービスを利用したいと考えています。どのサービスを利用すれば実現可能でしょうか？</p>



<ol class="wp-block-list">
<li>Amazon EC2 Dedicated Host</li>



<li>Amazon Lightsail </li>



<li>AWS CloudHSM</li>



<li>AWS Lambda</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1</p>
<p>自社のサーバでAWSサービスを利用する場合はAmazon EC2 Dedicated Hostが正しいサービスです。</p>
<p>Amazon Lightsail は、ウェブサイトやウェブアプリケーションを構築する必要がある開発者が Amazon Web Services (AWS) の使用を開始する最も簡単な方法です。CloudHSMはAWSクラウド内の専用ハードウェアセキュリティモジュール (HSM) インスタンスを使用する。専用のセキュリティハードウェアモジュールへのキーの保存をします。Lambdaはサーバレスなコードの実行を行うことができるサービスです。</p>
</div></div>



<p></p>



<h3 class="wp-block-heading" id="i-57"><span id="toc72">「クラウドの料金と請求」無料問題</span></h3>



<h4 class="wp-block-heading"><span id="toc73">問題68</span></h4>



<p>ある企業が2年程度の長期間でAWSサーバ上でアプリを動かしたいと考えています。アプリの使用上、365日24時間常時稼働していることが条件です。最も最適なインスタンスタイプはどれか？</p>



<ol class="wp-block-list">
<li>オンデマンドインスタンス</li>



<li>スケジュールドリザーブインスタンス</li>



<li>スポットインスタンス</li>



<li>リザーブドインスタンス</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：4</p>
<p>リザーブドインスタンスは1年間または3年間の長期使用をする場合に、オンデマンド料金に比べて大幅な割引価格(最大75%)を受けられる。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc74">問題69</span></h4>



<p>ある企業がサービスが停まっても構わないが、起動させておきたいAWSサーバを探している。最も適したインスタンスタイプはどれか？</p>



<ol class="wp-block-list">
<li>オンデマンドインスタンス</li>



<li>スケジュールドリザーブインスタンス</li>



<li>スポットインスタンス</li>



<li>リザーブドインスタンス</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>スポットインスタンスは入札型のため、かなりコストが安い。オンデマンド料金と比べて最大90%の割引価格で提供できる。場合によっては利用途中に停止する恐れがあるため、インスタンスが停止しても影響がないサービスに利用することが推奨される。</p>
</div></div>



<h4 class="wp-block-heading" id="i-95"><span id="toc75">問題70</span></h4>



<p>企業が請求を詳細なレベルで追跡・分類できるサービスはどれか？</p>



<ol class="wp-block-list">
<li>AWS Croud Trail</li>



<li>AWS Budgets</li>



<li>AWS Cost allocation tags</li>



<li>AWS Cost Trail</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>Cost allocation tagsは企業は請求を詳細なレベルで追跡・分類することができます。これにより、特定のプロジェクトや部門のコストを分析したり、請求データをより細かく管理することができます。</p>
<p>Cloud Trailはアカウントを持つユーザの動きを確認できるサービス。Budgetsは閾値を超えた場合アラートを出すサービス。Cost Trailは存在しない。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc76">問題71</span></h4>



<p>1つのユーザインターフェイスで複数のAWSアカウントの請求内容を表示・管理・支払いすることができるAWSのサービスはどれか？</p>



<ol class="wp-block-list">
<li>AWS Consolidated Billing</li>



<li>AWS Billing</li>



<li>AWS Cost Console</li>



<li>AWS Console</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1</p>
<p>AWS Consolidated Billingは1つのユーザーインターフェイスで複数のAWSアカウントの請求内容を表示、管理、および支払いをすることができる。利用中のすべてのAWSアカウントに適用されるボリューム割引を受けることができる。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc77">問題72</span></h4>



<p>AWS Organizationsの説明で正しいものはどれか？（※複数解答）</p>



<ol class="wp-block-list">
<li>AWSのルートユーザーに請求が届くサービス</li>



<li>組織内の複数のAWSアカウントに対して、単一の支払い方法を設定できる</li>



<li>一括請求を使用することにより、サービス使用量を集約できたり、料金面での割引などの恩恵を受けることもできる</li>



<li>必要なAWSサービスへのアクセスのみを許可するといったことも可能。</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1,2,3,4</p>
<p>全て正しい。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc78">問題73</span></h4>



<p>AWSリソースの使用量を時系列で可視化し、コストや傾向を分析することができるAWSサービスはどれか？</p>



<ol class="wp-block-list">
<li>AWS System Console</li>



<li>AWS Cost&nbsp;and&nbsp;Usage&nbsp;Reports</li>



<li>AWS Cost Explorer</li>



<li>AWS Cost and Resource Report</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>AWS Cost ExplorerはAWSリソースの使用量を時系列で可視化し、コストや傾向を分析することができるAWSサービスです。最大で過去13か月まで可能。現在のAWS料金を分析するのに役立ちます。</p>
<p>Cost and Usage Reports(CUR)では、アカウントの最も包括的なコストと使用状況データを確認、項目化、および整理することができます。</p>
<p>AWS System Console、AWS Cost and Resource Reportは存在しません。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc79">問題74</span></h4>



<p>ある企業では現在オンプレミス環境で稼働しているサービスを保有している。このオンプレミス環境をAWSに移行しようと考えているが、予算がどの程度必要かや運用時のオンプレミスとの比較を行いたいと考えています。そういった際、どのAWSサービスを利用するのが最も適しているか？</p>



<ol class="wp-block-list">
<li>AWS Cost&nbsp;and&nbsp;Usage&nbsp;Reports</li>



<li>AWS TCO Calculator</li>



<li>AWS Pricing Calculator</li>



<li>AWS Budgets</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2</p>
<p>AWS TCO CalculatorはAWSが提供する無料ツール。オンプレミスデータセンターとAWSそれぞれを利用した場合のコスト削減効果を見積もることができる。</p>
<p>AWS Pricing CalculatorはAWSのユースケースのコストを見積もれたりすることが出来る。ソリューションを構築する前に必要なインスタンスタイプや契約条件を見つけられるため、計画を立てる際に利用できます。オンプレとの比較はTCO Calculatorです。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc80">問題75</span></h4>



<p>コストが閾値を超えた場合にアラートを出すサービスはどれか？</p>



<ol class="wp-block-list">
<li>AWS SNS</li>



<li>AWS Alert</li>



<li>AWS Budgets</li>



<li>AWS Cost Explorer</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答・解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>AWS SNSはイベント通知サービス、AWS Alertは存在しない、AWS Cost ExplorerはAWSリソースの使用量を時系列で可視化し、コストや傾向を分析することができるAWSサービスです。</p>
</div></div>



<p></p>



<p>以上でAWS クラウドプラクティショナーの無料試験問題は終了です。他にもIT関連の記事を記載しているので、興味あればサイト内見て行ってください。</p>



<p></p>The post <a href="https://tomoblog.net/programing/aws/cloud-practitioner-practice/">【AWS】クラウドプラクティショナー無料試験問題。</a> first appeared on <a href="https://tomoblog.net">ともぶろぐ</a>.]]></content:encoded>
					
					<wfw:commentRss>https://tomoblog.net/programing/aws/cloud-practitioner-practice/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【SpringBoot】SpringSecurityの使い方。</title>
		<link>https://tomoblog.net/programing/java/springboot-springsecurity/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=springboot-springsecurity</link>
					<comments>https://tomoblog.net/programing/java/springboot-springsecurity/#respond</comments>
		
		<dc:creator><![CDATA[tomo]]></dc:creator>
		<pubDate>Fri, 17 Jan 2025 09:38:02 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<guid isPermaLink="false">https://tomoblog.net/?p=10193</guid>

					<description><![CDATA[<p>　今回の記事では、SpringBootプロジェクトで簡単に認証機能を実装できるSpringSecurityの使い方をご紹介しています。SpringBootプロジェクトに認証機能を取り入れたいと考えている方や、Spring [&#8230;]</p>
The post <a href="https://tomoblog.net/programing/java/springboot-springsecurity/">【SpringBoot】SpringSecurityの使い方。</a> first appeared on <a href="https://tomoblog.net">ともぶろぐ</a>.]]></description>
										<content:encoded><![CDATA[<p>　今回の記事では、SpringBootプロジェクトで簡単に認証機能を実装できるSpringSecurityの使い方をご紹介しています。SpringBootプロジェクトに認証機能を取り入れたいと考えている方や、SpringSecurityの使い方をもっと知りたい方は、是非参考にしてみてください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">SpringSecurityの依存関係追加</a></li><li><a href="#toc2" tabindex="0">Spring Security実装</a><ol><li><a href="#toc3" tabindex="0">MvcConfig</a></li><li><a href="#toc4" tabindex="0">WebSecurityConfig</a></li><li><a href="#toc5" tabindex="0">テンプレート</a><ol><li><a href="#toc6" tabindex="0">ログイン画面</a></li><li><a href="#toc7" tabindex="0">ログイン成功後の画面</a></li></ol></li></ol></li><li><a href="#toc8" tabindex="0">アプリの起動</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">SpringSecurityの依存関係追加</span></h2>



<p>gladleの場合は下記を追加。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>dependencies {
  implementation &#39;org.springframework.boot:spring-boot-starter-security&#39;
  testImplementation &#39;org.springframework.security:spring-security-test&#39;
}</code></pre></div>



<p>mavenの場合はpomファイルに下記を追加。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>&lt;dependency&gt;
	&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
	&lt;artifactId&gt;spring-boot-starter-security&lt;/artifactId&gt;
&lt;/dependency&gt;</code></pre></div>



<p>これでSpringSecurityの準備はできたのでプロジェクトを作成していきます。</p>



<p></p>



<h2 class="wp-block-heading"><span id="toc2">Spring Security実装</span></h2>



<p>今回作成するアプリケーションの階層です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>.
├── HELP.md
├── mvnw
├── mvnw.cmd
├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── demo
│   │   │               ├── DemoApplication.java
│   │   │               ├── MvcConfig.java
│   │   │               ├── ServletInitializer.java
│   │   │               └── WebSecurityConfig.java
│   │   └── resources
│   │       ├── application.properties
│   │       ├── static
│   │       └── templates
│   │           ├── hello.html
│   │           └── login.html</code></pre></div>



<h3 class="wp-block-heading"><span id="toc3">MvcConfig</span></h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>package com.example.demo;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class MvcConfig implements WebMvcConfigurer {

	public void addViewControllers(ViewControllerRegistry registry) {
        // ルーティングの設定 
		registry.addViewController(&quot;/hello&quot;).setViewName(&quot;hello&quot;);
		registry.addViewController(&quot;/login&quot;).setViewName(&quot;login&quot;);
	}
}</code></pre></div>



<p>上記でURLのルーティング設定をします。</p>



<h3 class="wp-block-heading"><span id="toc4">WebSecurityConfig</span></h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>package com.example.demo;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
@EnableWebSecurity
public class WebSecurityConfig {

	@Bean
	public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
		http
			.authorizeHttpRequests((requests) -&gt; requests
				.requestMatchers(&quot;/&quot;, &quot;/home&quot;).permitAll()
				.anyRequest().authenticated()
			)
			.formLogin((form) -&gt; form
				.loginPage(&quot;/login&quot;)
                .defaultSuccessUrl(&quot;/hello&quot;)
				.permitAll()
			)
			.logout((logout) -&gt; logout.permitAll());

		return http.build();
	}

	@Bean
	public UserDetailsService userDetailsService() {
		UserDetails user =
			 User.withDefaultPasswordEncoder()
				.username(&quot;user&quot;)
				.password(&quot;password&quot;)
				.roles(&quot;USER&quot;)
				.build();

		return new InMemoryUserDetailsManager(user);
	}
}</code></pre></div>



<p>少し解説します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>    @Bean
	public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
		http
			.authorizeHttpRequests((requests) -&gt; requests
				.requestMatchers(&quot;/&quot;, &quot;/home&quot;).permitAll()
				.anyRequest().authenticated()
			)
			.formLogin((form) -&gt; form
				.loginPage(&quot;/login&quot;)
                .defaultSuccessUrl(&quot;/hello&quot;)
				.permitAll()
			)
			.logout((logout) -&gt; logout.permitAll());

		return http.build();
	}</code></pre></div>



<p>上記の「formLogin」部分が認証処理のメイン部分です。</p>



<p>ログインページを開いた際に認証が成功した場合、defaultSuccessUrlで指定している認証成功後画面に遷移します。</p>



<p>認証処理は下記です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>	@Bean
	public UserDetailsService userDetailsService() {
		UserDetails user =
			 User.withDefaultPasswordEncoder()
				.username(&quot;user&quot;)
				.password(&quot;password&quot;)
				.roles(&quot;USER&quot;)
				.build();

		return new InMemoryUserDetailsManager(user);
	}</code></pre></div>



<p>今回の認証はユーザ名がuser、パスワードがpasswordでフォームに入力された値と一致すれば認証が通るようになっています。</p>



<h3 class="wp-block-heading"><span id="toc5">テンプレート</span></h3>



<h4 class="wp-block-heading"><span id="toc6">ログイン画面</span></h4>



<p>HTML「login.html」ファイルを下記のように記載。こちらはログイン画面になります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-html" data-lang="HTML"><code>&lt;!DOCTYPE html&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xmlns:th=&quot;https://www.thymeleaf.org&quot;&gt;
    &lt;head&gt;
        &lt;title&gt;Spring Security Example &lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;div th:if=&quot;${param.error}&quot;&gt;
            Invalid username and password.
        &lt;/div&gt;
        &lt;div th:if=&quot;${param.logout}&quot;&gt;
            You have been logged out.
        &lt;/div&gt;
        &lt;form th:action=&quot;@{/login}&quot; method=&quot;post&quot;&gt;
            &lt;div&gt;&lt;label&gt; User Name : &lt;input type=&quot;text&quot; name=&quot;username&quot;/&gt; &lt;/label&gt;&lt;/div&gt;
            &lt;div&gt;&lt;label&gt; Password: &lt;input type=&quot;password&quot; name=&quot;password&quot;/&gt; &lt;/label&gt;&lt;/div&gt;
            &lt;div&gt;&lt;input type=&quot;submit&quot; value=&quot;Sign In&quot;/&gt;&lt;/div&gt;
        &lt;/form&gt;
    &lt;/body&gt;
&lt;/html&gt;</code></pre></div>



<p>解説していきます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>&lt;div th:if=&quot;${param.error}&quot;&gt;
    Invalid username and password.
&lt;/div&gt;</code></pre></div>



<p>上記がエラーがあった場合の画面表示の切り替えです。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>&lt;div th:if=&quot;${param.logout}&quot;&gt;
    You have been logged out.
&lt;/div&gt;</code></pre></div>



<p>上記は同様にログアウト時の切り替えです。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>&lt;form th:action=&quot;@{/login}&quot; method=&quot;post&quot;&gt;
    &lt;div&gt;&lt;label&gt; User Name : &lt;input type=&quot;text&quot; name=&quot;username&quot;/&gt; &lt;/label&gt;&lt;/div&gt;
    &lt;div&gt;&lt;label&gt; Password: &lt;input type=&quot;password&quot; name=&quot;password&quot;/&gt; &lt;/label&gt;&lt;/div&gt;
    &lt;div&gt;&lt;input type=&quot;submit&quot; value=&quot;Sign In&quot;/&gt;&lt;/div&gt;
&lt;/form&gt;</code></pre></div>



<p>上記がログインフォームです。</p>



<p>inputタグのname属性「username」「password」を付与している項目が認証処理にPost通信される部分です。</p>



<p></p>



<h4 class="wp-block-heading"><span id="toc7">ログイン成功後の画面</span></h4>



<p>HTML「hello.html」ファイルを下記のように記載。こちらはログイン後の画面になります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-html" data-lang="HTML"><code>&lt;!DOCTYPE html&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xmlns:th=&quot;https://www.thymeleaf.org&quot;&gt;
    &lt;head&gt;
        &lt;title&gt;ログイン成功&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;h1&gt;ログイン成功
&lt;/h1&gt;
    &lt;/body&gt;
&lt;/html&gt;</code></pre></div>



<p>これで準備完了です。</p>



<h2 class="wp-block-heading"><span id="toc8">アプリの起動</span></h2>



<p>アプリ起動後「<a rel="noopener" target="_blank" href="http://localhost:8080/login" title="">http://localhost:8080/login</a>」をブラウザで開きます。</p>



<figure class="wp-block-image size-full is-resized"><img fetchpriority="high" decoding="async" width="305" height="207" src="https://tomoblog.net/wp-content/uploads/2025/01/スクリーンショット-2025-01-17-18.31.15.png" alt="" class="wp-image-10196" style="width:271px;height:auto" srcset="https://tomoblog.net/wp-content/uploads/2025/01/スクリーンショット-2025-01-17-18.31.15.png 305w, https://tomoblog.net/wp-content/uploads/2025/01/スクリーンショット-2025-01-17-18.31.15-300x204.png 300w" sizes="(max-width: 305px) 100vw, 305px" /></figure>



<p><span style="text-decoration: underline;">認証に失敗した場合</span></p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="346" height="190" src="https://tomoblog.net/wp-content/uploads/2025/01/スクリーンショット-2025-01-17-18.31.31.png" alt="" class="wp-image-10197" style="width:270px;height:auto" srcset="https://tomoblog.net/wp-content/uploads/2025/01/スクリーンショット-2025-01-17-18.31.31.png 346w, https://tomoblog.net/wp-content/uploads/2025/01/スクリーンショット-2025-01-17-18.31.31-300x165.png 300w" sizes="(max-width: 346px) 100vw, 346px" /></figure>



<p><span style="text-decoration: underline;">認証に成功した場合</span></p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="307" height="174" src="https://tomoblog.net/wp-content/uploads/2025/01/スクリーンショット-2025-01-17-18.31.43.png" alt="" class="wp-image-10198" style="width:270px;height:auto" srcset="https://tomoblog.net/wp-content/uploads/2025/01/スクリーンショット-2025-01-17-18.31.43.png 307w, https://tomoblog.net/wp-content/uploads/2025/01/スクリーンショット-2025-01-17-18.31.43-300x170.png 300w, https://tomoblog.net/wp-content/uploads/2025/01/スクリーンショット-2025-01-17-18.31.43-120x68.png 120w, https://tomoblog.net/wp-content/uploads/2025/01/スクリーンショット-2025-01-17-18.31.43-160x90.png 160w" sizes="(max-width: 307px) 100vw, 307px" /></figure>



<p></p>



<p>以上で今回の記事は終了です。今回は認証処理を簡略化していますが、次回はDBの値を参照するなどを試してみます。</p>The post <a href="https://tomoblog.net/programing/java/springboot-springsecurity/">【SpringBoot】SpringSecurityの使い方。</a> first appeared on <a href="https://tomoblog.net">ともぶろぐ</a>.]]></content:encoded>
					
					<wfw:commentRss>https://tomoblog.net/programing/java/springboot-springsecurity/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【データベーススペシャリスト】用語・SQLまとめ 〜 最低限押さえておく用語・SQL厳選 〜</title>
		<link>https://tomoblog.net/programing/database-specialist-wordlist/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=database-specialist-wordlist</link>
					<comments>https://tomoblog.net/programing/database-specialist-wordlist/#comments</comments>
		
		<dc:creator><![CDATA[tomo]]></dc:creator>
		<pubDate>Thu, 01 Aug 2024 02:29:01 +0000</pubDate>
				<category><![CDATA[1.Programing]]></category>
		<guid isPermaLink="false">https://tomoblog.net/?p=9729</guid>

					<description><![CDATA[<p>今回の記事は高度情報技術者試験のデータベーススペシャリストを合格するために試験に出題する用語・SQLをまとめた記事です。本記事では、試験範囲内の最低限押さえておく必要のある用語とSQLを全て網羅できていると思います。デー [&#8230;]</p>
The post <a href="https://tomoblog.net/programing/database-specialist-wordlist/">【データベーススペシャリスト】用語・SQLまとめ 〜 最低限押さえておく用語・SQL厳選 〜</a> first appeared on <a href="https://tomoblog.net">ともぶろぐ</a>.]]></description>
										<content:encoded><![CDATA[<p>今回の記事は高度情報技術者試験のデータベーススペシャリストを合格するために試験に出題する用語・SQLをまとめた記事です。本記事では、試験範囲内の最低限押さえておく必要のある用語とSQLを全て網羅できていると思います。データベーススペシャリストを受講する方は是非参考にしてみてください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">データベーススペシャリストについて知ろう</a></li><li><a href="#toc2" tabindex="0">データベーススペシャリスト 頻出用語</a><ol><li><a href="#toc3" tabindex="0">正規化系</a><ol><li><a href="#toc4" tabindex="0">正規化</a></li><li><a href="#toc5" tabindex="0">情報無損失分解</a></li><li><a href="#toc6" tabindex="0">関数従属性保存</a></li></ol></li><li><a href="#toc7" tabindex="0">関係従属性</a></li><li><a href="#toc8" tabindex="0">SQL関連</a><ol><li><a href="#toc9" tabindex="0">セミジョイン法</a></li><li><a href="#toc10" tabindex="0">ソートマージ法</a></li></ol></li><li><a href="#toc11" tabindex="0">計算系</a><ol><li><a href="#toc12" tabindex="0">直積</a></li><li><a href="#toc13" tabindex="0">べき等</a></li><li><a href="#toc14" tabindex="0">等結合演算</a></li></ol></li><li><a href="#toc15" tabindex="0">ストアドプロシージャ</a></li><li><a href="#toc16" tabindex="0">インデックス</a><ol><li><a href="#toc17" tabindex="0">B木インデックス</a></li><li><a href="#toc18" tabindex="0">ビットマップインデックス</a></li></ol></li><li><a href="#toc19" tabindex="0">スキーマ関連</a><ol><li><a href="#toc20" tabindex="0">ANSI/SPARC 3層スキーマ</a></li><li><a href="#toc21" tabindex="0">スタースキーマ</a></li><li><a href="#toc22" tabindex="0">データディクショナリ</a></li></ol></li><li><a href="#toc23" tabindex="0">ACID特性</a></li><li><a href="#toc24" tabindex="0">弱実体/強実体</a></li><li><a href="#toc25" tabindex="0">トランザクション関連</a><ol><li><a href="#toc26" tabindex="0">2層コミット</a></li><li><a href="#toc27" tabindex="0">チェックポイント処理</a></li><li><a href="#toc28" tabindex="0">待ちグラフ</a></li><li><a href="#toc29" tabindex="0">WAL(Write Ahead Log)プロトコル</a></li><li><a href="#toc30" tabindex="0">トランザクションの隔離性水準</a></li><li><a href="#toc31" tabindex="0">直列化可能性</a></li></ol></li><li><a href="#toc32" tabindex="0">NoSQL</a></li><li><a href="#toc33" tabindex="0">候補キー</a></li><li><a href="#toc34" tabindex="0">体現ビュー</a></li><li><a href="#toc35" tabindex="0">表の分解</a></li></ol></li><li><a href="#toc36" tabindex="0">データベーススペシャリスト 頻出SQL</a><ol><li><a href="#toc37" tabindex="0">CREATE文</a><ol><li><a href="#toc38" tabindex="0">テーブル作成</a></li><li><a href="#toc39" tabindex="0">テーブル定義のデータ型一覧</a></li><li><a href="#toc40" tabindex="0">制約</a></li><li><a href="#toc41" tabindex="0">表明（CREATE ASSERTION）</a></li><li><a href="#toc42" tabindex="0">定義域（CREATE DOMAIN）</a></li><li><a href="#toc43" tabindex="0">制約名の付与（CONSTRAINT）</a></li><li><a href="#toc44" tabindex="0">VIEWの作成（CREATE VIEW）</a></li><li><a href="#toc45" tabindex="0">ROLEの作成（CREATE ROLE）</a></li></ol></li><li><a href="#toc46" tabindex="0">GRANT</a><ol><li><a href="#toc47" tabindex="0">grant文</a></li><li><a href="#toc48" tabindex="0">WITH GRANT OPTION</a></li><li><a href="#toc49" tabindex="0">REVOKE</a></li></ol></li><li><a href="#toc50" tabindex="0">DROP</a></li><li><a href="#toc51" tabindex="0">SELECT文</a><ol><li><a href="#toc52" tabindex="0">計算式</a></li><li><a href="#toc53" tabindex="0">列連結</a></li><li><a href="#toc54" tabindex="0">テーブル名の指定</a></li><li><a href="#toc55" tabindex="0">重複を除く</a></li><li><a href="#toc56" tabindex="0">NULL処理</a></li><li><a href="#toc57" tabindex="0">条件分岐</a></li><li><a href="#toc58" tabindex="0">where句</a><ol><li><a href="#toc59" tabindex="0">基本の条件句</a></li><li><a href="#toc60" tabindex="0">BETWEEN句</a></li><li><a href="#toc61" tabindex="0">IN句</a></li></ol></li><li><a href="#toc62" tabindex="0">ORDER BY句</a></li><li><a href="#toc63" tabindex="0">GROUP BY句</a></li><li><a href="#toc64" tabindex="0">HAVING句</a></li><li><a href="#toc65" tabindex="0">集約関数</a><ol><li><a href="#toc66" tabindex="0">COUNT()</a></li><li><a href="#toc67" tabindex="0">MAX()</a></li><li><a href="#toc68" tabindex="0">AVG()</a></li><li><a href="#toc69" tabindex="0">SUM()</a></li></ol></li><li><a href="#toc70" tabindex="0">テーブル結合</a><ol><li><a href="#toc71" tabindex="0">内部結合（INNER JOIN）</a></li><li><a href="#toc72" tabindex="0">左外部結合（LEFT JOIN）</a></li><li><a href="#toc73" tabindex="0">右外部結合（RIGHT JOIN）</a></li><li><a href="#toc74" tabindex="0">全外部結合（FULL JOIN）</a></li><li><a href="#toc75" tabindex="0">その他の結合</a></li></ol></li><li><a href="#toc76" tabindex="0">データの四則演算</a><ol><li><a href="#toc77" tabindex="0">UNION句（和）</a></li><li><a href="#toc78" tabindex="0">EXCEPT（差）</a></li><li><a href="#toc79" tabindex="0">INTERSECT（積）</a></li><li><a href="#toc80" tabindex="0">DIVISION（商）</a></li></ol></li><li><a href="#toc81" tabindex="0">exists句</a></li><li><a href="#toc82" tabindex="0">副問い合わせ（サブクエリ）</a></li><li><a href="#toc83" tabindex="0">WITH句</a></li></ol></li><li><a href="#toc84" tabindex="0">INSERT文</a></li><li><a href="#toc85" tabindex="0">UPDATE文</a></li><li><a href="#toc86" tabindex="0">DELETE文</a></li><li><a href="#toc87" tabindex="0">カーソル操作</a><ol><li><a href="#toc88" tabindex="0">プログラムの中のSQL文</a></li><li><a href="#toc89" tabindex="0">カーソルの定義</a></li><li><a href="#toc90" tabindex="0">カーソルの使用</a></li><li><a href="#toc91" tabindex="0">セーブポイント</a></li></ol></li></ol></li><li><a href="#toc92" tabindex="0">その他</a><ol><li><a href="#toc93" tabindex="0">システムの透過性</a></li><li><a href="#toc94" tabindex="0">OLAP</a></li><li><a href="#toc95" tabindex="0">割り込み</a></li><li><a href="#toc96" tabindex="0">リバースエンジニアリング</a></li><li><a href="#toc97" tabindex="0">ソースコード変更波及解析</a></li><li><a href="#toc98" tabindex="0">フェールソフト</a></li><li><a href="#toc99" tabindex="0">リスク</a><ol><li><a href="#toc100" tabindex="0">リスク分析</a></li><li><a href="#toc101" tabindex="0">リスク評価額</a></li><li><a href="#toc102" tabindex="0">投機的リスク</a></li><li><a href="#toc103" tabindex="0">純粋リスク</a></li></ol></li><li><a href="#toc104" tabindex="0">RAID構成</a></li><li><a href="#toc105" tabindex="0">ホットスタンバイ構成</a></li><li><a href="#toc106" tabindex="0">共通フレーム</a></li><li><a href="#toc107" tabindex="0">ソフトウェア開発手法</a></li><li><a href="#toc108" tabindex="0">ファイバチャネル</a></li><li><a href="#toc109" tabindex="0">レプリケーション</a></li><li><a href="#toc110" tabindex="0">SAN</a></li><li><a href="#toc111" tabindex="0">IPsecのトランスポートモード</a></li><li><a href="#toc112" tabindex="0">メモリサイクルの計算</a></li><li><a href="#toc113" tabindex="0">情報セキュリティ基本方針</a></li><li><a href="#toc114" tabindex="0">シンプロビジョニング</a></li><li><a href="#toc115" tabindex="0">コンソリデーション</a></li><li><a href="#toc116" tabindex="0">SOA</a></li><li><a href="#toc117" tabindex="0">解析ツール</a></li><li><a href="#toc118" tabindex="0">障害発生時の取り決め</a><ol><li><a href="#toc119" tabindex="0">RPO</a></li><li><a href="#toc120" tabindex="0">RTO</a></li></ol></li><li><a href="#toc121" tabindex="0">ディスクストライピング</a></li><li><a href="#toc122" tabindex="0">ディスクミラーリング</a></li><li><a href="#toc123" tabindex="0">シェアードエブリシング</a></li><li><a href="#toc124" tabindex="0">シェアードナッシング</a></li><li><a href="#toc125" tabindex="0">AES</a></li><li><a href="#toc126" tabindex="0">ブローカー</a></li><li><a href="#toc127" tabindex="0">共通鍵・秘密鍵の関係</a></li><li><a href="#toc128" tabindex="0">ECCメモリ</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">データベーススペシャリストについて知ろう</span></h2>



<p>データベーススペシャリストに限らず、高度情報技術者試験は4部構成です。</p>



<ul class="wp-block-list">
<li>午前1：応用情報の午前試験と同じ。免除あり。</li>



<li>午前2：SQLとSQL関連用語をメインとする試験</li>



<li>午後1：DB関連の読解問題</li>



<li>午後2：DB関連の読解問題</li>
</ul>



<p>それぞれの対策としては下記です。</p>



<ul class="wp-block-list">
<li>午前1：応用情報過去問でひたすら対策</li>



<li>午前2：本記事の用語・SQLを全て網羅→高度情報過去問をひたすらこなす</li>



<li>午後1：本記事の用語・SQLを全て網羅→高度情報過去問で読解方法を学び問題形式になれる＋時間内に解答できるようになる</li>



<li>午後2：本記事の用語・SQLを全て網羅→高度情報過去問で読解方法を学び問題形式になれる＋時間内に解答できるようになる</li>
</ul>



<p></p>



<h2 class="wp-block-heading"><span id="toc2">データベーススペシャリスト 頻出用語</span></h2>



<h3 class="wp-block-heading"><span id="toc3">正規化系</span></h3>



<h4 class="wp-block-heading"><span id="toc4">正規化</span></h4>



<ul class="wp-block-list">
<li>第1正規化：繰り返し項目の排除</li>



<li>第2正規化：主キーで決まる項目の排除</li>



<li>第3正規化：主キー以外で決まる項目の排除</li>
</ul>



<h4 class="wp-block-heading"><span id="toc5">情報無損失分解</span></h4>



<p>分解された部分同士の自然結合によって元の関係を過不足なく復元できる性質。第3正規形までは保てる。</p>



<h4 class="wp-block-heading"><span id="toc6">関数従属性保存</span></h4>



<p>分解後の部分が元の関係に存在した関数従属性を保っている性質。第3正規形までは保てる。</p>



<h3 class="wp-block-heading"><span id="toc7">関係従属性</span></h3>



<p>関数従属性の推論則は下記のようになっている。</p>



<ul class="wp-block-list">
<li>反射率：BがAの部分集合であればA→Bが成立する</li>



<li>増加率；A→Bであれば、同じCを加えて{A,C}⇨{B,C}が成立</li>



<li>推移率：A→BかつB→Cであれば、A→Cが成立</li>



<li>合併率：A→BかつA→Cであれば、A→{B,C}が成立</li>



<li>分解率：A→{B,C}であれば、A→BおよびA→Cが成立</li>
</ul>



<h3 class="wp-block-heading"><span id="toc8">SQL関連</span></h3>



<h4 class="wp-block-heading"><span id="toc9">セミジョイン法</span></h4>



<p>分散型のDBに保存されているデータの結合時のデータ転送量を削減する方法。2つの表の1方から必要な項目をもう片方の表に送り、結合をする。</p>



<h4 class="wp-block-heading"><span id="toc10">ソートマージ法</span></h4>



<p>結合演算のコストを最適化する手法。（不必要な行同士の結合を防ぎます。）</p>



<h3 class="wp-block-heading"><span id="toc11">計算系</span></h3>



<h4 class="wp-block-heading"><span id="toc12">直積</span></h4>



<p>直積はデータ操作で、2つの関係(表)に含まれる要素のすべての組合せから成る表のことです。</p>



<h4 class="wp-block-heading"><span id="toc13">べき等</span></h4>



<p>複数回同一操作をしても、一回しか実行しなくても結果が同じになる（selectなど）</p>



<h4 class="wp-block-heading"><span id="toc14">等結合演算</span></h4>



<p>直積と選択で実現できる。</p>



<h3 class="wp-block-heading" id="rtoc-37"><span id="toc15">ストアドプロシージャ</span></h3>



<p>一連の処理手順をプログラムとしてまとめて実行できる処理モジュールをDBMS上に用意したもの。</p>



<p>CHAR(10)は常に10バイトでそれ以下のバイトの場合はバイト数がその数に減る。そのバイト数は固定。VARCHARは可変長。補足：日本語は2バイト。</p>



<h3 class="wp-block-heading"><span id="toc16">インデックス</span></h3>



<h4 class="wp-block-heading"><span id="toc17">B木インデックス</span></h4>



<p>データ量が増加してもパフォーマンス低下が少ない。どのキーに対しても、ランダム検索や範囲検索（between）、挿入・更新・削除を効率よく行うことができる。データの分布やに隔たりがある場合や、NULL値および否定を含む検索条件では効果を発揮できない。</p>



<h4 class="wp-block-heading"><span id="toc18">ビットマップインデックス</span></h4>



<p>キーがとり得る値の種類が数個程度と少ない場合に適したインデックス。NULL値の検索ができ、WHEREやAND/OR、NOTなどの否定検索でも使用できる。</p>



<h3 class="wp-block-heading"><span id="toc19">スキーマ関連</span></h3>



<h4 class="wp-block-heading"><span id="toc20">ANSI/SPARC 3層スキーマ</span></h4>



<p>概念・外部・内部スキーマの三つのグループにわけてデータ定義。物理的・理論的データの独立性を達成するためのアーキテクチャ。</p>



<ul class="wp-block-list">
<li>概念スキーマ<br>データベース化対象業務とデータの内容を理論的なデータモデルとして表現する</li>



<li>外部スキーマ<br>概念で定義されたデータモデル上に利用者ごとの目的に応じた見方を表現、リレーショナルモデルのビューやネットワークモデルのサブスキーマ。個々のプログラムまたはユーザの立場から見たデータベースの記述。</li>



<li>内部スキーマ<br>概念スキーマで定義されたデータモデルを記憶装置上にどのような形式で格納するかを表現。ファイル編成やインデックスの設定など。概念スキーマをコンピュータ上に具体的に実現させるための記述。</li>
</ul>



<h4 class="wp-block-heading"><span id="toc21">スタースキーマ</span></h4>



<p>データウェアハウスの実装で用いられる。ファクトテーブルとディメンションテーブルで構成。中心にファクトテーブル。ディメンションテーブルは複数の条件とその条件の組み合わせに対する処理や行動の関係を一覧にした表で、スター型構造を持つ。<br>ファクトテーブルは売上や注文など時間を追うごとに発生するイベントの実測値である。</p>



<h4 class="wp-block-heading"><span id="toc22">データディクショナリ</span></h4>



<p>データディクショナリ(DD)は、データベースのメタデータやデータ定義情報を効率よく管理する情報の保管庫。他のデータベースと同じく表とビューで構成されていて次のような情報が格納されています。（概念スキーマ、外部スキーマ、内部スキーマとそれらの変換定義情報など）</p>



<h3 class="wp-block-heading"><span id="toc23">ACID特性</span></h3>



<p>データベースのトランザクション処理を行う上で必要不可欠とされる4つの性質(Atomicity・Consistency・Isolation・Durability)の頭文字を並べた言葉。（原子性、一貫性、独立性、永続性）</p>



<h3 class="wp-block-heading"><span id="toc24">弱実体/強実体</span></h3>



<p>独立して存在できるエンティティは強実体。<br>一方のエンティティが消えた場合、存在できなくなるエンティティを弱実体。</p>



<h3 class="wp-block-heading"><span id="toc25">トランザクション関連</span></h3>



<h4 class="wp-block-heading"><span id="toc26">2層コミット</span></h4>



<p>前半部（ロック獲得）の後、後半部（ロック解除）の流れをとる。<br>ロック獲得命令を全て実行した後にだけ、ロック解除命令を実行できる。</p>



<h4 class="wp-block-heading"><span id="toc27">チェックポイント処理</span></h4>



<p>実行中のトランザクションを一時停止→メモリバッファの内容をディスクに書き出す→チェックポイントレコードを書き出す⇨中断したトランザクションの再開の流れ。</p>



<h4 class="wp-block-heading"><span id="toc28">待ちグラフ</span></h4>



<p>実行中のトランザクションを各ノード、データのアンロック待ちの様子を矢印で表現したもの。デッドロックの検出に使用。</p>



<h4 class="wp-block-heading"><span id="toc29">WAL(Write Ahead Log)プロトコル</span></h4>



<p>トランザクションがログを安定記憶に書き出すタイミングで、実際の操作に専攻してログの書き出しを求めるもの。更新ログ書き出し→DB更新→commit。</p>



<h4 class="wp-block-heading"><span id="toc30">トランザクションの隔離性水準</span></h4>



<ul class="wp-block-list">
<li>ダーティーリード<br>他のトランザクションが更新したコミット前の値（ダーティデータ）を読み、その後に更新処理を行なったトランザクションがロールバックされると存在しない値を読み込んでしまうこと。</li>



<li>ファントムリード<br>同じトランザクションで複数回の読み込みを行なった時、前回は存在しなかった行が現れる以上。2回の読み込みの間に別トランザクションがテーブルに行を挿入することで発生。</li>



<li>ノンリピータブルリード<br>同じトランザクション内で再読み込みによって値が変わってしまうこと</li>



<li>ロストアップデート<br>読み書きを行うトランザクションが複数あるとき、一方のトランザクションの更新処理がなかったことになる異常。</li>
</ul>



<p>DBの設定によって上記を強要するかどうかを判断する。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td></td><td>ダーティリード</td><td>ノンリピータブルリ-ド</td><td>ファントムリード</td></tr><tr><td>READ UNCOMMITED</td><td>許す</td><td>許す</td><td>許す</td></tr><tr><td>READ COMMITED</td><td>許さない</td><td>許す</td><td>許す</td></tr><tr><td>REPEATABLE READ</td><td>許さない</td><td>許さない</td><td>許す</td></tr><tr><td>SERIALIZEBLE</td><td>許さない</td><td>許さない</td><td>許さない</td></tr></tbody></table></figure>



<h4 class="wp-block-heading"><span id="toc31">直列化可能性</span></h4>



<p>複数トランザクションを実行しても、1つづつ順次実行した時と結果が同じになること。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc32">NoSQL</span></h3>



<p>Not only SQLはデータへのアクセス方法をSQLに限定しないデータベース管理システムの総称。キーバリュー型でのデータ格納、カラム指向、ドキュメント指向（XMLやJSONでデータ格納）。NoSQLは結果整合性という考え方に基づいてデータ処理を行う。</p>



<p>結果整合性とは、即座にデータが反映されることを前提とせず、結果的に一貫性が保証されていればそれで良いという考え方。（NoSQLではロックによる整合性担保はないです。）</p>



<h3 class="wp-block-heading"><span id="toc33">候補キー</span></h3>



<p>ある関係の1つの組みを一意に決定できる属性。または、属性の組み合わせで極小のもの。極小とは一意に決定するための必要な属性以外が含まれていない状態のことです。（関係内に候補キーが1つしかない場合は、それが主キー、候補キーが複数ある場合、その中から一つが主キーで、残りは代替キーとなります。）</p>



<h3 class="wp-block-heading"><span id="toc34">体現ビュー</span></h3>



<p>実表のように実際の値をもち、データベースに格納されるビューのこと。本来のビューは実値を持たない仮想的な表で、メタデータとして、データディクショナリに格納されているだけです、ビューに対する更新は、元の表に対しての更新に変換され実行されます。（ビュー合成と言います。）体現ビューは、この変換処理の負荷を小さくするために考案された手法となっています。</p>



<h3 class="wp-block-heading"><span id="toc35">表の分解</span></h3>



<p>2つの表が多対多の場合、中間表に二つの主キーの複合機主キーを持つ中間表を作る。<br>1対1の関係の場合はどちらかの表に主キーを外部キーとして登録。<br>1対多 多の方に1の方の主キーを登録。</p>



<p></p>



<h2 class="wp-block-heading"><span id="toc36">データベーススペシャリスト 頻出SQL</span></h2>



<h3 class="wp-block-heading"><span id="toc37">CREATE文</span></h3>



<h4 class="wp-block-heading"><span id="toc38">テーブル作成</span></h4>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>create table テーブル名 (id {データ型}, name データ型);</code></pre></div>



<h4 class="wp-block-heading"><span id="toc39">テーブル定義のデータ型一覧</span></h4>



<figure class="wp-block-table"><table><tbody><tr><td>CHAR(n)</td><td>n文字半角固定長文字列(1〜255)。n字未満の場合半角空白で埋めてnバイト数領域に格納。</td></tr><tr><td>NCHAR(n)</td><td>n文字全角固定長文字列(1〜127)。n字未満の場合同上処理でn×2バイト数領域に格納。</td></tr><tr><td>VARCHAR(n)</td><td>n文字半角可変長文字列(1〜8000)。値の文字数のバイト領域に格納。4バイト制御情報付与。</td></tr><tr><td>NCHARVARYING(n)</td><td>n文字全角可変長文字列(1〜4000)。値の文字数×2のバイト領域に格納。4バイト制御情報付与。</td></tr><tr><td>SMALLINT</td><td>-32768〜32767範囲内の整数。2バイトの領域に格納。</td></tr><tr><td>INTEGER</td><td>-2147483648〜2147483648範囲内の整数。4バイトの領域に格納。</td></tr><tr><td>DECIMAL(m,n)</td><td>m(1〜31)、n(1〜m)までの範囲でm桁の整数部とn桁の小数点部を格納可能。m÷2+1の小数部を切り捨てたバイトの領域に格納。</td></tr><tr><td>DATE</td><td>0001-01-01〜9999-12-31の範囲内の日付。4バイトの領域に格納。</td></tr><tr><td>TIME</td><td>00:00:00〜23:59:59の範囲内の時刻。3バイトの領域に格納。</td></tr><tr><td>TIMESTAMP</td><td>0001-01-01 00:00:00.000000〜9999-12-31 23:59:59:999999の範囲内の時刻印。10バイトの領域に格納。</td></tr><tr><td>BLOB</td><td>大量のバイナリデータを格納できる。</td></tr></tbody></table></figure>



<h4 class="wp-block-heading"><span id="toc40">制約</span></h4>



<figure class="wp-block-table"><table><tbody><tr><td>default制約</td><td>値を指定しない場合、設定した値を設定してくれる。</td></tr><tr><td>非NULL制約</td><td>NULLを入力できなくする制約。</td></tr><tr><td>UNIQUE制約</td><td>重複値を該当の列に指定できない制約。NULLはOK。テーブルに複数設定可能。</td></tr><tr><td>主キー制約</td><td>重複値を該当の列に指定できない制約。NULLはダメ。テーブルに1つのみ設定可能。</td></tr><tr><td>検査制約</td><td>指定した列の値は、指定した条件を満たすものみとする制約。</td></tr><tr><td>参照制約</td><td>参照元テーブルと参照先テーブルのデータを関連付し、操作を行う制約。<br>・NO ACTION（オプション未設定ではこの設定になる）<br>　参照元にデータあり→参照先でデータの削除/更新OK。<br>・CASCADE<br>　参照元にデータあり→参照先でデータ削除/更新OK。参照元データを連動削除。<br>・SET NULL<br>　参照元にデータあり→参照先でデータ削除/更新OK。参照元データをNULLへ。</td></tr></tbody></table></figure>



<p>SQLでは下記のように設定。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>create table テーブル名 
   (id int primary key, -- 主キー
    name varchar(10) default &#39;名無し&#39; -- デフォルト制約ー
    birthDate Date not null -- 非NULL制約ー
    tel varchar(12) unique -- 主キー
    age int check(age&gt;19) -- 検査制約
    companyCd varchar(4) 
    foreign key (companyCd) -- 外部参照制約
    references 会社テーブル(companyCd) -- 会社テーブルの会社コードは参照元
    on delete set null -- SET NULLオプション設定（cascade、no actionも同様）
    );</code></pre></div>



<h4 class="wp-block-heading"><span id="toc41">表明（CREATE ASSERTION）</span></h4>



<p>一つ、または複数のテーブルの列に対して制約を定義し、テーブル間にまたがる制約や、SELECT文を使った複雑な制約を定義できる。下記はid_checkという制約を作成。チェックの中身はendFlagが0のデータが存在しているか。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>create assertion id_check check(not exist (select * from sample where endFlag = 0);</code></pre></div>



<h4 class="wp-block-heading"><span id="toc42">定義域（CREATE DOMAIN）</span></h4>



<p>新しいデータ型を定義できる。下記はsampleというデータ型を定義。sampleはinteger型のデータで5より大きく10より小さい値を取ることができる。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>create domain sample as int check(id &gt; 5) and (id &lt; 10);</code></pre></div>



<h4 class="wp-block-heading"><span id="toc43">制約名の付与（CONSTRAINT）</span></h4>



<p>例えば主キー制約に名前をつけたい場合は、下記のように設定する。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>create table sample (id int primary key ...
↓
create table sample (id int constraint test_pk primary key ...</code></pre></div>



<p>test_pkという名前を設定した主キー制約のみを削除したい場合などはalter tableの条件で絞って対応できる。</p>



<h4 class="wp-block-heading"><span id="toc44">VIEWの作成（CREATE VIEW）</span></h4>



<p>各テーブルからの取得結果などを表として扱える仮想テーブル。</p>



<p>新しくテーブルを定義するための容量の削減、生合成確保、実テーブルのデータ誤操作や喪失リスクの低減、セキュリティ向上などの理由で利用可能。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>-- サンプルテーブルのidとnameのみの仮想テーブルを指定したビュー名で作成する。
create view {ビュー名} as select id name from sample</code></pre></div>



<p>ビューは下記条件を満たす場合、更新可能。</p>



<ol class="wp-block-list">
<li>元のテーブルが特定できる</li>



<li>集約関数（AVGやMAXなど）を利用していない</li>



<li>GROUP BY句を利用していない</li>



<li>DISTINCTを利用していない</li>



<li>権限がある</li>



<li>NULLが適切に処理されている</li>



<li>WITH CHECK OPTIONへの対応がされている</li>
</ol>



<p>WITH CHECK OPTIONは、viewにデータをinsertしようとした際などに、このオプションで設定したwhere句などの条件に対応しているかをチェックできるもの。</p>



<p>ビューを作成するにあたって、ビュー作成元のテーブルがSELECT権限が必要。また、ビューを使用するユーザはビューの所有者の場合は、SELECTは可能で、その他データ操作に関しては元テーブルの権限に従う。所有者以外に関してはビューに関する権限に従う。</p>



<p>ビューの元表が削除された場合は、ビューも強制的に削除される。また、付随する権限も全て削除される。</p>



<p>また、as 〇〇で指定したカラムは元のカラム名ではなく、〇〇で参照する必要がある。</p>



<h4 class="wp-block-heading"><span id="toc45">ROLEの作成（CREATE ROLE）</span></h4>



<p>ロールとは権限のことで、ユーザに対して付与する権限をまとめてロールとして管理する。</p>



<p>流れとしてはロールの作成→ロールに権限を付与する→ロールをユーザに付与。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>-- ロール作成
create role {ロール名}
-- ロールに権限付与
grant select on {秘密ビュー} to {ロール名}
-- ユーザにロール付与
grant {ロール名} to {ユーザ}</code></pre></div>



<p>※grant文の説明は後述。</p>



<h3 class="wp-block-heading"><span id="toc46">GRANT</span></h3>



<h4 class="wp-block-heading"><span id="toc47">grant文</span></h4>



<p>create roleの箇所で出てきましたがGRANT文は権限を付与するSQL。下記が基本構文。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>grant {権限} on {テーブル名またはビュー名} to {ユーザ名};</code></pre></div>



<p>権限にはSELECT・UPDATE・DELETE・INSERT、左記を全て含む全権限はALL PRIVILEGESがある。</p>



<h4 class="wp-block-heading"><span id="toc48">WITH GRANT OPTION</span></h4>



<p>末尾に付けることができ、与えられた権限を他のユーザに付与できる。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>grant {権限} on {テーブル名またはビュー名} to {ユーザ名} with grant option; </code></pre></div>



<h4 class="wp-block-heading"><span id="toc49">REVOKE</span></h4>



<p>GRANTで付与した権限を取り消す。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>revoke {権限} on {テーブル名またはビュー名} from {ユーザ名};</code></pre></div>



<h3 class="wp-block-heading"><span id="toc50">DROP</span></h3>



<p>テーブル・ビュー・ロールの削除などを実施するSQL。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>drop tabel {テーブル名}
drop view {ビュー名}
drop role {ロール名}</code></pre></div>



<h3 class="wp-block-heading"><span id="toc51">SELECT文</span></h3>



<p>データを取得。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select id from {テーブル名};</code></pre></div>



<h4 class="wp-block-heading"><span id="toc52">計算式</span></h4>



<p>四則演算可能。（＋,-,*,/）</p>



<h4 class="wp-block-heading"><span id="toc53">列連結</span></h4>



<p>文字列同士の連結が可能。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select &#39;名前は&#39;||name from {テーブル名};</code></pre></div>



<h4 class="wp-block-heading"><span id="toc54">テーブル名の指定</span></h4>



<p>テーブル名に別名を付けられる。（ASは省略可能）</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select id from {テーブル名} as Table1;</code></pre></div>



<h4 class="wp-block-heading"><span id="toc55">重複を除く</span></h4>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select distinct name from {テーブル名};</code></pre></div>



<h4 class="wp-block-heading"><span id="toc56">NULL処理</span></h4>



<p>coalesce(id,0,&#8230;)の形で記載でき、左からNULLでない最初の引数を返します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select coalesce(id,0) from {テーブル名};</code></pre></div>



<h4 class="wp-block-heading"><span id="toc57">条件分岐</span></h4>



<p>caseを利用して条件分岐を作れます。下記は20歳未満、21〜60歳、61歳以上で金額を分岐するSQL。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select 
    case when age &lt; 20 then 100
    case when age &lt; 60 then 500
    else 50 end
from {テーブル名};</code></pre></div>



<h4 class="wp-block-heading"><span id="toc58">where句</span></h4>



<p>条件を指定してデータを絞る句。</p>



<h5 class="wp-block-heading"><span id="toc59">基本の条件句</span></h5>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>&gt;、=、＜などの範囲を指定する記号。
is null、is not nullのnullを判断する記号。
部分一致ができるlike。（％を利用）
not 〇〇は否定を表す。</code></pre></div>



<h5 class="wp-block-heading"><span id="toc60">BETWEEN句</span></h5>



<p>範囲内のものを検索。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>where date between &#39;2024-01-01&#39; and &#39;2024-12-31&#39;;</code></pre></div>



<h5 class="wp-block-heading"><span id="toc61">IN句</span></h5>



<p>inで指定するもの全てを取得する。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>where id in (1,2,4);</code></pre></div>



<h4 class="wp-block-heading"><span id="toc62">ORDER BY句</span></h4>



<p>データの並び順を指定。（ASC：昇順、DESC：降順）</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>order by {並び順を指定するカラム} ASC</code></pre></div>



<h4 class="wp-block-heading"><span id="toc63">GROUP BY句</span></h4>



<p>データをグループごとにまとめて取得する。group by句でselectできる項目は、group by句の後ろに記載する項目と計算系（count,avg,maxなど）で出力する結果のみです。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>（データ例）
テーブル名：sample
class  point
a    |  10
a    |  20
b    |  30
a    |  30
b    |  30

select class,avg(point) from sample group by class,point;
------
a 20
b 30
------</code></pre></div>



<h4 class="wp-block-heading"><span id="toc64">HAVING句</span></h4>



<p>group by句に条件句をつける場合に使用。group by句でグループ化したデータにはwhere句は使えない。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>クラス  点数
a      10
a      20
b      30
a      30
b      30

select クラス,avg(点数) from 上のテーブル group by クラス having クラス = a
------
a 20
------</code></pre></div>



<p>whereを使えないのはあくまでもgroup by句の後の話で、上記のような場合は、where句が使用できます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>select id,sum(cost) from Sample1 where id &gt; 3 group by id;</code></pre></div>



<p>上記の場合だと、whereが優先して処理される。</p>



<h4 class="wp-block-heading"><span id="toc65">集約関数</span></h4>



<h5 class="wp-block-heading"><span id="toc66">COUNT()</span></h5>



<p>データ件数を取得する。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select count(*) from テーブル名;
→{テーブルのデータ件数}</code></pre></div>



<h5 class="wp-block-heading"><span id="toc67">MAX()</span></h5>



<p>項目の最大値を取得。（最小値取得はmin関数）</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select max(id) from テーブル名;
→idの最大値</code></pre></div>



<h5 class="wp-block-heading"><span id="toc68">AVG()</span></h5>



<p>項目の平均値を取得。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select avg(point) from テーブル名;
→点数の平均値</code></pre></div>



<h5 class="wp-block-heading"><span id="toc69">SUM()</span></h5>



<p>項目の合計値を取得。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select sum(point) from テーブル名;
→点数の合計値</code></pre></div>



<h4 class="wp-block-heading"><span id="toc70">テーブル結合</span></h4>



<p>複数のテーブルを組み合わせて結果を取得する。</p>



<h5 class="wp-block-heading"><span id="toc71">内部結合（INNER JOIN）</span></h5>



<p>内部結合では各テーブルに両方存在するものが出力される。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>テーブル1  テーブル2
id cd     cd   item
1   1      1   ball
2   2      2   pen
3   1      3   apple
4   4

select id,name from {テーブル1} inner join {テーブル2} on テーブル1.cd = テーブル2.cd;
↓
1,ball
2,pen
3,ball</code></pre></div>



<p>テーブル間のカラム名が同じものの場合はusingを使用できる。</p>



<h5 class="wp-block-heading"><span id="toc72">左外部結合（LEFT JOIN）</span></h5>



<p>テーブル1にあるデータは全て表示される。テーブル2にないデータの場合はその項目はnullになる。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>テーブル1  テーブル2
id cd     cd   item
1   1      1   ball
2   2      2   pen
3   1      3   apple
4   4

select id,name from {テーブル1} inner join {テーブル2} on テーブル1.cd = テーブル2.cd;
↓
1,ball
2,pen
3,ball
4,null</code></pre></div>



<h5 class="wp-block-heading"><span id="toc73">右外部結合（RIGHT JOIN）</span></h5>



<p>テーブル2にあるデータは全て表示される。テーブル1にないデータの場合はその項目はnullになる。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>テーブル1  テーブル2
id cd     cd   item
1   1      1   ball
2   2      2   pen
3   1      3   apple
4   4

select id,name from {テーブル1} inner join {テーブル2} on テーブル1.cd = テーブル2.cd;
↓
1   ,ball
3   ,ball
2   ,pen
null,apple</code></pre></div>



<h5 class="wp-block-heading"><span id="toc74">全外部結合（FULL JOIN）</span></h5>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>テーブル1  テーブル2
id cd     cd   item
1   1      1   ball
2   2      2   pen
3   1      3   apple
4   4

select id,name from {テーブル1} inner join {テーブル2} on テーブル1.cd = テーブル2.cd;
↓
1   ,ball
2   ,pen
3   ,ball
4   ,null
null,apple</code></pre></div>



<h5 class="wp-block-heading"><span id="toc75">その他の結合</span></h5>



<p>自己テーブルとの結合も可能。（自己結合）</p>



<h4 class="wp-block-heading"><span id="toc76">データの四則演算</span></h4>



<p>データの行を四則計算するSQL。</p>



<h5 class="wp-block-heading"><span id="toc77">UNION句（和）</span></h5>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>テーブル1 テーブル2
id       id
1        2
2        3

select id from {テーブル1}
union
select id from {テーブル2};
↓
1
2
3

union allを使用すると重複も含めて出力</code></pre></div>



<h5 class="wp-block-heading"><span id="toc78">EXCEPT（差）</span></h5>



<p>データが同じものを引く。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>テーブル1 テーブル2
id       id
1        2
2        3

select id from {テーブル1}
except
select id from {テーブル2};
↓
1
3

except allを使用すると重複も含めて出力</code></pre></div>



<h5 class="wp-block-heading"><span id="toc79">INTERSECT（積）</span></h5>



<p>どちらにも含まれている値が出力される。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>テーブル1 テーブル2
id       id
1        2
2        3

select id from {テーブル1}
intersect
select id from {テーブル2};
↓
2

intersect allを使用すると重複も含めて出力</code></pre></div>



<p>直積はデータの全ての表示パターンを表示すること。</p>



<h5 class="wp-block-heading"><span id="toc80">DIVISION（商）</span></h5>



<p>割り算を実施し、割れたところの行を出力。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>テーブル1 テーブル2
id name       id
1  aaa         1
2  aaa         2

select id from {テーブル1}
division
select id from {テーブル2};
↓
aaa

division allを使用すると重複も含めて出力</code></pre></div>



<h4 class="wp-block-heading"><span id="toc81">exists句</span></h4>



<p>こちらもほぼ頻出。条件の中にデータが存在しているかの条件句です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select count(*) from テーブル where exists 点数 &lt; 30 -- 30以下の点数のデータ抽出される</code></pre></div>



<h4 class="wp-block-heading"><span id="toc82">副問い合わせ（サブクエリ）</span></h4>



<p>こちらも必ず出ます。かっこで囲ってSELECT文の結果を使います。みた方が早いです。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>-- 通常のselect文
select id, name from テーブル where id in (0,1,2) ;
-- サブクエリを含むselect文（上記とやっていることは同じだがin句の中身をselect文で取得している）
select id, name from テーブル where id in (select id from テーブル where id &lt; 3); 

-- 通常のinsert文
insert into テーブル (id, name) values (1, &#39;aaa&#39;);
-- サブクエリを使用したinsert
insert into テーブル (id, name) values (select id, name from 取得元テーブル where id &lt; 100);</code></pre></div>



<h4 class="wp-block-heading"><span id="toc83">WITH句</span></h4>



<p>SQL実行中にのみ利用できるテーブル。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>with {一時テーブル名} as select id from {テーブル}

select * from {一時テーブル名};
-- 通常のテーブルのように扱えます。</code></pre></div>



<h3 class="wp-block-heading"><span id="toc84">INSERT文</span></h3>



<p>データを追加。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>insert into {テーブル名};</code></pre></div>



<h3 class="wp-block-heading"><span id="toc85">UPDATE文</span></h3>



<p>データを更新。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>update テーブル名 set {更新するカラム} = {更新データ};</code></pre></div>



<h3 class="wp-block-heading"><span id="toc86">DELETE文</span></h3>



<p>データを削除。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>delete from {テーブル名};</code></pre></div>



<h3 class="wp-block-heading"><span id="toc87">カーソル操作</span></h3>



<p>COBOLやC言語などプログラミング言語からSQLを実行する場合に使用。</p>



<h4 class="wp-block-heading"><span id="toc88">プログラムの中のSQL文</span></h4>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>EXEC SQL 〜
　　　処理
END-EXEC</code></pre></div>



<h4 class="wp-block-heading"><span id="toc89">カーソルの定義</span></h4>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>DECLARE {カーソル名} CURSOR FOR</code></pre></div>



<h4 class="wp-block-heading"><span id="toc90">カーソルの使用</span></h4>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>EXEC SQL OPEN {カーソル名} : カーソルを開く
         FETCH {カーソル名} into {カーソル内で取得するデータを変数に入れる} : データを取得
         CLOSE {カーソル名} : カーソルを閉じる
         UPDATE 〜 WHERE CURRENT OF {カーソル名} : update文
         DELETE 〜 WHERE CURRENT OF {カーソル名} : delete文
         COMMIT : コミット
         ROLLBACK : ロールバック
</code></pre></div>



<h4 class="wp-block-heading"><span id="toc91">セーブポイント</span></h4>



<p>トランザクション内で変更を部分的に取り消すために設定するもの。</p>



<p></p>



<h2 class="wp-block-heading"><span id="toc92">その他</span></h2>



<p>その他は、データベーススペシャリストの過去問午前2で出題された、上記のSQLやデータベースに関連しない問題に出てくる用語をまとめたものです。</p>



<h3 class="wp-block-heading"><span id="toc93">システムの透過性</span></h3>



<ul class="wp-block-list">
<li>位置に対する透過性<br>利用者はそれが配置されている位置を意識せずにDBを利用できる。</li>



<li>移動に対する透過性<br>データの格納サイトが変更されても、利用者のアプリや操作方法に影響なし。</li>



<li>分割に対する透過性<br>一つの表が複数のサイトに分割されて格納されていても、利用者がそれを意識せずに利用できる。</li>



<li>複製に対する透過性<br>同一のデータが複数のサイトに格納されていても、利用者はそれを意識せずに利用できる。</li>



<li>障害に対する透過性<br>あるサイトで障害が発生しても、利用者はそれを意識することなく利用できること。</li>



<li>データモデルに対する透過性<br>各サイトのDBMSが扱うデータモデルが異なっていても、利用者は意識することなく利用できる。</li>
</ul>



<h3 class="wp-block-heading"><span id="toc94">OLAP</span></h3>



<p>データウェアハウスやデータマートからデータを取り出し，多次元分析を行う。</p>



<ul class="wp-block-list">
<li>スライシング：多次元データベースをある断面で切り取って2次元の表にする</li>



<li>ダイシング：スライシングは多次元データベースの中にある縦横軸を指定して、2次元の表にする</li>



<li>ドリリング：多次元データベースの一部を集計する</li>
</ul>



<h3 class="wp-block-heading"><span id="toc95">割り込み</span></h3>



<ul class="wp-block-list">
<li>内部割り込み：プログラム割り込み、SVC割り込み、ページフォルト。</li>



<li>外部割り込み：タイマ割り込み、コンソール割り込み、入出力割り込み。</li>
</ul>



<h3 class="wp-block-heading"><span id="toc96">リバースエンジニアリング</span></h3>



<p>ソースプログラムを解析してプログラム仕様書を作る手法。</p>



<h3 class="wp-block-heading"><span id="toc97">ソースコード変更波及解析</span></h3>



<p>ソースコードを探索し、修正箇所や影響度を調べる。</p>



<h3 class="wp-block-heading"><span id="toc98">フェールソフト</span></h3>



<p></p>



<h3 class="wp-block-heading"><span id="toc99">リスク</span></h3>



<h4 class="wp-block-heading"><span id="toc100">リスク分析</span></h4>



<p>リスクの特質を理解し、リスクの算定を行うプロセス。リスク分析の結果をもとにリスク評価とリスク対応が行われる。</p>



<h4 class="wp-block-heading"><span id="toc101">リスク評価額</span></h4>



<p>1回あたりの平均予想損失額にリスクの発生確率を加味して計算される。</p>



<h4 class="wp-block-heading"><span id="toc102">投機的リスク</span></h4>



<p>相場などのように利益と損失のどちらかが生じる可能性のある不確実性のこと</p>



<h4 class="wp-block-heading"><span id="toc103">純粋リスク</span></h4>



<p>損失のみが生じる可能性のある不確実性のこと。</p>



<h3 class="wp-block-heading"><span id="toc104">RAID構成</span></h3>



<p></p>



<h3 class="wp-block-heading"><span id="toc105">ホットスタンバイ構成</span></h3>



<p>待機系からは基本的にアクセスはしない。通常系から待機系へ定期的に通信を行い、途切れた際に切り替えなどを契機とする。</p>



<h3 class="wp-block-heading"><span id="toc106">共通フレーム</span></h3>



<p>システム要件への追跡可能性、一貫性、設計標準および施系手法、実現可能性、運用保守実現可能性</p>



<h3 class="wp-block-heading"><span id="toc107">ソフトウェア開発手法</span></h3>



<ul class="wp-block-list">
<li>ウォーターフォール型<br>上流から下流に開発工程を進める開発手法。各工程で品質を担保しながら戻りがない前提の手法</li>



<li>成長型プロセスモデル<br>ウォーターフォールモデルのプロセスを繰り返す</li>



<li>スパイラルモデル<br>開発工程を何回も繰り返しながら開発機能を拡大する手法</li>



<li>プロトタイピングモデル<br>開発初期に試作品を作成し、フィードバックをしながら開発する手法</li>
</ul>



<h3 class="wp-block-heading"><span id="toc108">ファイバチャネル</span></h3>



<p>コンピュータと周辺機器を高速かつロスレスで接続するデータ転送規格。伝送媒体に光ファイバを利用できる。</p>



<h3 class="wp-block-heading"><span id="toc109">レプリケーション</span></h3>



<p>一つのノードへのレコード挿入を他のノードでも実行する。</p>



<h3 class="wp-block-heading"><span id="toc110">SAN</span></h3>



<p>ハードディスク装置や磁器テープ装置などのストレージとサーバなどのコンピュータをファイバチャネルやシリアルSCSIプロトコルを用いて接続したストレージネットワークです。</p>



<h3 class="wp-block-heading"><span id="toc111">IPsecのトランスポートモード</span></h3>



<p>送信受信ホスト間の全経路でメッセージが暗号化。S／MINEでは送信元・送信先の端末までエンドツーエンドで暗号化が行われるため、メールサーバ内でも暗号化された状態になっている。</p>



<h3 class="wp-block-heading"><span id="toc112">メモリサイクルの計算</span></h3>



<p>メモリサイクル80ナノ秒の場合、1秒間のデータ転送回数は1秒÷80ナノ秒となる。</p>



<h3 class="wp-block-heading"><span id="toc113">情報セキュリティ基本方針</span></h3>



<p>組織のトップが社内外に取るべき行動を宣言するもの。</p>



<h3 class="wp-block-heading"><span id="toc114">シンプロビジョニング</span></h3>



<p>ハードディスク装置などの外部装置を仮想化することで、物理的な記憶容量より多くの容量を利用者に割り当てることを可能にする仕組み。</p>



<h3 class="wp-block-heading"><span id="toc115">コンソリデーション</span></h3>



<p>組織内の乱立したサーバやDB、ストレージ、アプリなどを整理統合する。</p>



<h3 class="wp-block-heading"><span id="toc116">SOA</span></h3>



<p>業務上の1処理に相当するドフとで実現されている機器や部品を独立したサービスとし、それらを組み合わせて連携するという手法。そのため、各システムは疎結合がありがたい。</p>



<h3 class="wp-block-heading"><span id="toc117">解析ツール</span></h3>



<ul class="wp-block-list">
<li>動的テストツール：構文チェッカ、コードオーディタ</li>



<li>静的テストツール：インスペクター、トレーサー、カバレージモニター</li>
</ul>



<h3 class="wp-block-heading"><span id="toc118">障害発生時の取り決め</span></h3>



<h4 class="wp-block-heading"><span id="toc119">RPO</span></h4>



<p>障害の発生などにより、どこまでの状態に戻すかの目標値。</p>



<h4 class="wp-block-heading"><span id="toc120">RTO</span></h4>



<p>目標復旧時間。</p>



<h3 class="wp-block-heading"><span id="toc121">ディスクストライピング</span></h3>



<p>複数のディスクに分散してデータを書き込むことで、アクセス性能を向上させる技術</p>



<h3 class="wp-block-heading"><span id="toc122">ディスクミラーリング</span></h3>



<p>同じデータを2台のディスクに書き込むことで、信頼性を向上させる技術。</p>



<h3 class="wp-block-heading"><span id="toc123">シェアードエブリシング</span></h3>



<p>複数のノード間で負荷分散を行い、障害発生時にはフェールオーバで処理を引き継ぐ。</p>



<h3 class="wp-block-heading"><span id="toc124">シェアードナッシング</span></h3>



<p>複数のノードに処理を分散することで処理能力の向上。</p>



<h3 class="wp-block-heading"><span id="toc125">AES</span></h3>



<p>128/192/256ビットから鍵の長さを選択できる。</p>



<h3 class="wp-block-heading"><span id="toc126">ブローカー</span></h3>



<p>分散システムを構築するために利用できるアーキテクチャパターンで、互いに依存性を持たないコンポーネント群が、リモートサービスを起動することによって相互作用するという構造を持っている。</p>



<h3 class="wp-block-heading"><span id="toc127">共通鍵・秘密鍵の関係</span></h3>



<p></p>



<h3 class="wp-block-heading"><span id="toc128">ECCメモリ</span></h3>



<p>誤り訂正符号としてハミング符号や垂直水平パリティを用いることで、記録内容に発生した誤りを検知・訂正できる機能を持つメモリです。</p>The post <a href="https://tomoblog.net/programing/database-specialist-wordlist/">【データベーススペシャリスト】用語・SQLまとめ 〜 最低限押さえておく用語・SQL厳選 〜</a> first appeared on <a href="https://tomoblog.net">ともぶろぐ</a>.]]></content:encoded>
					
					<wfw:commentRss>https://tomoblog.net/programing/database-specialist-wordlist/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>【AWS】ソリューションアーキテクトアソシエイト無料問題。</title>
		<link>https://tomoblog.net/programing/aws/solution-architect-associate-practice/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=solution-architect-associate-practice</link>
					<comments>https://tomoblog.net/programing/aws/solution-architect-associate-practice/#respond</comments>
		
		<dc:creator><![CDATA[tomo]]></dc:creator>
		<pubDate>Fri, 09 Feb 2024 03:00:40 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<guid isPermaLink="false">https://tomoblog.net/?p=9122</guid>

					<description><![CDATA[<p>今回の記事はAWS認定資格のソリューションアーキテクトアソシエイトの無料問題をご紹介する記事です。ソリューションアーキテクトアソシエイトの資格勉強を行っている方は是非対策に役立ててください。 試験でよく問われる用語をまと [&#8230;]</p>
The post <a href="https://tomoblog.net/programing/aws/solution-architect-associate-practice/">【AWS】ソリューションアーキテクトアソシエイト無料問題。</a> first appeared on <a href="https://tomoblog.net">ともぶろぐ</a>.]]></description>
										<content:encoded><![CDATA[<p>今回の記事はAWS認定資格のソリューションアーキテクトアソシエイトの無料問題をご紹介する記事です。ソリューションアーキテクトアソシエイトの資格勉強を行っている方は是非対策に役立ててください。</p>



<p>試験でよく問われる用語をまとめた記事も記載しておりますので下記参照ください。</p>



<p>「<a target="_blank" href="https://tomoblog.net/programing/aws/solution-architect-associate/" title="">【AWS】ソリューションアーキテクトアソシエイト用語一覧</a>」</p>



<p>Amazon公式のソリューションアーキテクト認定資格ページは下記です。</p>



<p>「<a rel="noopener" target="_blank" href="https://aws.amazon.com/jp/certification/certified-solutions-architect-associate/" title="">AWS認定 ソリューションアーキテクト アソシエイト</a>」</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ソリューションアーキテクトアソシエイト無料問題</a><ol><li><a href="#toc2" tabindex="0">問題1</a></li><li><a href="#toc3" tabindex="0">問題2</a></li><li><a href="#toc4" tabindex="0">問題3</a></li><li><a href="#toc5" tabindex="0">問題4</a></li><li><a href="#toc6" tabindex="0">問題5</a></li><li><a href="#toc7" tabindex="0">問題6</a></li><li><a href="#toc8" tabindex="0">問題7</a></li><li><a href="#toc9" tabindex="0">問題8</a></li><li><a href="#toc10" tabindex="0">問題9</a></li><li><a href="#toc11" tabindex="0">問題10</a></li><li><a href="#toc12" tabindex="0">問題11</a></li><li><a href="#toc13" tabindex="0">問題12</a></li><li><a href="#toc14" tabindex="0">問題13</a></li><li><a href="#toc15" tabindex="0">問題14</a></li><li><a href="#toc16" tabindex="0">問題15</a></li><li><a href="#toc17" tabindex="0">問題16</a></li><li><a href="#toc18" tabindex="0">問題17</a></li><li><a href="#toc19" tabindex="0">問題18</a></li><li><a href="#toc20" tabindex="0">問題19</a></li><li><a href="#toc21" tabindex="0">問題20</a></li><li><a href="#toc22" tabindex="0">問題21</a></li><li><a href="#toc23" tabindex="0">問題22</a></li><li><a href="#toc24" tabindex="0">問題23</a></li><li><a href="#toc25" tabindex="0">問題24</a></li><li><a href="#toc26" tabindex="0">問題25</a></li><li><a href="#toc27" tabindex="0">問題26</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ソリューションアーキテクトアソシエイト無料問題</span></h2>



<h3 class="wp-block-heading"><span id="toc2">問題1</span></h3>



<p>AWSサービスを利用する上でサービスがどこで稼働しているかによって、「AZサービス」「リージョンサービス」「グローバルサービス」に分かれます。下記で正しい組み合わせはどれか？（2つ回答）</p>



<ol class="wp-block-list">
<li>EC2はグローバルサービスである</li>



<li>CroudFrontはグローバルサービスである</li>



<li>AutoScalingはリージョンサービスである</li>



<li>Route53はリージョンサービス</li>



<li>VPCはAZサービスである</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2,3</p>
<p>アベイラビリティゾーンサービスにはEC2/RDS/サブネットなどが含まれます。<br>
リージョンサービスにはVPC/AutoScaling/DynamoDBなどが含まれます。<br>
グローバルサービスにはRoute53/Cloud Front/S3(データはリージョンに保存)などが含まれます。<br>
実際このような問題は出ないので問題0にしています。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc3">問題2</span></h3>



<p>ある会社は同一リージョンに属する外部ベンダーの保有するAWSアカウントのVPC内で稼働しているアプリから、データを連携し、自社のAWSアカウントが保有するVPC内のアプリに連携する必要があります。可能な限りセキュアなデータ連携を実現できるにはどのサービスが最適でしょうか？</p>



<ol class="wp-block-list">
<li>IAMロールでVPC間を接続するポリシーを設定し、VPCにロールを付与する。</li>



<li>IAMグループを一つ作成し、ベンダー側と自社側でそれぞれのユーザをIAMグループに登録するクロスアカウント設定を実施。アカウント共有を行うことで、VCPを共有するように設定する。</li>



<li>VPCピアリングを利用してVPC間を接続する。</li>



<li>DirectConectをお互いの企業のVPCに接続し、VPC間を接続する。</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>VPCピアリングを利用すると、同一リージョン内のVPCと接続し、同じネットワーク内のように自由にデータ連携などを行うことが可能です。似た機能にプライベートリンクという機能があります。データを一方向のみに渡す場合、こちらも有用です。違いのまとめは下記サイトを参照ください。<br>
<a rel="noopener" target="_blank" href="https://toshioshimo.hatenablog.com/entry/2019/12/17/215004">VPCピアリングとプライベートリンクの違い</a></p>
<p>1と2のIAMロールではVPC間の接続は制御できません。また、2のクロスアカウント設定は他の組織に対しては利用できません。<br>
4の　DirectConnectはオンプレミスとVPC間を接続するサービスのため不適です。
</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc4">問題3</span></h3>



<p>AWSに自社用のデータベースと連携するWebアプリをリリースする予定です。その際の設定として最もセキュアなものはどれか？</p>



<ol class="wp-block-list">
<li>アプリケーションサーバとデータベースサーバの両方をパブリックサブネットに設置する。NATゲートウェイをパブリックサブネットに設置し、ルートテーブルをデータベースサーバのサブネットに設定する。</li>



<li>アプリケーションサーバをパブリックサブネットに設置し、データベースサーバをプライベートサブネットに設置する。NATゲートウェイをパブリックサブネットに設置し、ルートテーブルをデータベースサーバのサブネットに設定する。</li>



<li>アプリケーションサーバをパブリックサブネットに設置し、データベースサーバをプライベートサブネットに設置する。NATゲートウェイをプライベートサブネットに設置し、ルートテーブルをデータベースサーバのサブネットに設定する。</li>



<li>アプリケーションサーバとデータベースサーバを共にプライベートサブネットに設置する。VPNを使ってプライベートサブネットにアクセスするように設定する。</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：4</p>
<p>パブリックサブネットにサービスが出ている場合、どうしてもインターネットからのアクセスを考慮する必要があります。NATゲートウェイを使用することで対応はできますが、アプリケーションサーバ。データベースサーバ共にプライベートサブネットに配置した方がセキュリティは高くなります。そこにVPNを使ってアクセスすることで、インターネットを経由することなくアクセスが可能となります。そのため、4が正解となります。<br>
NATゲートウェイはパブリックサブネットに設置します。
</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc5">問題4</span></h3>



<p>AWS上でドキュメント共有アプリを構築しています。このアプリにはユーザがHTTP通信でドキュメントをS3にアップロードします。社内データの取り扱いに関してよりセキュリティ強化を行うということで、ドキュメントは保存後、どんなユーザも変更も削除もできないようにすると取り決められました。この場合、最適な対応はどれに当たるでしょうか？</p>



<ol class="wp-block-list">
<li>S3バケットにボールトロックを設定する。</li>



<li>S3オブジェクトロックのガバナンスモードを設定する。</li>



<li>S3バケットからGlacierにドキュメントを移動し、ボールとロックを設定する。</li>



<li>S3オブジェクトロックのコンプライアンスモードを設定する。</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：4</p>
<p>S3オブジェクトロックのコンプライアンスモードを設定することで、管理者を含むすべてのユーザがオブジェクト削除をできないようにできます。
1のボールとロックはGlacierに設定するものです。<br>
2のオブジェクトロックのガバナンスモードは管理者が削除することができるので不適です。<br>
3のボールトロックポリシーはオブジェクトの操作を制御するポリシーです。削除できないようにすることはできません。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc6">問題5</span></h3>



<p>企業はAWSでアプリケーションをCroudFrontを使って全世界に配信しています。1週間前よりアプリのレイテンシーが高くなっていることユーザから通知され気づくことができました。原因を特定したところ、特定のIPアドレスから異常な数のアクセスがあることがわかりました。適切な対応はどれでしょうか？</p>



<ol class="wp-block-list">
<li>原因はDDoS攻撃のため、特定のIPアドレスを遮断することが必要です。CroudFlontにACLを設定し、特定のIPを遮断するルールを付与する。</li>



<li>原因はDDoS攻撃のため、特定のIPアドレスを遮断することが必要です。CroudFlontにWAFを設定し、特定のIPを遮断するルールを付与する。</li>



<li>原因はMITB攻撃のため、特定のIPアドレスを遮断することが必要です。CroudFlontにACLを設定し、特定のIPを遮断するルールを付与する。</li>



<li>原因はMITB攻撃のため、特定のIPアドレスを遮断することが必要です。CroudFlontにWAFを設定し、特定のIPを遮断するルールを付与する。</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2</p>
<p>CroudFlontにWAF(WebApplicationFirewall)を設定し、IPアドレスを遮断する方法はよく問われます。DDoS攻撃も試験の中で、いくつか対策手法を問われることがあるので押さえておきましょう。MITB攻撃はユーザーのWebブラウザと接続先のWebサイトとの間で交わされる通信を乗っ取り、不正な操作を行う攻撃のことで、今回の攻撃手法とは違います。<br>
2のオブジェクトロックのガバナンスモードは管理者が削除することができるので不適です。<br>
3のボールトロックポリシーはオブジェクトの操作を制御するポリシーです。削除できないようにすることはできません。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc7">問題6</span></h3>



<p>企業はAWSのEC2でアプリをホストしています。このEC2インスタンスにIP制限をかける必要があり、セキュリティグループを設定することにしました。セキュリティグループを設定した際に、現在稼働しているアプリにIP制限が適用されるタイミングとして正しいものはどれか？</p>



<ol class="wp-block-list">
<li>EC2インスタンスを一度停止し、再度起動させたあとに適用される。</li>



<li>EC2インスタンスはそのままで、300秒後に設定が反映される。</li>



<li>EC2インスタンスのコンソール画面で、リフレッシュボタンを押下した後に反映される。</li>



<li>セキュリティグループの反映は設定した後瞬時に反映される。</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：4</p>
<p>セキュリティグループなどの設定はすぐに反映されます。EC2インスタンスを再起動などは必要ありません。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc8">問題7</span></h3>



<p>企業はAWSに高度な計算処理を実行するアプリケーションを展開予定です。その際に最適なインスタンスファミリーを選択する必要があります。下記選択肢の中で最も最適なインスタンスはどれでしょうか？</p>



<ol class="wp-block-list">
<li>高速コンピューティングインスタンス</li>



<li>汎用インスタンス</li>



<li>ストレージ最適化インスタンス</li>



<li>メモリ最適化インスタンス</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1</p>
<p>EC2インスタンスの名前とインスタンスの特徴はおさえておきましょう。<br>
<ul>
  <li>汎用：A1・M5・T3<br>バランスが取れたインスタンス。クラスタープレイスメントグループによる設定可能。</li>
  <li>コンピュータ最適化：C5・C6g<br>高パフォーマンスが必要なアプリ用。</li>
  <li>メモリ最適化：X1・R5<br>メモリ内の大きいデータセットを処理するのに最適。</li>
  <li>高速コンピューティング：P3・G4<br>高い計算能力。</li>
  <li>ストレージ最適化：I3・D2・H1<br>ローカルストレージの大規模データセットに対する高い読み取り能力。</li>
</ul>
</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc9">問題8</span></h3>



<p>ある企業は月末に、データベースの稼働状況のレポートを取得するアプリを使用しています。このアプリをAWSのEC2インスタンスに展開予定で、タスク終了は10分程度です。このレポート取得タスクは2〜3年必要な作業で、EC2インスタンスに他のタスクはありません。最もコストが安くなるインスタンスの契約はどれでしょうか？</p>



<ol class="wp-block-list">
<li>リザーブドインスタンスを契約する。</li>



<li>オンデマンドインスタンスを契約する。</li>



<li>リザーブドインスタンスを契約し、saving planを適用する。</li>



<li>オンデマンドインスタンスを契約し、キャパシティー予約を設定する。</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：4</p>
<p>企業は月末数分のみの稼働でインスタンスを使用する予定です。2〜3年の中長期利用となっており、リザーブドインスタンスのsaving planは適用可能ですが、月一度数分の利用の場合はオンデマンドインスタンスのキャパシティ予約の方がコストが低いです。リザーブドインスタンスは常に稼働しているアプリをホストする場合などにオンデマンドインスタンスよりもコスト面で優れます。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc10">問題9</span></h3>



<p>ある企業はWEBアプリをAWS上に展開しています。このアプリは不規則的な急激な負荷上昇がモニタリングされています。そのため、負荷に応じて段階的にスケーリングを設定することにしました。この要件を満たすAuto Scalingの設定方法はどれでしょうか？</p>



<ol class="wp-block-list">
<li>簡易スケーリング</li>



<li>スケジュールスケーリング</li>



<li>手動スケーリング</li>



<li>ステップスケーリング</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：4</p>
<p>今回の要件では負荷に応じて段階的にスケーリングを行うということなので、ステップスケーリングが最適です。<br>
ステップスケーリングは複数の閾値を設定して、段階的なスケーリングが可能です。<br>
1の手動スケーリングは手動でスケーリングを実施することです。これは常にスケーリングを実施する人を当てる必要がありあまり採用されません。<br>
スケジュールスケーリングは規則的・周期的にスケーリングができます。<br>
簡易スケジューリングは1段階の閾値を決めてスケーリングできます。
</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc11">問題10</span></h3>



<p>企業は２つのコンポーネント間の連携をAWS上で実現する方式を検討しています。「データ登録」をトリガーとして、複数のEC2インスタンスを利用して処理サーバーでデータ処理を並列で実行予定です。この「データ登録」は多数発生する可能性がありますが、重複で実行されてはいけません。この要件を満たすためにはどの組み合わせが正しいでしょうか？</p>



<ul class="wp-block-list">
<li>Amazon SNSによるプッシュ通知で、リクエストをAmazon SQSキューに送信。キュー内のリクエストメッセージをEC2インスタンスがポーリングするように設定し、データ処理を並列処理。</li>



<li>Amazon SQSキューにリクエストを送信。キュー内のリクエストメッセージをLambda関数により、データ処理を並列処理。</li>



<li>Amazon SNSによるプッシュ通知で、リクエストをLambda関数に送信。Lambda関数により、データ処理を並列処理。</li>



<li>Amazon SNSによるプッシュ通知で、リクエストをEC2インスタンスに送信。EC2インスタンスにより処理を並列処理。</li>
</ul>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1</p>
<p>今回の要件ではデータ登録をトリガーとして、複数インスタンスに処理を重複なく並列処理させる必要があります。<br>
こういったジョブの並列処理はSQSとSNSまたはAmazon MQが利用されます。<br>
キューがある場合、1度は確実に処理がなされる必要があるので、インスタンスから
また、ステップスケーリングは複数の閾値を設定して、段階的なスケーリングが可能です。<br>
1の手動スケーリングは手動でスケーリングを実施することです。これは常にスケーリングを実施する人を当てる必要がありあまり採用されません。<br>
スケジュールスケーリングは規則的・周期的にスケーリングができます。<br>
簡易スケジューリングは1段階の閾値を決めてスケーリングできます。
</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc12">問題11</span></h3>



<p>ある企業はAWSで業務アプリを展開しています。インスタンスはHTTPとHTTPSそれぞれの通信を別のインスタンスで処理するようなインスタンスのグループをALBのターゲットグループに構成しています。すべての通信をHTTPSに統一したい場合、適切な対応はどれか？</p>



<ol class="wp-block-list">
<li>HTTP通信をHTTPS通信に変換するALBのリスナールールを設定する。</li>



<li>HTTP通信をHTTPS通信にリダイレクトするALBのリスナールールを設定する。</li>



<li>HTTPS通信のみを許可するように、ALBのネットワークACLを設定する。</li>



<li>セキュリティグループをインスタンスに設定し、HTTP通信を遮断する。</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2</p>
<p>今回の要件では、ALBにより、HTTP通信をHTTPSにリダイレクトする必要があります。そのため、ALBにリスナールールでリダイレクトのルールを設定するのが適切です。<br>
1の変換はできません。3のACLはALBに設定することはできません。また、通信を遮断するのはダメです。4のセキュリティグループはインスタンスには設定可能ですが、通信を遮断するのは望ましくありません。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc13">問題12</span></h3>



<p>ある企業はAWSを利用し、ファイルストレージを構築予定です。現在企業が利用しているファイルストレージサービスは、オンプレ環境のSMBプロトコルでデータ転送を行うファイルサーバです。最も構築コストが低く簡易に利用できるAWSストレージはどれか？</p>



<ol class="wp-block-list">
<li>Amazon EBS</li>



<li>Amazon EFS</li>



<li>Amazon S3</li>



<li>Amazon FSx</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：4</p>
<p>SMBプロトコルを使ってアクセス可能なファイルストレージはAmazon FSx for Windowsのみです。<br>
Amazon EBSは、EC2と共に使用するために設計されたブロックストレージです。<br>
Amazon EFSは、NFSv4プロトコルを利用するファイルストレージです。<br>
Amazon S3はSFTPプロトコルを利用するストレージサービスです。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc14">問題13</span></h3>



<p>ある企業は複数のインスタンスを起動し、インスタンス間で通信が発生するアプリを展開しています。アプリは低レイテンシーと高スループットを実現する必要があります。下記選択肢の対応としてはどれが最も適した対応でしょうか？</p>



<ol class="wp-block-list">
<li>複数のAZにまたがるAuto Scalingグループでインスタンスを起動する。</li>



<li>クラスタープレイスメントグループでEC2インスタンスを起動する。</li>



<li>パーティションプレイスメントグループでEC2インスタンスを起動する。</li>



<li>スプレッドプレイスメントグループでEC2インスタンスを起動する。</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>
プレイスメントグループは、複数のインスタンスを論理的にグループ化し、パフォーマンスの向上や耐障害性を高める機能です。<br>
<ul>
  <li>クラスタープレイスメントグループ:単一AZ内でネットワーク性能の引き上げを行う</li>
  <li>パーティションプレイスメントグループ:同一リージョン内でハードウェア障害対策</li>
  <li>スプレッドプレイスメントグループ:同一リージョン内でハードウェア障害対策</li>
</ul>
 </p>
<p>
1のAuto Scalingは耐障害性を高める手法なため今回の要件には合いません。
</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc15">問題14</span></h3>



<p>ある企業はAWSのVPC内で複数のインスタンスを稼働させ、アプリを展開している。VPCにはネットワークインターフェイスがアタッチされており、インスタンスへリクエストが到達する構成です。企業はインスタンスにアクセスするIPトラフィック情報を管理したいと考えています。<br>管理面を考慮し、最も適した構成を作成するにはどうすればいいか？（2つ選択してください。）</p>



<ol class="wp-block-list">
<li>AWS CloudTrailを利用し、ログ取得を有効化する。</li>



<li>ネットワークインターフェースに対してVPCフローログを有効化する。</li>



<li>ネットワークインターフェイスの手前にNLBを設置し、NLBのログを有効化する。</li>



<li>インスタンスにCloudWatchをインストールする。</li>



<li>AWS Logsを対象のインスタンスに対して有効化する。</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2,4</p>
<p>
ネットワークインターフェイスに対してVPCフローログを有効化することで、IPトラフィック情報をキャプチャ可能です。さらに、インスタンスにCloudWatchをインストールすることで、ログを収集することができます。<br>
1のCloudTrailはユーザーログを取得し、不正を監視するサービスです。EC2インスタンスのログは取得できません。<br>
3のNLBでアクセスログは出力可能ですが、TLSリスナーのログのみとなっています。そのため今回の要件には合致しません。<br>
5のAWS Logsというサービスはありません。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc16">問題15</span></h3>



<p>企業はAWSにアプリを構築しています。インスタンスに障害が発生した場合、別の待機インスタンスに処理を継続させる構成になっています。アプリ運用開始してしばらく経過後、インスタンス障害により、トラフィックが自動で別インスタンスに切り替えられました。しかし、アプリ処理は継続されず停止しました。IPアドレスが変更され、アプリの処理継続ができなくなったことが原因のようです。解決策はどれか？</p>



<ol class="wp-block-list">
<li>Route53のルーティングレコードを書き換え、ホスト名を待機系のIPアドレスに向け直す。</li>



<li>IPフローティングで、待機系インスタンスにIPアドレスの付け替えを実施する。</li>



<li>NLBによってインスタンスのトラフィックを待機系インスタンスに向ける。</li>



<li>AutoScalingによってインスタンスのスケーリングを実施する。</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2</p>
<p>今回の要件では、アプリ処理は継続性があるため、待機系インスタンスへの切り替えは即座に実施される必要があります。そのため、IPフローティングを用いるのが最適です。1や3のNLBやRoute53でもインスタンス切り替えは可能ですが、一定のダウンタイムが発生します。<br>
AutoScalingは可用性を向上させることはできますが、特定のIPの割り当てなどはできません。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc17">問題16</span></h3>



<p>企業はオンプレで稼働しているアプリをAWSに移行予定です。アプリはストレージにアップロードされたファイルを初めの1週間は低頻繁で読み込みます。低頻度ですが、アプリの使用上、データ取り出しは60秒以内に行えることが望ましいです。1週間をすぎると、アプリからの読み取りは無くなりますが、稀に監査や調査によりファイルを取り出す必要があります。この監査や調査は不定期ですが、実施の際はデータの取り出しは数分で可能なことが望ましいです。この企業はAWSに移行する点で可用性よりもコスト面を重視しております。最適な構成はどれか？（2つ選択）</p>



<ol class="wp-block-list">
<li>最初の1週間はS3ストレージのStandardクラスを採用する。</li>



<li>最初の1週間はS3ストレージのStandard-IAクラスを採用する。</li>



<li>最初の1週間はS3ストレージのOne Zone-IAクラスを採用する。</li>



<li>ライフサイクルルールにより1週間後にGlacier Deep Archiveにデータを移行する設定をする。</li>



<li>ライフサイクルルールにより1週間後にGlacier Flexible Retrieval（迅速取り出しモード）にデータを移行する設定をする。</li>



<li>ライフサイクルルールにより1週間後にGlacier Instant Retrievalにデータを移行する設定をする。</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3,5</p>
<p>S3とGlacierのストレージタイプと特徴は下記のようになっています。<br>
<ul>
  <li>Glacier Instant Retrieval<br>迅速なデータ取り出しが可能。</li>
  <li>Glacier Flexible Retrieval<br>標準で3～5時間、迅速取り出しモードで2～5分でデータ取り出し可能。</li>
  <li>Glacier Deep Archive<br>標準で9時間以上〜12時間以内でデータ取り出し可能。</li>
  <li>S3 Standard<br>標準ストレージ。迅速なデータ取り出しが可能。</li>
  <li>S3 Standard-IA<br>低頻度アクセス用。迅速なデータ取り出しが可能。</li>
  <li>S3 One Zone-IA<br>低頻度アクセス用。迅速なデータ取り出しが可能。単一AZにデータを保存させることで、可用性は失われるがその分コストが安い。</li>
</ul>
<br>
今回の要件上、最初の1週間は低頻度ですが、60秒以内にデータを取り出す必要があります。そのため、IA系を利用します。IA系はデータ取り出し時に課金されるため高頻度の取り出しが発生する場合は不向きですが、今回は利用すべきです。IA系の中でもOne Zone-IAはデータの可用性が必要ない場合に使用でき、選択肢の中のS3ストレージの中では最も安いです。<br>
次に1週間後からはアプリからのデータ取り出しはなくなるため、さらに低頻度なアクセスになります。そのため、S3バケットにライフサイクルポリシーを設定し、Glacierにデータを移行します。取り出し要件は数分なので、5のGlacier Flexible Retrieval（迅速取り出しモード）が最適です。
</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc18">問題17</span></h3>



<p>AWS上で稼働する配送管理アプリの伝票データを出力するアプリがあります。伝票は出荷後もしばらくの間保存しておく必要があります。伝票自体はS3ストレージに保存され、誰でもアクセス可能です。事務処理が全て完了した伝票に関しては削除しても問題ないですが、未完了の伝票は削除されてはいけません。この場合、S3にどの対応をすることが最も簡易的でしょうか？</p>



<ol class="wp-block-list">
<li>S3バケットにボールトロックを設定する。</li>



<li>S3バケットのスナップショットを定期的に自動取得する。</li>



<li>S3バケットのバージョニング機能を有効化する。</li>



<li>S3にデータを蓄積し、別リージョンにもS3を作成する。その後CORSを設定する。</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>バージョニングはバケットに保存されたファイルが誤って削除された場合、前のバージョンに戻すことで、復元することができます。<br>
1のボールトロックはバケットのファイル全てが削除できるため不適です。<br>
2のS3バケットのスナップショットはライフサイクルルールによって取得することはできません。<br>
4のCORSは別リージョンなどからのアクセスを有効化するだけで、削除したファイルを復元することはできません。
</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc19">問題18</span></h3>



<p>企業はAWSで業務用Webアプリを稼働させる予定です。このアプリは専用端末からEC2インスタンスに画像をアップロードし、APIを利用してS3バケットに保存する仕様予定となっております。セキュリティ要件上セキュアな構成が求められております。どの選択肢が最も適切でしょうか？</p>



<ol class="wp-block-list">
<li>AWS VPNを利用して端末からEC2へ画像をアップロード。その後、S3エンドポイント経由でS3にファイルを転送する。</li>



<li>AWS VPNを利用して端末からEC2へ画像をアップロード。その後、APIゲートウェイ経由でS3にファイルを転送する。</li>



<li>AWS Direct Connectを利用して端末からEC2へ画像をアップロード。その後、S3エンドポイント経由でS3にファイルを転送する。</li>



<li>AWS Direct Connectを利用して端末からEC2へ画像をアップロード。その後、APIゲートウェイ経由でS3にファイルを転送する。</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>AWS VPNとAWS Direct Connectでは専用線経由のDirect Connectの方がよりセキュアです。<br>
また、インスタンスが存在するVPCにS3エンドポイントを設定することで、インターネットを経由せずにS3にアクセス可能です。
</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc20">問題19</span></h3>



<p>企業では複数のインスタンスに対してWEBアプリを展開しています。1つのインスタンスから別リージョンのS3バケットのオブジェクトにアクセスするために、VPCエンドポイントを使用する予定です。この仕様でコンテンツをシェアする場合の適切な構成はどれか？</p>



<ol class="wp-block-list">
<li>S3のCORSを設定し、対象リージョンにS3バケットを共有する。</li>



<li>S3のCRRを設定し、対象リージョンにS3バケットをレプリケーションする。</li>



<li>S3 transfer accelerationを有効化し、対象リージョンにS3バケットを共有する。</li>



<li>異なるリージョン間の対象となるVPCとVPCピアリングを設定し、対象リージョンにS3バケットを共有する。</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2</p>
<p>
2のCRR（クロスリージョンレプリケーション）を使うと、リードレプリカを別リージョンに設置可能。<br>
VPCエンドポイントを利用することから、VPCエンドポイントからデータを参照できるように、エンドポイントを設定しているリージョン内に参照用のS3バケット（リードレプリカ）を設置する必要があります。<br>
1のCORS（クロスオリジンリソースシェアリング）を利用すると、ブラウザが異なるオリジン（ドメイン）のリソースにアクセスするためのスクリプトを許可します。例えば、東京リージョン内のサイトがオレゴンリージョンのS3バケットにアクセスして、画像をダウンロードするなど。<br>
3のS3 transfer accelerationは海外リージョンなど、送信元から遠く離れたS3へのデータ転送をAWSのエッジロケーションとネットワークプロトコルの最適で高速化するサービスです。世界中からアップロードが行われたり、大陸間で定期的にGBからTBなどの大きなデータを転送する場合に使用します。<br>
4のVPCピアリングでVPC間ネットワークを設定しても、S3バケットをシェアはできません。
</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc21">問題20</span></h3>



<p>企業はS3バケットに大量のデータを格納しています。S3バケットのデータ量増加に伴い、データを検索するソリューションを模索しています。データ検索は、簡易的に実行でき、なおかつ効率的なソリューションで、オブジェクト全体ではなく、オブジェクトデータのサブセットを取得したいと考えています。どのソリューションが最も適切でしょうか？</p>



<ol class="wp-block-list">
<li>S3 Select</li>



<li>Amazon Redshift Spectrum</li>



<li>CloudSearch</li>



<li>Amazon Athena</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1</p>
<p>
オブジェクトのサブセットを取得できるサービスは1のS3 Selectのみです。<br>
Redshift、Athenaでは全体的なレポートを取得できます。<br>
CloudSearchはウェブサイトやアプリに検索機能を簡単に追加できます。
</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc22">問題21</span></h3>



<p>企業はS3バケット重要機密データを保存しております。S3バケットのデータは暗号化されている必要があります。必要な対応として適切な対応はどれか？（2つ選択）</p>



<ol class="wp-block-list">
<li>Cloud HSMを利用してデータを暗号化する。</li>



<li>S3バケットのデフォルト暗号化設定でデータを暗号化する。</li>



<li>AWS KSMを利用してデータを暗号化する。</li>



<li>SSL認証を利用してデータを暗号化する。</li>



<li>VPCの暗号化設定を有効化し、データを暗号化する。</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2,3</p>
<p>
S3バケットのデータを暗号化する方法はS3のデフォルト暗号化を利用するか、AWS KMSを利用してカスタマーキーによってデータを暗号化するかの2択です。<br>
1のCloud HSMはクラウドベースのハードウェアセキュリティモジュール。安全性の高いハードウェアベースの暗号化保存機能を利用して、暗号化キーを簡単に生成して使用できるようになります。<br>
4のSSLではデータ転送を暗号化できます。VPCに暗号化設定はないです。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc23">問題22</span></h3>



<p>企業はAWSのS3バケットを利用してデータを保存しています。アメリカにある全く別の企業とS3バケットを利用してデータを共有予定です。この際、構成として最も適切な構成はどれか？</p>



<ol class="wp-block-list">
<li>S3バケットにアクセス許可を設定するバケットポリシーを設定する。</li>



<li>S3バケットにCORSを設定する。</li>



<li>S3バケットにクロスアカウントアクセスを設定し、リクエスタ支払い機能を有効化する。</li>



<li>S3バケットのCRRを有効化して、ヨーロッパ企業のS3バケットとレプリケーションする。</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：3</p>
<p>
今回の要件では、S3バケットの共有設定を実施するためにクロスアカウントアクセスを有効にする必要があります。また、各企業は他企業のためS3を利用した分だけ各企業アカウントに支払いがいくようにリクエスタ支払い機能を設定する必要があります。<br>
1,2,3それぞれはS3バケットの共有までは可能ですが、支払いがS3バケットを保有する企業になってしまうため不適です。
</p>
</div></div>



<p></p>



<h3 class="wp-block-heading"><span id="toc24">問題23</span></h3>



<p>企業はオンプレ環境に静的Webサイトを運用しています。このサイトをAWSに移行すると決まり、構成を考えています。このサイトは全世界にユーザが存在しており、サイトを遅延なく表示させる必要があります。適切な構成はどれか？（2つ選択）</p>



<ol class="wp-block-list">
<li>静的サイトをS3から配信するよう、静的ウェブホスティングをS3バケットに構成する。</li>



<li>ユーザからリクエストがあると、EC2に作成した RestAPIを経由して静的サイトを返すアプリを構成する。</li>



<li>S3バケットを複数リージョンにレプリケートし、各リージョンにて配信設定をする。</li>



<li>Amazon CloudFrontを構成し、S3バケットをオリジンとして設定する。</li>



<li>Route53を利用して、各リージョンに遅延ルーティングするように構成する</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1,4</p>
<p>
今回の要件では、全世界にユーザがいる静的サイトの運用という点、遅延を削減するという点が重要です。<br>
1のAmazon S3バケットでは静的WEBホスティングを利用することができます。静的ウェブホスティング機能を有効化し、Index.htmlを公開可能です。さらに遅延を削減するためには、cloud frontを利用して、配信設定を行う構成が必要です。<br>
2のEC2でRestAPIを構成することも可能ですが、遅延を避ける構成が求められているため、S3とCloudFrontを構成するのが適切です。<br>
3のレプリケーションで複数リージョンにサイトを展開することも可能ですが、冗長な構成なため避けるべきです。<br>
5のルーティングに遅延ルーティングというルールはありません。
</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc25">問題24</span></h3>



<p>企業はAWSでアプリを展開しています。このアプリ内ではEC2とELBで構成されています。ELBに証明書を設定し、通信をHTTPSに設定しています。証明書は有効期限があり、14日前に運用チームにメールが来るような構成を取ることを決めました。どの構成が正しいでしょうか？</p>



<ol class="wp-block-list">
<li>ACM証明書の有効期限をチェックするAWS Configルールを作成し、14日後に期限が切れる証明書がある場合、Amazon CloudWatchアラートにメッセージを送信する。</li>



<li>ACM証明書の有効期限をチェックするAmazon EventBridgeルールを作成し、14日後に期限が切れる証明書がある場合、Amazon SNSメッセージを送信する。</li>



<li>ACM証明書の有効期限をチェックするAmazon EventBridgeルールを作成し、AWS Lambda関数を呼び出すように設定する。その後、LambdaからAmazon SNSにメッセージを送信する。</li>



<li>ACM証明書の有効期限をチェックするAWS Configルールを作成し、14日後に期限が切れる証明書がある場合、AWS Lambda関数を呼び出すように設定する。その後、LambdaからCloudWatchアラートにメッセージを送信する。</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：2</p>
<p>
ACMで管理する証明書は数年に一度更新が必要です。<br>
1,3,4のようにLambdaを介する意味はありません。EventBridge/Configは直接SNSへメッセージを送信できます。
</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc26">問題25</span></h3>



<p>企業は、AWSとオンプレ環境を専用回線で接続しており、双方のリソースを共有し処理を実行可能です。そこで、双方の環境を利用して処理を実行する処理フローやデータ連携方法を構成する必要があります。最適な構成はどれか？（2つ選択せよ）</p>



<ol class="wp-block-list">
<li>Amazon SQSを利用し、オンプレサーバとEC2をポーリングするキュー処理を構成する。</li>



<li>API Gatewayを利用し、APIリクエストをオンプレとAWSへ振り分けるよう構成する。</li>



<li>AWS SWFを利用し、オンプレサーバとEC2を利用したワークフローを作成する。</li>



<li>AWS Step Functionsを利用し、オンプレサーバとEC2を利用したワークフローを作成する。</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：1,4</p>
<p>
今回の要件ではオンプレとAWSで分散アーキテクチャを構成する必要があります。そういった要件に使用できるのは、SQSでのキューによるポーリング処理と、Step Functionsでの分散アプリケーションコンポーネントを利用したワークフローです。<br>
2のAPI GatewayはAPIリクエストの振り分けは可能ですが、処理フローを作成することはできません。<br>
3のSWFはStep Functions以前の古いサービスで利用が推奨されていません。
</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc27">問題26</span></h3>



<p>企業は、サーバレスアプリを展開しています。API Gateway経由でAWS Lambda関数を呼び出す構成となっており、Lambda関数ではデータをAurora MySQLに保存する処理を実施しております。Aurora MySQLのアップグレード時を実施する必要があります。アップグレード処理が完了するまでLambda関数はDBに接続できなくなりその時間のデータ保存ができません。このデータを一時的に保存するにはどのような構成が最適か？</p>



<ol class="wp-block-list">
<li>Amazon RDSプロキシを設定し、RDSプロキシをデータ登録時に使用するようにLambdaを実装する。</li>



<li>Lambdaのローカルストレージにデータを保持し、アップグレード後にローカルストレージをスキャンし、データをAuroraに保存。</li>



<li>Lambdaの実行時間を上限まで増やす。その上で、このLambda関数でデータベースへの接続に失敗した場合の再試行処理を実装する。</li>



<li>Lambdaが取得したデータをAmazon SQSキューに保存。別のLambda関数によって、キューをスキャンし、データをAuroraに保存する。</li>
</ol>



<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus-square-1 su-spoiler-closed" data-scroll-offset="0" data-anchor-in-url="no"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>解答解説を見る</div><div class="su-spoiler-content su-u-clearfix su-u-trim">
<p>正解：4</p>
<p>
DBのダウンタイム時のデータの取り扱いに関する問題。Lambda関数でDBへデータが登録できない期間中のデータを保持する仕組みが必要。そのため、SQSを利用して、キューにデータを保存し、アップグレード後にキューを監視する別のLamnda関数がDBへデータを保存する仕組みを取ればよい。<br>
1のRDSプロキシに接続するようにLambda関数を構成しても、アップグレード時に接続できないことは変わりません。<br>
2のローカルストレージはエフェメラルストレージといい、関数実行中のメモリのような扱い。再試行処理時にはデータは失われているため不適。
3の再試行処理でデータを再度登録することはできるが、再度失敗する可能性もあるので不適。
</p>
</div></div>



<p></p>



<p>今回の記事は以上です。他にもAWS関連やその他技術系の記事を記載しています。興味ある方はサイト内見て行ってください。</p>The post <a href="https://tomoblog.net/programing/aws/solution-architect-associate-practice/">【AWS】ソリューションアーキテクトアソシエイト無料問題。</a> first appeared on <a href="https://tomoblog.net">ともぶろぐ</a>.]]></content:encoded>
					
					<wfw:commentRss>https://tomoblog.net/programing/aws/solution-architect-associate-practice/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【応用情報】午後試験データベース分野の頻出SQLまとめ。</title>
		<link>https://tomoblog.net/programing/oyozyoho-database-sql-list/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=oyozyoho-database-sql-list</link>
					<comments>https://tomoblog.net/programing/oyozyoho-database-sql-list/#respond</comments>
		
		<dc:creator><![CDATA[tomo]]></dc:creator>
		<pubDate>Fri, 05 Jan 2024 07:30:06 +0000</pubDate>
				<category><![CDATA[1.Programing]]></category>
		<guid isPermaLink="false">https://tomoblog.net/?p=8667</guid>

					<description><![CDATA[<p>今回の記事は応用情報午後試験のデータベース分野で出題されるSQLをまとめてみました。応用情報午後試験でデータベース分野を受験しようとしている方は是非参考にしてみてください。 目次 頻出SQL文まとめSQL関連用語ストアド [&#8230;]</p>
The post <a href="https://tomoblog.net/programing/oyozyoho-database-sql-list/">【応用情報】午後試験データベース分野の頻出SQLまとめ。</a> first appeared on <a href="https://tomoblog.net">ともぶろぐ</a>.]]></description>
										<content:encoded><![CDATA[<p>今回の記事は応用情報午後試験のデータベース分野で出題されるSQLをまとめてみました。応用情報午後試験でデータベース分野を受験しようとしている方は是非参考にしてみてください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">頻出SQL文まとめ</a><ol><li><a href="#toc2" tabindex="0">SQL関連用語</a><ol><li><a href="#toc3" tabindex="0">ストアドプロシージャ(Stored Procedure)</a></li><li><a href="#toc4" tabindex="0">VARCHAR・CHAR</a></li><li><a href="#toc5" tabindex="0">直積</a></li><li><a href="#toc6" tabindex="0">べき等</a></li><li><a href="#toc7" tabindex="0">レプリケーション</a></li></ol></li><li><a href="#toc8" tabindex="0">頻出SQL</a><ol><li><a href="#toc9" tabindex="0">CREATE文</a></li><li><a href="#toc10" tabindex="0">SELECT文</a></li><li><a href="#toc11" tabindex="0">INSERT文</a></li><li><a href="#toc12" tabindex="0">UPDATE文</a></li><li><a href="#toc13" tabindex="0">DELETE文</a></li><li><a href="#toc14" tabindex="0">where句</a></li><li><a href="#toc15" tabindex="0">order by句</a></li><li><a href="#toc16" tabindex="0">GROUP BY句</a></li><li><a href="#toc17" tabindex="0">計算系SQL</a></li><li><a href="#toc18" tabindex="0">in句</a></li><li><a href="#toc19" tabindex="0">exists句</a></li><li><a href="#toc20" tabindex="0">副問い合わせ（サブクエリ）</a></li><li><a href="#toc21" tabindex="0">join句</a></li></ol></li><li><a href="#toc22" tabindex="0">頻出ではないがよく聞かれるSQL</a><ol><li><a href="#toc23" tabindex="0">カラム定義</a></li><li><a href="#toc24" tabindex="0">between句</a></li><li><a href="#toc25" tabindex="0">GRANT</a></li></ol></li><li><a href="#toc26" tabindex="0">念の為押さえておくべきSQL</a><ol><li><a href="#toc27" tabindex="0">CREATE ASSERTION</a></li><li><a href="#toc28" tabindex="0">CASCADE</a></li><li><a href="#toc29" tabindex="0">ALTER TABLE</a></li></ol></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">頻出SQL文まとめ</span></h2>



<p>SQL文に関しては午前・午後両方で問われます。午前試験では基本的にはSQLを実行した後の結果やSQLの機能や関数の意味などが問われることが多いです。ただ、かなり回数は少ないですが、SQLを空欄に当てはめるなども出題されていた（過去15年分しか確認していませんが。。）ので是非押さえておきましょう。</p>



<p>下記の流れで紹介していきます。</p>



<ul class="wp-block-list">
<li>SQL関連用語</li>



<li>頻出SQL文</li>
</ul>



<h3 class="wp-block-heading"><span id="toc2">SQL関連用語</span></h3>



<h4 class="wp-block-heading" id="rtoc-37"><span id="toc3">ストアドプロシージャ(Stored Procedure)</span></h4>



<p>一連の処理手順をプログラムとしてまとめて実行できる処理モジュールをDBMS上に用意したもの。</p>



<h4 class="wp-block-heading"><span id="toc4">VARCHAR・CHAR</span></h4>



<p>CHAR(10)は常に10バイトでそれ以下のバイトの場合はバイト数がその数に減る。そのバイト数は固定。VARCHARは可変長。補足：日本語は2バイト。</p>



<h4 class="wp-block-heading"><span id="toc5">直積</span></h4>



<p>直積はデータ操作で、2つの関係(表)に含まれる要素のすべての組合せから成る表のことです。</p>



<h4 class="wp-block-heading"><span id="toc6">べき等</span></h4>



<p>複数回同一操作をしても、一回しか実行しなくても結果が同じになる（selectなど）</p>



<h4 class="wp-block-heading"><span id="toc7">レプリケーション</span></h4>



<p>一つのノードへのレコード挿入を他のノードでも実行する</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc8">頻出SQL</span></h3>



<p>SQLの組み立てはCRUD操作のSQL（select,insert,update,delete）の後ろでテーブルを指定（from句）し、条件句（where句）で操作対象のデータを絞るという構成です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>（例）
select id from テーブル1 where id = 1;</code></pre></div>



<p>頻出SQLを順番にご紹介していきます。</p>



<h4 class="wp-block-heading"><span id="toc9">CREATE文</span></h4>



<p>テーブルを作成。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>create table テーブル名 (id int, name varchar(10));</code></pre></div>



<h4 class="wp-block-heading"><span id="toc10">SELECT文</span></h4>



<p>データを取得。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select * from テーブル名;</code></pre></div>



<h4 class="wp-block-heading"><span id="toc11">INSERT文</span></h4>



<p>データを追加。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>insert into テーブル名;</code></pre></div>



<h4 class="wp-block-heading"><span id="toc12">UPDATE文</span></h4>



<p>データを更新。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>update テーブル名 set {更新するカラム} = {更新データ};</code></pre></div>



<h4 class="wp-block-heading"><span id="toc13">DELETE文</span></h4>



<p>データを削除。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>delete テーブル名;</code></pre></div>



<h4 class="wp-block-heading"><span id="toc14">where句</span></h4>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>where {検索対象のカラム} = {検索条件}</code></pre></div>



<h4 class="wp-block-heading"><span id="toc15">order by句</span></h4>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>order by {並び順を指定するカラム}</code></pre></div>



<h4 class="wp-block-heading"><span id="toc16">GROUP BY句</span></h4>



<p>ほぼ確実に出題されている気がします。SQLノータッチの方は答えづらいので、少しでも勉強している方はかなり簡単に回答できます。基本的にgroupごとに結果をまとめて取得するものです。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>（データ例）
テーブル名：Sample
class  point
a    |  10
a    |  20
b    |  30
a    |  30
b    |  30

select class,avg(point) from sample group by class;
------
a 20
b 30
------</code></pre></div>



<p>ちなみにgroup byしたデータを絞る場合はwhereでなく、「having」を使う。これも良く出る。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>（データ例）
テーブル名：Sample
class  point
a    |  10
a    |  20
b    |  30
a    |  30
b    |  30

select class,avg(point) from sample group by class having point &gt; 20;
------
b 30
------</code></pre></div>



<p>最後に、group byを実行するとselect分で出力できる項目にはgroup by でグルーピングした項目と計算系（sumやavg、countなど）のみです。このルールで午前午後かなりの問題が解けます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>（データ例）
テーブル名：Sample
class  point teacher
a    |  10  |  tanaka
a    |  20  |  tanaka
b    |  30  |  sato
a    |  30  |  tanaka
b    |  30  |  sato

select class,avg(point),teacher from sample group by class,teacher having point &gt; 20;
------
b 30 sato
------</code></pre></div>



<p>上記のように先生を結果に出力したい場合は、group by句にそのカラムも追加する必要があります。</p>



<p>group by長くなりましたがかなり重要。</p>



<h4 class="wp-block-heading"><span id="toc17">計算系SQL</span></h4>



<p>先ほどのgroup by句でも説明に使いましたがこちらもほぼ頻出です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select count(*) from ... -- データの個数
select max(項目) from ... -- 点数などの項目の一番上のデータを取得
select sum(*) from ... -- 点数などの項目合計を取得
select avg(*) from ... -- 点数などの項目の平均点を取得</code></pre></div>



<h4 class="wp-block-heading"><span id="toc18">in句</span></h4>



<p>こちらもほぼ頻出。条件の中にデータが含まれているかの条件句です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select count(*) from テーブル where 点数 in (0,1,2,3) -- 0,1,2,3の中に含まれている点数のデータが抽出される</code></pre></div>



<h4 class="wp-block-heading"><span id="toc19">exists句</span></h4>



<p>こちらもほぼ頻出。条件の中にデータが存在しているかの条件句です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select count(*) from テーブル where exists 点数 &lt; 30 -- 30以下の点数のデータ抽出される</code></pre></div>



<h4 class="wp-block-heading"><span id="toc20">副問い合わせ（サブクエリ）</span></h4>



<p>こちらも必ず出ます。かっこで囲ってSELECT文の結果を使います。みた方が早いです。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>-- 通常のselect文
select id, name from テーブル where id in (0,1,2) ;
-- サブクエリを含むselect文（上記とやっていることは同じだがin句の中身をselect文で取得している）
select id, name from テーブル where id in (select id from テーブル where id &lt; 3); 

-- 通常のinsert文
insert into テーブル (id, name) values (1, &#39;aaa&#39;);
-- サブクエリを使用したinsert
insert into テーブル (id, name) values (select id, name from 取得元テーブル where id &lt; 100);</code></pre></div>



<h4 class="wp-block-heading"><span id="toc21">join句</span></h4>



<p>こちらも必ず出題されます。テーブルを結合します。結合条件が違うという差があります。</p>



<ul class="wp-block-list">
<li>inner join：内部結合</li>



<li>left join：外部結合</li>
</ul>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select id from テーブル1 inner join テーブル2 on テーブル1.cd = テーブル2.cd;

select id from テーブル1 left join テーブル2 on テーブル1.cd = テーブル2.cd;</code></pre></div>



<p></p>



<p>ここまでがかなり良く問われる頻出SQLです。</p>



<h3 class="wp-block-heading"><span id="toc22">頻出ではないがよく聞かれるSQL</span></h3>



<h4 class="wp-block-heading"><span id="toc23">カラム定義</span></h4>



<p>create文が出ることまあまああり、この辺りのカラム定義で制約をつけるSQLは知っておく方が良いです。主キー、一意制約、外部キー、not Null、デフォルト値セット、参照、自動採番をカラムに設定するCREATE文です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>CREATE TABLE SAMPLETABLE
(
  no int auto_increment
  id int PRIMARY KEY,
  name varchar(50) UNIQUE NOT NULL,
  tel varchar(12) default &#39;000-0000-0000&#39;
  FOREIGN KEY(refNo) REFERENCES anotherTable(refNo)
);</code></pre></div>



<h4 class="wp-block-heading"><span id="toc24">between句</span></h4>



<p>こちらもほぼ頻出。条件の間にデータが存在しているかの条件句です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select count(*) from テーブル where between 点数 40 and 50 -- 40点以上50点以下の点数のデータ</code></pre></div>



<h4 class="wp-block-heading"><span id="toc25">GRANT</span></h4>



<p>稀に聞かれます。GRANT文は、特定のユーザに表などのデータベースオブジェクトに対する権限を付与するSQL文です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>GRANT {権限3,権限2} ON テーブル TO ユーザ;
GRANT SELECT, UPDATE ON table1 TO user1;</code></pre></div>



<p>REVOKEで権限削除。使用方法はGRANTの部分を置き換えるのみです。</p>



<h3 class="wp-block-heading"><span id="toc26">念の為押さえておくべきSQL</span></h3>



<h4 class="wp-block-heading"><span id="toc27">CREATE ASSERTION</span></h4>



<p>こちらは午前の用語で出ていたような気がします。CREATE ASSERTION文は、スキーマ内の複数のテーブルに対して制約を適用するSQL文です。テーブルAの合計がテーブルB・Cの合計になるという制約をつけるSQL。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>CREATE ASSERTION totalCount
CHECK (SELECT COUNT(*) FROM TableA) = (SELECT COUNT(*) FROM TableB) + (SELECT COUNT(*) FROM TableB);</code></pre></div>



<h4 class="wp-block-heading"><span id="toc28">CASCADE</span></h4>



<p>こちらは午前の用語で出ていたような気がします。参照データの同時削除を行う。</p>



<p></p>



<h4 class="wp-block-heading"><span id="toc29">ALTER TABLE</span></h4>



<p>出ているのをみたことはないですが、念の為。カラムの追加・更新・削除などで使用。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>-- 単一カラム追加
ALTER TABLE sample ADD COLUMN addCol VARCHAR(8);
-- 複数の場合
ALTER TABLE sample ADD (addCol1 VARCHAR(8),addCol2 VARCHAR(8));

-- カラムの定義変更（複数は上記と同じ要領）
ALTER TABLE sample MODIFY COLUMN addCol VARCHAR(8);

-- カラム削除（複数は上記と同じ要領）
ALTER TABLE sample DROP COLUMN address;</code></pre></div>



<p>以上で今回の記事は終了です。他にも応用情報関連の記事を記載しているので是非参考にしてみてください。</p>The post <a href="https://tomoblog.net/programing/oyozyoho-database-sql-list/">【応用情報】午後試験データベース分野の頻出SQLまとめ。</a> first appeared on <a href="https://tomoblog.net">ともぶろぐ</a>.]]></content:encoded>
					
					<wfw:commentRss>https://tomoblog.net/programing/oyozyoho-database-sql-list/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【AWS】ソリューションアーキテクトアソシエイト用語まとめ。</title>
		<link>https://tomoblog.net/programing/aws/solution-architect-associate/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=solution-architect-associate</link>
					<comments>https://tomoblog.net/programing/aws/solution-architect-associate/#respond</comments>
		
		<dc:creator><![CDATA[tomo]]></dc:creator>
		<pubDate>Sat, 04 Nov 2023 03:20:59 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<guid isPermaLink="false">https://tomoblog.net/?p=8443</guid>

					<description><![CDATA[<p>今回の記事はAWS認定資格のソリューションアーキテクトアソシエイト資格の用語まとめ記事です。ソリューションアーキテクトアソシエイト資格はクラウドサービスの機能ではなくサービスを使った設計に関して考える必要があります。用語 [&#8230;]</p>
The post <a href="https://tomoblog.net/programing/aws/solution-architect-associate/">【AWS】ソリューションアーキテクトアソシエイト用語まとめ。</a> first appeared on <a href="https://tomoblog.net">ともぶろぐ</a>.]]></description>
										<content:encoded><![CDATA[<p>今回の記事はAWS認定資格のソリューションアーキテクトアソシエイト資格の用語まとめ記事です。ソリューションアーキテクトアソシエイト資格はクラウドサービスの機能ではなくサービスを使った設計に関して考える必要があります。用語に関してはテストに出やすい機能や注意点をまとめたので、資格受験を考えている方は是非参考にしてください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-12" checked><label class="toc-title" for="toc-checkbox-12">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ソリューションアーキテクトアソシエイト出題範囲</a></li><li><a href="#toc2" tabindex="0">ソリューションアーキテクトアソシエイト資格用語まとめ</a><ol><li><a href="#toc3" tabindex="0">AWSサービスについて</a></li><li><a href="#toc4" tabindex="0">AWS Well-Architected フレームワーク</a></li><li><a href="#toc5" tabindex="0">AZ</a></li><li><a href="#toc6" tabindex="0">エッジロケーション</a></li><li><a href="#toc7" tabindex="0">VPC</a><ol><li><a href="#toc8" tabindex="0">VPCピアリング</a></li><li><a href="#toc9" tabindex="0">VPCのAZ配置について</a></li><li><a href="#toc10" tabindex="0">ACLについて</a></li><li><a href="#toc11" tabindex="0">セキュリティグループについて</a></li><li><a href="#toc12" tabindex="0">VPCの上限</a></li><li><a href="#toc13" tabindex="0">セキュリティグループとネットワークACLの違い</a></li><li><a href="#toc14" tabindex="0">NATゲートウェイ</a></li><li><a href="#toc15" tabindex="0">トラフィックミラーリング</a></li><li><a href="#toc16" tabindex="0">Elastic Network Interface（ENI）</a></li><li><a href="#toc17" tabindex="0">AWS Network Firewall</a></li><li><a href="#toc18" tabindex="0">DNS hostnamesオプション</a></li><li><a href="#toc19" tabindex="0">AWS WAF</a></li></ol></li><li><a href="#toc20" tabindex="0">EC2</a><ol><li><a href="#toc21" tabindex="0">セキュリティグループ変更の適用</a></li><li><a href="#toc22" tabindex="0">インスタンスの種類</a></li><li><a href="#toc23" tabindex="0">インスタンスの契約関連</a></li><li><a href="#toc24" tabindex="0">オンデマンドキャパシティー予約</a></li><li><a href="#toc25" tabindex="0">コンバーティブル</a></li><li><a href="#toc26" tabindex="0">ステップスケーリングポリシー</a></li><li><a href="#toc27" tabindex="0">スポットフリート</a></li><li><a href="#toc28" tabindex="0">EC2フリート</a></li><li><a href="#toc29" tabindex="0">EC2のバッチ処理分散</a></li><li><a href="#toc30" tabindex="0">Load Balancer</a></li><li><a href="#toc31" tabindex="0">ALBによるHTTPからHTTPSリダイレクト</a></li><li><a href="#toc32" tabindex="0">ELBのConnection Draining</a></li><li><a href="#toc33" tabindex="0">ELBを利用せずに高可用性とフォールトトレランスを担保</a></li><li><a href="#toc34" tabindex="0">NLBでのフェイルオーバー</a></li><li><a href="#toc35" tabindex="0">EC2の付与できるタグ条件</a></li><li><a href="#toc36" tabindex="0">EC2にアタッチできるストレージ</a></li><li><a href="#toc37" tabindex="0">プレイスメントグループ</a></li><li><a href="#toc38" tabindex="0">DeleteOnTermination 属性</a></li><li><a href="#toc39" tabindex="0">IPフローティング</a></li><li><a href="#toc40" tabindex="0">VPCフローログ</a></li><li><a href="#toc41" tabindex="0">AMI</a></li><li><a href="#toc42" tabindex="0">AMIイメージを別アカウントに共有</a></li></ol></li><li><a href="#toc43" tabindex="0">AutoScaling</a><ol><li><a href="#toc44" tabindex="0">スケールの種類</a></li><li><a href="#toc45" tabindex="0">複数AZでのインスタンススケールアップ</a></li><li><a href="#toc46" tabindex="0">EC2インスタンスのスケールイン</a></li><li><a href="#toc47" tabindex="0">インスタンスのスケールアウト</a></li><li><a href="#toc48" tabindex="0">スケーリングクールダウン</a></li><li><a href="#toc49" tabindex="0">ヘルスチェック</a></li><li><a href="#toc50" tabindex="0">AutoScalingの範囲</a></li><li><a href="#toc51" tabindex="0">AutoScalingの対応限界時間</a></li><li><a href="#toc52" tabindex="0">IPアドレス</a></li><li><a href="#toc53" tabindex="0">トリガーの制限</a></li><li><a href="#toc54" tabindex="0">Desired capacity</a></li><li><a href="#toc55" tabindex="0">Amazon ECSクラスターにスケーリングを設定</a></li><li><a href="#toc56" tabindex="0">インスタンスのウォームアップ</a></li><li><a href="#toc57" tabindex="0">DB系のスケールアップ</a></li></ol></li><li><a href="#toc58" tabindex="0">S3</a><ol><li><a href="#toc59" tabindex="0">ストレージクラス</a></li><li><a href="#toc60" tabindex="0">ボールトロック</a></li><li><a href="#toc61" tabindex="0">S3のバージョニング機能</a></li><li><a href="#toc62" tabindex="0">S3のデータ自動保存</a></li><li><a href="#toc63" tabindex="0">S3のライフサイクルポリシー</a></li><li><a href="#toc64" tabindex="0">S3のCRR</a></li><li><a href="#toc65" tabindex="0">S3のCORS</a></li><li><a href="#toc66" tabindex="0">S3のエンドポイント接続</a></li><li><a href="#toc67" tabindex="0">S3の容量</a></li><li><a href="#toc68" tabindex="0">S3のマウント</a></li><li><a href="#toc69" tabindex="0">データの一貫性</a></li><li><a href="#toc70" tabindex="0">Application Load Balancerのアクセスログ</a></li><li><a href="#toc71" tabindex="0">S3 Transfer Acceleration</a></li><li><a href="#toc72" tabindex="0">ゲートウェイエンドポイントとの接続</a></li><li><a href="#toc73" tabindex="0">S3バケットの更新・削除をできないようにする方法</a></li><li><a href="#toc74" tabindex="0">AWS PrivateLink for Amazon S3</a></li><li><a href="#toc75" tabindex="0">Amazon S3 Select</a></li><li><a href="#toc76" tabindex="0">オブジェクトロックの種類</a></li><li><a href="#toc77" tabindex="0">暗号化データ</a></li><li><a href="#toc78" tabindex="0">リクエスタ支払い機能</a></li><li><a href="#toc79" tabindex="0">S3バケットの最適ストレージの見つけ方</a></li><li><a href="#toc80" tabindex="0">静的WEBホスティング</a></li><li><a href="#toc81" tabindex="0">Glacierのデータ移行</a></li><li><a href="#toc82" tabindex="0">S3 インテリジェント階層化</a></li><li><a href="#toc83" tabindex="0">静的ウェブサイトの表示</a></li><li><a href="#toc84" tabindex="0">S3でCloudFrontを利用する場合</a></li><li><a href="#toc85" tabindex="0">AWS Lake Formation</a></li><li><a href="#toc86" tabindex="0">パブリックアクセス設定機能</a></li></ol></li><li><a href="#toc87" tabindex="0">AWS Lambda</a><ol><li><a href="#toc88" tabindex="0">関数のエラー</a></li><li><a href="#toc89" tabindex="0">同時実行処理の限界</a></li><li><a href="#toc90" tabindex="0">利用可能プログラミング言語</a></li><li><a href="#toc91" tabindex="0">Event Bridgeとの連携</a></li><li><a href="#toc92" tabindex="0">Step Functionとの連携</a></li><li><a href="#toc93" tabindex="0">SQSとの連携</a></li><li><a href="#toc94" tabindex="0">コスト</a></li><li><a href="#toc95" tabindex="0">エフェメラルストレージ</a></li><li><a href="#toc96" tabindex="0">Lambda関数の最大呼び出し時間</a></li><li><a href="#toc97" tabindex="0">Lambdaが向いていない処理</a></li><li><a href="#toc98" tabindex="0">Lambda Layer</a></li><li><a href="#toc99" tabindex="0">Lambdaエッジ</a></li><li><a href="#toc100" tabindex="0">Invocation</a></li><li><a href="#toc101" tabindex="0">スケジュール設定</a></li></ol></li><li><a href="#toc102" tabindex="0">Amazon EBS</a><ol><li><a href="#toc103" tabindex="0">EBSをインスタンスにアタッチして使用する流れ</a></li><li><a href="#toc104" tabindex="0">Amazon EBS ボリュームタイプ</a></li><li><a href="#toc105" tabindex="0">Amazon EBSとAmazon EFSの違い</a></li><li><a href="#toc106" tabindex="0">EBSとインスタンスストアの違い</a></li><li><a href="#toc107" tabindex="0">バックアップ</a></li><li><a href="#toc108" tabindex="0">EBSボリュームの暗号化</a></li><li><a href="#toc109" tabindex="0">共有</a></li><li><a href="#toc110" tabindex="0">EC2の休止状態との関係</a></li><li><a href="#toc111" tabindex="0">スナップショット</a></li><li><a href="#toc112" tabindex="0">RAID0構成</a></li><li><a href="#toc113" tabindex="0">RAID1構成</a></li><li><a href="#toc114" tabindex="0">課金</a></li><li><a href="#toc115" tabindex="0">マルチアタッチ機能</a></li></ol></li><li><a href="#toc116" tabindex="0">Amazon SNS</a></li><li><a href="#toc117" tabindex="0">Dynamo DB</a><ol><li><a href="#toc118" tabindex="0">Dynamo DBの自動保存</a></li><li><a href="#toc119" tabindex="0">セッション管理</a></li><li><a href="#toc120" tabindex="0">ゲートウェイエンドポイントとの接続</a></li><li><a href="#toc121" tabindex="0">TTL</a></li><li><a href="#toc122" tabindex="0">DynamoDB Streams&nbsp;</a></li><li><a href="#toc123" tabindex="0">異なるリージョン間でのテーブル同期</a></li><li><a href="#toc124" tabindex="0">DynamoDBグローバルセカンダリインデックス</a></li><li><a href="#toc125" tabindex="0">DynamoDB Accelerator（DAX）</a></li><li><a href="#toc126" tabindex="0">AWS Data Pipelineとの連携</a></li><li><a href="#toc127" tabindex="0">AppSyncとの連携</a></li><li><a href="#toc128" tabindex="0">ポイントインタイムリカバリ</a></li><li><a href="#toc129" tabindex="0">整合性</a></li><li><a href="#toc130" tabindex="0">DynamoDBのキャパシティ増強</a></li></ol></li><li><a href="#toc131" tabindex="0">IAM</a><ol><li><a href="#toc132" tabindex="0">AWS CLIを利用する場合</a></li><li><a href="#toc133" tabindex="0">開発者が不必要な権限ロールを追加するのを防ぐ</a></li><li><a href="#toc134" tabindex="0">署名付きURLを利用するケース</a></li><li><a href="#toc135" tabindex="0">IAMデータベース認証</a></li><li><a href="#toc136" tabindex="0">AWS IAM Identity Center（旧SSO）</a></li><li><a href="#toc137" tabindex="0">Microsoft Active Directory</a></li><li><a href="#toc138" tabindex="0">AWS Organizations</a></li><li><a href="#toc139" tabindex="0">サードパーティソフトの権限</a></li><li><a href="#toc140" tabindex="0">AWS アクセスキー</a></li><li><a href="#toc141" tabindex="0">AWS STSとの違い</a></li><li><a href="#toc142" tabindex="0">SCPとの違い</a></li><li><a href="#toc143" tabindex="0">ROA</a></li><li><a href="#toc144" tabindex="0">IAM Access Analyzer</a></li></ol></li><li><a href="#toc145" tabindex="0">Elastic IP</a><ol><li><a href="#toc146" tabindex="0">EIPの課金条件</a></li><li><a href="#toc147" tabindex="0">Elastic IPの上限</a></li></ol></li><li><a href="#toc148" tabindex="0">Amazon RDS</a><ol><li><a href="#toc149" tabindex="0">バックアップ</a></li><li><a href="#toc150" tabindex="0">マルチAZ</a></li><li><a href="#toc151" tabindex="0">リードレプリカ</a></li><li><a href="#toc152" tabindex="0">Amazon RDSからデータ自動削除</a></li><li><a href="#toc153" tabindex="0">Amazon RDS Proxy</a></li><li><a href="#toc154" tabindex="0">ストレージエンジン</a></li><li><a href="#toc155" tabindex="0">クエリ処理高速化</a></li><li><a href="#toc156" tabindex="0">ランダムI/O遅延</a></li><li><a href="#toc157" tabindex="0">拡張モニタリング</a></li><li><a href="#toc158" tabindex="0">Amazon RDSイベント機能</a></li></ol></li><li><a href="#toc159" tabindex="0">Amazon Aurora</a><ol><li><a href="#toc160" tabindex="0">Aurora Serverless</a></li><li><a href="#toc161" tabindex="0">RDSとの差</a></li><li><a href="#toc162" tabindex="0">可用性</a></li><li><a href="#toc163" tabindex="0">フェイルオーバー機能</a></li></ol></li><li><a href="#toc164" tabindex="0">Amazon ElasticCache</a></li><li><a href="#toc165" tabindex="0">Amazon SQS</a><ol><li><a href="#toc166" tabindex="0">キュータイプ</a></li><li><a href="#toc167" tabindex="0">キューの優先順付</a></li><li><a href="#toc168" tabindex="0">SQSによるスケーリング</a></li><li><a href="#toc169" tabindex="0">キューの保存期間</a></li><li><a href="#toc170" tabindex="0">可視性タイムアウト</a></li><li><a href="#toc171" tabindex="0">メッセージ重複排除ID</a></li><li><a href="#toc172" tabindex="0">ポーリング機能</a></li><li><a href="#toc173" tabindex="0">デッドレターキュー</a></li><li><a href="#toc174" tabindex="0">キューサイズ</a></li></ol></li><li><a href="#toc175" tabindex="0">Amazon kinesis</a><ol><li><a href="#toc176" tabindex="0">Kinesisの種類</a></li><li><a href="#toc177" tabindex="0">Kinesis Dataについて</a></li><li><a href="#toc178" tabindex="0">リシャーディング</a></li><li><a href="#toc179" tabindex="0">appstreamとの違い</a></li></ol></li><li><a href="#toc180" tabindex="0">AWS CloudFormation</a><ol><li><a href="#toc181" tabindex="0">CloudFormation記載内容</a></li><li><a href="#toc182" tabindex="0">AWS SAMとの連携</a></li><li><a href="#toc183" tabindex="0">費用</a></li><li><a href="#toc184" tabindex="0">スタックセット</a></li><li><a href="#toc185" tabindex="0">ドリフト</a></li></ol></li><li><a href="#toc186" tabindex="0">Cloudwatch</a><ol><li><a href="#toc187" tabindex="0">標準メトリクス</a></li><li><a href="#toc188" tabindex="0">カスタムメトリクス</a></li><li><a href="#toc189" tabindex="0">検知・通知機能</a></li><li><a href="#toc190" tabindex="0">ログ機能</a></li><li><a href="#toc191" tabindex="0">共有リンク</a></li></ol></li><li><a href="#toc192" tabindex="0">Amazon CloudFront</a><ol><li><a href="#toc193" tabindex="0">Auto Scalingとの違い</a></li><li><a href="#toc194" tabindex="0">国単位のサイトアクセスの遮断</a></li><li><a href="#toc195" tabindex="0">オリジンサーバへのアクセスが増える原因</a></li><li><a href="#toc196" tabindex="0">CloudFrontの署名付きCookies機能</a></li><li><a href="#toc197" tabindex="0">DDoS攻撃対応</a></li><li><a href="#toc198" tabindex="0">IP遮断</a></li><li><a href="#toc199" tabindex="0">CloudFrontとビューア間のセキュア通信</a></li><li><a href="#toc200" tabindex="0">CloudFrontとオリジン間のセキュア通信</a></li></ol></li><li><a href="#toc201" tabindex="0">Amazon Route53</a><ol><li><a href="#toc202" tabindex="0">レコードの種類</a></li><li><a href="#toc203" tabindex="0">ルーティングポリシー</a></li><li><a href="#toc204" tabindex="0">フェイルオーバシステム構築</a></li><li><a href="#toc205" tabindex="0">RDSのフェイルオーバシステム</a></li><li><a href="#toc206" tabindex="0">DDoS攻撃への対応</a></li></ol></li><li><a href="#toc207" tabindex="0">Amazon Athena</a><ol><li><a href="#toc208" tabindex="0">料金</a></li></ol></li><li><a href="#toc209" tabindex="0">AWS Data Pipeline</a></li><li><a href="#toc210" tabindex="0">AWS Step Functions</a></li><li><a href="#toc211" tabindex="0">Amazon DLM（Data Lifecycle Manager）</a></li><li><a href="#toc212" tabindex="0">ECS</a><ol><li><a href="#toc213" tabindex="0">AWS Fargate</a></li></ol></li><li><a href="#toc214" tabindex="0">Snowball</a><ol><li><a href="#toc215" tabindex="0">デバイスの種類</a></li></ol></li><li><a href="#toc216" tabindex="0">AWS VPN</a></li><li><a href="#toc217" tabindex="0">Acceleratedサイト間VPN</a></li><li><a href="#toc218" tabindex="0">Amazon Redshift</a><ol><li><a href="#toc219" tabindex="0">RedShift Spectrum</a></li><li><a href="#toc220" tabindex="0">拡張VPCルーティング</a></li><li><a href="#toc221" tabindex="0">Work Load Management（WLM）</a></li></ol></li><li><a href="#toc222" tabindex="0">Amazon EMR&nbsp;</a></li><li><a href="#toc223" tabindex="0">AWS Secrets Manager </a></li><li><a href="#toc224" tabindex="0">GuardDuty</a></li><li><a href="#toc225" tabindex="0">AWS Shield</a></li><li><a href="#toc226" tabindex="0">AWS Glue</a></li><li><a href="#toc227" tabindex="0">AWS API Gateway</a><ol><li><a href="#toc228" tabindex="0">処理性能を向上</a></li></ol></li><li><a href="#toc229" tabindex="0">AWS Transit Gateway</a><ol><li><a href="#toc230" tabindex="0">VPN接続スループット向上</a></li><li><a href="#toc231" tabindex="0">マルチキャスト</a></li></ol></li><li><a href="#toc232" tabindex="0">AWS Strage Gateway</a><ol><li><a href="#toc233" tabindex="0">ボリュームタイプ</a></li><li><a href="#toc234" tabindex="0">データの暗号化</a></li></ol></li><li><a href="#toc235" tabindex="0">AWS Database Migration Service</a></li><li><a href="#toc236" tabindex="0">AWS Server Migration Service</a></li><li><a href="#toc237" tabindex="0">AWS DataSync </a></li><li><a href="#toc238" tabindex="0">AWS Transfer Family</a></li><li><a href="#toc239" tabindex="0">Direct Connect</a></li><li><a href="#toc240" tabindex="0">AWS Import/Export</a></li><li><a href="#toc241" tabindex="0">VM Import/Export</a></li><li><a href="#toc242" tabindex="0">CodePipeline</a></li><li><a href="#toc243" tabindex="0">CloudHSM</a></li><li><a href="#toc244" tabindex="0">Amazon WorkSpaces</a></li><li><a href="#toc245" tabindex="0">AWS Outposts</a></li><li><a href="#toc246" tabindex="0">Amazon CloudSearch</a></li><li><a href="#toc247" tabindex="0">Amazon OpenSearch Service</a></li><li><a href="#toc248" tabindex="0">AWSサービスの上限関連</a></li><li><a href="#toc249" tabindex="0">その他アーキテクト概念系</a><ol><li><a href="#toc250" tabindex="0">Design for Failure</a></li><li><a href="#toc251" tabindex="0">メッシュアーキテクチャ</a></li><li><a href="#toc252" tabindex="0">ハブアンドスポークシステム</a></li><li><a href="#toc253" tabindex="0">SDK</a></li><li><a href="#toc254" tabindex="0">プロキシサーバ</a></li><li><a href="#toc255" tabindex="0">CIDR</a></li><li><a href="#toc256" tabindex="0">シャーディング</a></li><li><a href="#toc257" tabindex="0">ingress</a></li><li><a href="#toc258" tabindex="0">egress</a></li></ol></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ソリューションアーキテクトアソシエイト出題範囲</span></h2>



<p>ソリューションアーキテクトアソシエイトの出題範囲は下記です。</p>



<ul class="wp-block-list">
<li>セキュアなアーキテクチャの設計 30%</li>



<li>弾力性に優れたアーキテクチャの設計 26%</li>



<li>高パフォーマンスなアーキテクチャの設計 24%</li>



<li>コストを最適化したアーキテクチャの設計 20%</li>
</ul>



<p>クラウドプラクティショナーと違い、サービスを利用して顧客要望を満たす設計ができるかという観点の問題が出題されます。</p>



<p>そのため、各サービスに感してはクラウドプラクティショナーの用語と変わりません。それは別記事でまとめていますので、サービスの機能を抑えられているか不安な方はこちらの記事を参照ください。</p>



<p><a target="_blank" href="https://tomoblog.net/programing/aws/cloud-practitioner/" title="">【AWS】クラウドプラクティショナー用語まとめ。</a><br><a target="_blank" href="https://tomoblog.net/programing/aws/cloud-practitioner-practice/" title="">【AWS】クラウドプラクティショナー無料試験問題。</a></p>



<p>クラウドプラクティショナーの知識を前提にソリューションアーキテクトで問われるポイントを今回はまとめたので順番に紹介していきます。</p>



<h2 class="wp-block-heading"><span id="toc2">ソリューションアーキテクトアソシエイト資格用語まとめ</span></h2>



<h3 class="wp-block-heading"><span id="toc3">AWSサービスについて</span></h3>



<p>AWSサービスには3種類あります。</p>



<ul class="wp-block-list">
<li>アベイラビリティゾーンサービス：EC2/RDS/サブネットなど</li>



<li>リージョンサービス：VPC/AutoScaling/DynamoDBなど</li>



<li>グローバルサービス：Route53/Cloud Front/S3(データはリージョンに保存)など</li>
</ul>



<h3 class="wp-block-heading"><span id="toc4">AWS Well-Architected フレームワーク</span></h3>



<p>AWS Well-Architected フレームワークは、以下の６つの柱で構成されています。</p>



<p>・運用上の優秀性<br>・セキュリティ<br>・信頼性<br>・パフォーマンス効率<br>・コスト最適化<br>・持続可能性</p>



<p>可用性などは含まれない。</p>



<h3 class="wp-block-heading"><span id="toc5">AZ</span></h3>



<p>AZはデータセンターの集まり。リージョン内で物理的に区分され独立しています。AZは物理的に分離されているため、火災、竜巻、洪水などの極端な災害は単一AZのみに影響する。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc6">エッジロケーション</span></h3>



<p>低レイテンシーを達成するためのキャッシュコンテンツを配信するための地理的ロケーションのこと。ファイル圧縮処理などが可能。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc7">VPC</span></h3>



<h4 class="wp-block-heading"><span id="toc8">VPCピアリング</span></h4>



<p>VPCピアリングは、異なるVPCからインターネットを経由せずに同じネットワークにいるように通信ができるサービス。</p>



<h4 class="wp-block-heading"><span id="toc9">VPCのAZ配置について</span></h4>



<p>VPCは複数のAZに配置可能。</p>



<h4 class="wp-block-heading"><span id="toc10">ACLについて</span></h4>



<p>サブネット間の制御として使われます。ネットワークACLはインバウンド（中に入ってくる）設定とアウトバウンド（外に出ていく）の両方を設定する必要がある。</p>



<p><span style="text-decoration: underline;">デフォルトの設定</span></p>



<p>インバウンド　：すべて許可<br>アウトバウンド：すべて許可</p>



<p>SSH接続をする場合、ポートは22、インバウンドのため「Egress：false」に設定されている必要があります。特定のIPのみの場合は、サブネットは「/32」にする。アウトバウンドを広範囲のPCに設定する場合は、ポート「1024~65535」に設定する。HTTPをセキュリティグループで許可は80番ポートで「0.0.0.0/0」。</p>



<p>ネットワークACLルールの評価方法は、低い値から高い値に順番に評価され、低い値が優先される。</p>



<h4 class="wp-block-heading"><span id="toc11">セキュリティグループについて</span></h4>



<p>EC2インスタンスなどに適用するファイアウォール機能で、主にVPCリソースのトラフィックを制御するのに使われます。セキュリティグループにはCIDRを指定してIPアドレス範囲を設定するか、別のセキュリティグループIDも設定可能です。</p>



<p><span style="text-decoration: underline;">デフォルトの設定</span></p>



<p>インバウンド　：すべて拒否<br>アウトバウンド：すべて許可</p>



<p>使い方としては、DBなどに接続できるIPアドレスやEC2インスタンスを個別に指定するために使用できる。プロトコル(TCPやUDP)、ポート番号なども指定可。セキュリティグループの設定は即座に反映。</p>



<h4 class="wp-block-heading"><span id="toc12">VPCの上限</span></h4>



<p>1リージョンあたり5VPC。申請フォームによりAWSに申請すれば100まで上げることが可能。</p>



<h4 class="wp-block-heading"><span id="toc13">セキュリティグループとネットワークACLの違い</span></h4>



<p>セキュリティグループはインスタンス単位で設定するファイアウォールで、ネットワークACLはサブネット単位で設定するファイアウォールです。それぞれ、アウトバウンド（外に出る）とインバウンド（中に入ってくる）のルールを設定して利用します。</p>



<p>セキュリティグループはステートフル（ルールで許可された通信の戻りの通信も自動的に許可）、ネットワークACLはステートレス（アウトバウンド/インバウンドそれぞれで、ルール設定が必要）。</p>



<h4 class="wp-block-heading"><span id="toc14">NATゲートウェイ</span></h4>



<p>VPC内プライベートサブネットにあるEC2インスタンスからセキュアなインターネットへのアクセスが必要。その場合は、このNATゲートウェイを使用することで実現できる。プライベートサブネットのルートテーブルを更新して、インターネットトラフィックをNATゲートウェイに向ける必要あり。</p>



<h4 class="wp-block-heading"><span id="toc15">トラフィックミラーリング</span></h4>



<p>ミラー対象に指定したENI（Elastic Network Interface）を通るトラフィックの中身をミラーリング。ミラーリングしたパケットを、別のENIやNLB、GWLBに対して転送することができるので、パケットをモニタリングすることが可能。</p>



<h4 class="wp-block-heading"><span id="toc16">Elastic Network Interface（ENI）</span></h4>



<p>仮想ネットワーク。ENIはインスタンスにアタッチされているため、デタッチして別のインスタンスに付け替え可能。使い方としては、実行中のインスタンスへのアタッチ（ホットアタッチ）、停止中のインスタンスへのアタッチ（ウォームアタッチ）や起動中のインスタンスへのアタッチ（コールドアタッチ）などとしてフェールオーバ時に使用できます。</p>



<h4 class="wp-block-heading"><span id="toc17">AWS Network Firewall</span></h4>



<p>VPC内に配置するファイアウォール。インターネットやVPC間との通信を検査及び制御できる。</p>



<h4 class="wp-block-heading"><span id="toc18">DNS hostnamesオプション</span></h4>



<p>パブリックサブネットでEC2インスタンスを起動した際にインスタンスがDNS名を受け取らない場合、DNS hostnamesオプションを有効化します。</p>



<h4 class="wp-block-heading"><span id="toc19">AWS WAF</span></h4>



<p>Webファイアウォールは条件に基づきWebリクエストを許可・ブロック・監視するルールを設定し、Webアプリを攻撃から保護するのを助けるWebアプリファイアウォールです。</p>



<p>下記などがブロック例</p>



<ul class="wp-block-list">
<li>リクエストの IP アドレスの送信元</li>



<li>リクエストの送信元の国</li>



<li>リクエストの一部に含まれる文字列一致または正規表現 (regex) 一致</li>



<li>リクエストの特定の部分のサイズ</li>



<li>悪意のある SQL コードまたはスクリプトの検出</li>
</ul>



<p>CloudFrontに使用する場合は、Referer制限をすることで、拒否ルールや許可ルールを設定可能。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc20">EC2</span></h3>



<p>アンマネージドサービス。停止から起動までの時間は数分。</p>



<h4 class="wp-block-heading"><span id="toc21">セキュリティグループ変更の適用</span></h4>



<p>変更の適用や新規設定は全EC2インスタンスに即座に反映。</p>



<h4 class="wp-block-heading"><span id="toc22">インスタンスの種類</span></h4>



<ul class="wp-block-list">
<li>汎用：A1・M5・T3<br>バランスが取れたインスタンス。クラスタープレイスメントグループによる設定可能。</li>



<li>コンピュータ最適化：C5・C6g<br>高パフォーマンスが必要なアプリ用</li>



<li>メモリ最適化：X1・R5<br>メモリ内の大きいデータセットを処理するのに最適</li>



<li>高速コンピューティング：P3・G4<br>高い計算能力</li>



<li>ストレージ最適化：ix/dx/hx<br>ローカルストレージの大規模データセットに対する高い読み取り能力</li>
</ul>



<h4 class="wp-block-heading"><span id="toc23">インスタンスの契約関連</span></h4>



<ul class="wp-block-list">
<li>オンデマンド<br>時間課金制</li>



<li>リザーブド<br>1〜3年間などの年単位での契約を行う場合に利用。1時間程度などの利用はできない。一度契約するとインスタンスタイプやOSを切り替えることはできない。毎日ずっと利用するサーバー向けでなければ、逆に費用が高くなってしまいます。</li>



<li>スポット<br>途切れてもいい場合に利用。安い。</li>
</ul>



<h4 class="wp-block-heading"><span id="toc24">オンデマンドキャパシティー予約</span></h4>



<p>特定AZで任意時間インスタンスのキャパシティ予約可能。その間、対象インスタンスの起動が保証。</p>



<h4 class="wp-block-heading"><span id="toc25">コンバーティブル</span></h4>



<p>インスタンスの予約期間中にインスタンスファミリー・OS・テナンシー・支払オプションの変更可能。</p>



<h4 class="wp-block-heading"><span id="toc26">ステップスケーリングポリシー</span></h4>



<p>スケーリングをCPU使用率などに応じて、複数の閾値を設定。段階的にインスタンス数を増加可能。</p>



<h4 class="wp-block-heading"><span id="toc27">スポットフリート</span></h4>



<p>インスタンスタイプや入札価格を指定し、自動で最安値のインスタンスを選択してスポットインスタンス数を調節して、リクエストを処理します。負荷に応じた増減が適切にできます。</p>



<h4 class="wp-block-heading"><span id="toc28">EC2フリート</span></h4>



<p>オンデマンド・リザーブド・スポットインスタンスで構成されるインスタンスグループを作れる。それらの購入オプションを共有し、複数のAZにまたがり複数インスタンスタイプを起動可能。</p>



<h4 class="wp-block-heading"><span id="toc29">EC2のバッチ処理分散</span></h4>



<p>重い処理をバッチ処理として複数のEC2インスタンスに分散させる場合、Amazon SQSを使用する。</p>



<h4 class="wp-block-heading"><span id="toc30">Load Balancer</span></h4>



<p>LBは1つのリージョン内において複数のアベイラビリティゾーンにトラフィックを分散します。リージョン間はできません。</p>



<ul class="wp-block-list">
<li>Amazon ELB（Elastic Load Balancer）<br>EC2に対して、Webトラフィックなどの負荷分散。</li>



<li>Amazon ALB（Application Load Balancer）<br>アプリケーション層のロードバランシングに特化。</li>



<li>Amazon NLB（Network Load Balancer）<br>レイヤー4（トランスポート層）で動作し、TCP/UDP/TLSのトラフィック分散に向いている</li>
</ul>



<p>ELBでDBの利用率を下げるなどは無理。あくまでもEC2のみ。</p>



<h4 class="wp-block-heading"><span id="toc31">ALBによるHTTPからHTTPSリダイレクト</span></h4>



<p>ALBのリスナールールを使用して、HTTPリクエストをHTTPSにリダイレクトする設定をする。</p>



<h4 class="wp-block-heading"><span id="toc32">ELBのConnection Draining</span></h4>



<p>インスタンスをELB(CLB)から登録解除すると、処理中のリクエストが途絶え、アプリでエラーになる。Connection Drainingを利用すると処理中のリクエストが終わるまで一定期間待機するように設定できる。</p>



<h4 class="wp-block-heading"><span id="toc33">ELBを利用せずに高可用性とフォールトトレランスを担保</span></h4>



<p>インスタンスに仮想のElastic IPアドレスを付与し、EC2インスタンス自身の状態をチェックするカスタムスクリプトを使用します。インスタンス応答が停止している場合、スクリプトは、Elastic IPアドレスをスタンバイ側のEC2インスタンスに切り替えるなどで実現可能。</p>



<h4 class="wp-block-heading"><span id="toc34">NLBでのフェイルオーバー</span></h4>



<p>UDP接続を使用するVoIPサービスに対応するためには、ネットワークロードバランサ(NLB)が適切。NLBをAWS Global Acceleratorのエンドポイントとして使用することで、遅延が最も短いリージョンにユーザーをルーティングし、リージョン間の自動フェイルオーバーを実現可能です。</p>



<h4 class="wp-block-heading"><span id="toc35">EC2の付与できるタグ条件</span></h4>



<p>EC2インスタンスに付与できるタグの上限は50。キーの最大長はUnicode文字128文字。値の最大長は Unicode文字で256文字です。タグでは、大文字と小文字が区別されます。</p>



<p>このタグで開発用・本番用インスタンスを区別し、IAMのポリシーを利用して、開発者の利用範囲を区切ることも可能です。</p>



<h4 class="wp-block-heading"><span id="toc36">EC2にアタッチできるストレージ</span></h4>



<p>Amazon EBS(Elastic Block Store)とAmazon EFS(Amazon Elastic File System)。</p>



<p>EBSボリュームがインスタンスのルートデバイスである場合、ボリュームをデタッチする前に、インスタンスを停止する必要がある。</p>



<h4 class="wp-block-heading"><span id="toc37">プレイスメントグループ</span></h4>



<p>プレイスメントグループは、複数のインスタンスを論理的にグループ化して、パフォーマンスの向上・耐障害性を高める機能。</p>



<ul class="wp-block-list">
<li>クラスタープレイスメントグループ　単一AZ内でネットワーク性能の引き上げを行う</li>



<li>パーティションプレイスメントグループ　同一リージョン内でハードウェア障害対策</li>



<li>スプレッドプレイスメントグループ　同一リージョン内でハードウェア障害対策</li>
</ul>



<h4 class="wp-block-heading"><span id="toc38">DeleteOnTermination 属性</span></h4>



<p>Amazon EC2のインスタンスを終了する際、インスタンスに接続されていたEBS ボリュームを存続させるかを設定する値。デフォルトでは、インスタンスのルートボリュームのDeleteOnTermination属性は有効化されているため、インスタンス削除時にEBSボリュームも削除される。ルートボリューム以外の追加したボリュームタイプではDeleteOnTermination属性は非有効化されている。</p>



<h4 class="wp-block-heading"><span id="toc39">IPフローティング</span></h4>



<p>EC2インスタンスにELBやRoute53を構成していると、障害発生時には稼動系からElastic IPアドレスを外し、待機系インスタンスに割り当て直すことで瞬時にトラフィックの向け先を変更できます。ホスト名を待機系IPアドレスに向け直すと、DNS情報が伝播するまでに一定のダウンタイムが発生する可能性があります。これを防止するため、IPフローティングを利用してElastic IPアドレスをフローティングすることで即時に別のEC2インスタンスへとトラフィックを切り替えることができます。</p>



<h4 class="wp-block-heading"><span id="toc40">VPCフローログ</span></h4>



<p>インスタンスのネットワークインターフェースに対するVPCフローログを有効化することで、EC2インスタンスのネットワークインターフェイスを介して行き来するIPトラフィック情報をキャプチャ可能。</p>



<h4 class="wp-block-heading"><span id="toc41">AMI</span></h4>



<p>EC2インスタンスを起動するための必要情報がまとめられたテンプレートのようなもの。AMIは、仮想マシンのイメージであり、オペレーティングシステム（OS）やアプリケーションソフトウェア、起動許可などがパッケージ化されている。AMIを使用することで、同じ設定やソフトウェアが含まれた複数のインスタンスを簡単に作成できます。また、バックアップなどにも使用できる。</p>



<h4 class="wp-block-heading"><span id="toc42">AMIイメージを別アカウントに共有</span></h4>



<p>複数のアカウント間でAMIを共有するには、AMIを別のアカウントと共有するための許可設定が必要。そのためにAMIのLaunchPermissionプロパティを変更する必要がある。<br>また、AMIはAMS KMSで作成されたキーで暗号化されているため、第三者のアカウントでAMIを利用するためには、KMSのキーポリシーを変更する必要があります。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc43">AutoScaling</span></h3>



<p>リソースが逼迫している場合自動でスケールアウト（リソースを増やす）、余剰な場合はスケールイン（リソースを減らす）を行うサービス。<br>起動テンプレートを利用してスケーリングを行います。</p>



<h4 class="wp-block-heading"><span id="toc44">スケールの種類</span></h4>



<ul class="wp-block-list">
<li>ターゲットトラッキングポリシー<br>CPU平均使用率や平均ネット入力などの閾値を指定し、それを維持できる台数にインスタンスをスケール。</li>



<li>簡易スケーリングポリシー<br>動的スケーリングオプションの１つ。上限と下限の閾値を設定し、その閾値を超過した場合、スケーリングを実施。基本的にステップスケーリングポリシーの方が使われる。</li>



<li>ステップスケーリングポリシー<br>動的スケーリングオプションの１つです。上限と下限の閾値を複数設定し、その閾値に基づいて複数回にわたって段階的にスケーリング可能。細かく定義することができる。</li>



<li>スケジューリングポリシー<br>時間によりスケーリング。</li>
</ul>



<h4 class="wp-block-heading"><span id="toc45">複数AZでのインスタンススケールアップ</span></h4>



<p>複数AZを指定したAutoScalingグループを作成。それをELBターゲットグループに設定。複数AZにEC2インスタンスをスケーリングできる。ELBによって既存AZのインスタンスに異常があれば、ヘルスチェックで確認され、その後AutoScalingが停止したAZにあったEC2インスタンスの代わりに別AZにEC2インスタンスを起動できる。</p>



<h4 class="wp-block-heading"><span id="toc46">EC2インスタンスのスケールイン</span></h4>



<p>スケールアウトしたインスタンスをスケールインする場合、デフォルトでは下記の順で実行される。</p>



<ol class="wp-block-list">
<li>インスタンス数が最も多いAZを選択する。</li>



<li>AZのインスタンス数が同じ場合は、起動設定が古いインスタンスがあるAZを選択する。</li>



<li>起動設定が古いインスタンスが複数ある場合は、次の課金発生までの時間が最も短いインスタンスを選択する</li>



<li>次の課金発生までの時間が同じインスタンスが複数ある場合はランダムで選択する</li>
</ol>



<h4 class="wp-block-heading"><span id="toc47">インスタンスのスケールアウト</span></h4>



<p>複数のAZを跨いでスケールアウトすることができる。また、スケールアウトするEC2インスタンスの上限数を設定することができる。</p>



<h4 class="wp-block-heading"><span id="toc48">スケーリングクールダウン</span></h4>



<p>スケーリングクールダウンは、Auto Scalingが連続で実行されないようにするための新しいインスタンスが開始されるまでの待機時間。デフォルトでは300秒。<br>クールダウンをうまく設定できていない場合、CPU使用率が下がる前に次のインスタンス起動が始り、想定より多いインスタンスが起動してしまうことがある。スケーリングポリシーでスケーリング固有のクールダウンかAutoScalingグループ全体へ適用ができる。</p>



<h4 class="wp-block-heading"><span id="toc49">ヘルスチェック</span></h4>



<p>Auto Scalingは起動したインスタンスに対して定期的なヘルスチェックを実行し、インスタンスの状態を監視しています。このへルスチェックにはEC2タイプとELBタイプの2タイプがあります。</p>



<ul class="wp-block-list">
<li>EC2タイプ<br>EC2のステータスがrunning以外の場合、またはシステムステータスがimpairedの場合に、このインスタンスを異常と判断</li>



<li>ELBタイプ<br>インスタンスのステータスチェック、ELBのヘルスチェックからインスタンスの状態を判断</li>
</ul>



<h4 class="wp-block-heading"><span id="toc50">AutoScalingの範囲</span></h4>



<p>AutoScalingは別リージョンでは使用できない。</p>



<h4 class="wp-block-heading"><span id="toc51">AutoScalingの対応限界時間</span></h4>



<p>AutoScalingを設定しているEC2でミリ秒遅延には対応できない。</p>



<h4 class="wp-block-heading"><span id="toc52">IPアドレス</span></h4>



<p>インスタンス削減時に古い既存インスタンスが削除されると、IPアドレスが変更される可能性がある。</p>



<h4 class="wp-block-heading"><span id="toc53">トリガーの制限</span></h4>



<p>メモリ利用率をトリガーとした設定がデフォルトでは設定できない。CPU利用率に応じたスケーリングが適切。</p>



<h4 class="wp-block-heading"><span id="toc54">Desired capacity</span></h4>



<p>希望する容量はAuto Scalingによって現在起動するべきインスタンス数を規定するAuto Scalingグループ内の現在起動するべきインスタンス数の設定。これに従ってインスタンスが増減する。</p>



<h4 class="wp-block-heading"><span id="toc55">Amazon ECSクラスターにスケーリングを設定</span></h4>



<p>Auto Scaling構成としては、スケーリングポリシーを設定したAuto ScalingはECSクラスターにアタッチすることが必要です。その上で、ECSクラスターにALBをアタッチします。</p>



<h4 class="wp-block-heading"><span id="toc56">インスタンスのウォームアップ</span></h4>



<p>新規インスタンスのAuto Scalingのヘルスチェックが成功してInServiceになってから、Auto Scaling グループのメトリクス収集の対象になるまでの期間。</p>



<h4 class="wp-block-heading"><span id="toc57">DB系のスケールアップ</span></h4>



<p>性能に関してスケールアップはできないが、データベースのストレージに対して、スケールは可能。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc58">S3</span></h3>



<p>バケット形式のストレージ。デフォルトで保存データを暗号化。</p>



<h4 class="wp-block-heading"><span id="toc59">ストレージクラス</span></h4>



<p>コストはS3よりもGlacierの方が安い。Glacier Deep Archive&lt;Flexible Retrieval&lt;Instant Retrieval&lt;One Zone-IA&lt;Standard-IA&lt;Standardの順。</p>



<ul class="wp-block-list">
<li>Glacier Instant Retrieval<br>ミリ秒単位のアクセスが可能 アクセスはほとんどなし 他のGlacierよりも高い</li>



<li>Glacier Flexible Retrieval<br>通常データ検索で3～5時間、迅速取り出しモードで2～5分</li>



<li>Glacier Deep Archive<br>標準の取り出しで9時間以上〜12時間以内。7～10年以上保存が必要だがほぼ取り出しなしのデータ向け</li>



<li>Standard-IA<br>低頻度アクセス用ですが、読み込みはすぐ。アクセスが頻繁ではないデータ向け。</li>



<li>Standard</li>



<li>One Zone-IA<br>アクセスが頻繁ではないデータを単一AZに保存することによってコストを節約。読み込みはすぐ。<br>ログファイルのコピーを保存する典型例。即時にデータ取得可能。ただし、データ取得されないことを前提としているため、データ取得時には課金が発生する。</li>
</ul>



<h4 class="wp-block-heading"><span id="toc60">ボールトロック</span></h4>



<p>Glacierのいづれかのストレージクラスにデータを保存した際に、ボールトへのアクセス制御をポリシーとして設定し、編集できないようできる。</p>



<h4 class="wp-block-heading"><span id="toc61">S3のバージョニング機能</span></h4>



<p>ファイルを前のバージョンから復旧することが可能。S3は自動で複数のリージョンに保持され、クロスリージョンレプリケーションを備えており、高い可用性と耐久性を備えている。</p>



<h4 class="wp-block-heading"><span id="toc62">S3のデータ自動保存</span></h4>



<p>S3は保存されたデータは、複数のAZに保存される。</p>



<h4 class="wp-block-heading"><span id="toc63">S3のライフサイクルポリシー</span></h4>



<p>データを◯ヶ月間保管し、その後Glacierに移動や削除などを設定できる。</p>



<h4 class="wp-block-heading"><span id="toc64">S3のCRR</span></h4>



<p>CRRはCross-Region Replicationの略です。S3バケット間でオブジェクトを自動的に複製（レプリケーション）するための機能を提供します。東京リージョンのバケットのデータをオレゴンリージョンにコピーしたりなどです。追加費用は発生する。</p>



<h4 class="wp-block-heading"><span id="toc65">S3のCORS</span></h4>



<p>CORSはCross-Origin Resource Sharingの略です。ブラウザが異なるオリジン（ドメイン）のリソースにアクセスするためのスクリプトを許可します。例えば、東京リージョン内のサイトがオレゴンリージョンのS3バケットにアクセスして、画像をダウンロードするなどです。</p>



<h4 class="wp-block-heading"><span id="toc66">S3のエンドポイント接続</span></h4>



<p>S3にアクセスする際にS3をインターネットからは非公開として、EC2経由でエンドポイントを通してS3のデータに接続することで、EC2はインターネットを介さずにS3データを取得できる。</p>



<h4 class="wp-block-heading"><span id="toc67">S3の容量</span></h4>



<p>S3に保存できるデータの容量に上限はありません。S3コンソール画面からのアップロードする上限容量はあるが、AWS CLIなどを使うことで、その上限もなくなる。</p>



<h4 class="wp-block-heading"><span id="toc68">S3のマウント</span></h4>



<p>同時に複数のS3をマウントすることはできない</p>



<h4 class="wp-block-heading"><span id="toc69">データの一貫性</span></h4>



<p>新規データ追加後に更新を行うなど、読み取り後書き込みで一貫性を常に保障している。データ更新されても、すぐに反映されます。</p>



<h4 class="wp-block-heading"><span id="toc70">Application Load Balancerのアクセスログ</span></h4>



<p>ALBのアクセスログをS3に保存することができる。</p>



<h4 class="wp-block-heading"><span id="toc71">S3 Transfer Acceleration</span></h4>



<p>海外リージョンなど、送信元から遠く離れたS3へのデータ転送をAWSのエッジロケーションとネットワークプロトコルの最適で高速化するサービスです。世界中からアップロードが行われたり、大陸間で定期的にGBからTBなどの大きなデータを転送する場合に使用します。</p>



<h4 class="wp-block-heading"><span id="toc72">ゲートウェイエンドポイントとの接続</span></h4>



<p>VPCのルーティングテーブルを書き換えて、ゲートウェイ経由でサービスにアクセスできるので、インターネットを経由せずに操作ができる。</p>



<h4 class="wp-block-heading"><span id="toc73">S3バケットの更新・削除をできないようにする方法</span></h4>



<p>S3バケットにMFA Delete機能を適用。ユーザーによるデータ削除時にMFA入力を必須化して、誤った削除を防止する。または、Amazon S3バケットの初期設定でデータが削除されないようにオブジェクトロックを設定。（このロックは初期設定でのみ設定可能。オブジェクトロック設定は変更できない）</p>



<p>他にもIAMポリシーで削除権限を拒否するなどもある。</p>



<h4 class="wp-block-heading"><span id="toc74">AWS PrivateLink for Amazon S3</span></h4>



<p>S3はインターフェースエンドポイントに2021年対応しエンドポイント経由でVPCからS3バケットインターネットを経由せずにアクセス可能。</p>



<h4 class="wp-block-heading"><span id="toc75">Amazon S3 Select</span></h4>



<p>シンプルなSQLステートメントを使用してAmazon S3オブジェクトのコンテンツをフィルタリングし、必要なデータのサブセットのみを取得可能。Amazon S3が転送するデータ量を削減でき、データ取得に要するコストや待ち時間を改善できる。</p>



<h4 class="wp-block-heading"><span id="toc76">オブジェクトロックの種類</span></h4>



<ul class="wp-block-list">
<li>ガバナンスモード<br>バケット内のデータが一般ユーザーからは削除できないような設定</li>



<li>コンプライアンモード<br>管理者であってもAmazon S3バケット内のデータを削除することができなくなる。一般社員向きdはない</li>
</ul>



<h4 class="wp-block-heading"><span id="toc77">暗号化データ</span></h4>



<p>S3バケット内のデータの暗号化方法は2通り。暗号化方式はバケット生成時にSSE-S3・SSE-KMS・SSE-Cのいづれかを選択。</p>



<ul class="wp-block-list">
<li>S3のデフォルト暗号化<br>暗号の復元は自動。</li>



<li>KSMのカスタマーキー<br>カスタマーキーが必要。</li>
</ul>



<p>S3の暗号化を有効化するとログの暗号化も自動で実施される。</p>



<h4 class="wp-block-heading"><span id="toc78">リクエスタ支払い機能</span></h4>



<p>別リージョンからの利用と支払いに関しては、S3バケットのクロスアカウントアクセスを有効化し、バケットのリクエスタ支払い機能を有効化する。これで、別リージョン企業の有するAWSアカウントからのS3バケットへのアクセスを許可した上で、データ取得コストを別リージョン企業側に支払わせる。</p>



<h4 class="wp-block-heading"><span id="toc79">S3バケットの最適ストレージの見つけ方</span></h4>



<p>Amazon S3 分析のストレージクラス分析により、ストレージアクセスパターンを分析し、適切なデータを適切なストレージクラスに移行すべきタイミングを判断できる。</p>



<h4 class="wp-block-heading"><span id="toc80">静的WEBホスティング</span></h4>



<p>S3で静的WEBホスティングを設定する流れは、ブロックパブリックアクセスを無効化→バケットポリシーでバケットの読み取り処理を設定→インデックスをバケット内に保存→静的WEBホスティングの設定画面で、インデックスドキュメントを設定し有効化する。</p>



<p>HTTP レスポンスコード 403が帰ってくる場合、オブジェクトの読み取りアクセス許可が付与されていない可能性がある。</p>



<h4 class="wp-block-heading"><span id="toc81">Glacierのデータ移行</span></h4>



<p>5GBを超える場合は、CLIを利用して移行。100GBを超える場合はマルチパートアップロードを使用。</p>



<h4 class="wp-block-heading"><span id="toc82">S3 インテリジェント階層化</span></h4>



<p>アクセスパターンが予測できないか、変化するオブジェクトに対して、S3 One-Zone-IAとStandard-IAストレージのコストを最小限に抑える階層化ストレージを提供する。機械学習を使ってコスト効率の良いストレージクラスに自動的に遷移させます。</p>



<h4 class="wp-block-heading"><span id="toc83">静的ウェブサイトの表示</span></h4>



<p>サイトのコンテンツとなるIndex.htmlをバケットにアップロード。</p>



<ul class="wp-block-list">
<li>s3-website ダッシュ (-) リージョン<br>http://<em>bucket-name</em>.s3-website-<em>Region</em>.amazonaws.com</li>



<li>s3-website ドット (.)&nbsp;リージョン<br>http://<em>bucket-name</em>.s3-website.<em>Region</em>.amazonaws.com</li>
</ul>



<p>上記のURLにアクセスすると、S3バケットの静的ウェブサイト用に設定したIndex.htmlを表示できる。</p>



<h4 class="wp-block-heading"><span id="toc84">S3でCloudFrontを利用する場合</span></h4>



<p>アクセスをCloudFrontのみに絞るために、CloudFront側でオリジンアクセスアイデンティティ（OAI）を割り当てて、そのOAIにのみS3バケット内への読み取り権限があるようにS3バケットポリシーを設定する。</p>



<p>これで、外部のユーザーからはS3バケットにアクセスできない。（単にIAMロールを付与するだけではだめ）</p>



<h4 class="wp-block-heading"><span id="toc85">AWS Lake Formation</span></h4>



<p>S3を利用したデータレイク構成を容易に実施することができる。データベースとオブジェクトストレージからデータを収集およびカタログ化して、データをAmazon S3デ ータレイクに移動して保存することができる。</p>



<h4 class="wp-block-heading"><span id="toc86">パブリックアクセス設定機能</span></h4>



<p>パケットレベル・アカウントレベルで、オブジェクトへのパブリックアクセスをブロック可能。この機能でブロックを有効化することでS3バケット全体に対してパブリックアクセスを拒否できる。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc87">AWS Lambda</span></h3>



<p>サーバレスアプリを作成するための関数ベースのサービス。</p>



<h4 class="wp-block-heading"><span id="toc88">関数のエラー</span></h4>



<p>コードエラーが発生している場合はLambda関数自体の実行ができない。</p>



<h4 class="wp-block-heading"><span id="toc89">同時実行処理の限界</span></h4>



<p>限界数を超えると、それ以上のLambda関数が起動できない。動いているものが停止することはない。</p>



<h4 class="wp-block-heading"><span id="toc90">利用可能プログラミング言語</span></h4>



<p>Java、Ruby、Python、Node.js、.NET、Go。</p>



<h4 class="wp-block-heading"><span id="toc91">Event Bridgeとの連携</span></h4>



<p>毎日◯時に〜処理を実行するなどが設定可能。</p>



<h4 class="wp-block-heading"><span id="toc92">Step Functionとの連携</span></h4>



<p>処理フローを構築して、バッチ処理のように動かす。</p>



<h4 class="wp-block-heading"><span id="toc93">SQSとの連携</span></h4>



<p>キューからLambda関数を実行する。</p>



<h4 class="wp-block-heading"><span id="toc94">コスト</span></h4>



<p>使用した分だけ。関数を定義しているだけではお金はかからない。</p>



<h4 class="wp-block-heading"><span id="toc95">エフェメラルストレージ</span></h4>



<p>1つのLamda関数に512MB～10240MBのエフェメラルストレージ(/tmp) を割り当てられる。</p>



<h4 class="wp-block-heading"><span id="toc96">Lambda関数の最大呼び出し時間</span></h4>



<p>タイムアウト制限は15分。その他サービスとの兼ね合いで、変わる可能性はあります。例えば、Amazon API GatewayはLambda関数プロキシの呼び出しが完了するまで最大29秒待機します。</p>



<h4 class="wp-block-heading"><span id="toc97">Lambdaが向いていない処理</span></h4>



<p>常時多数の処理が実行されるようなアプリケーションのトランザクション処理には向いてない。</p>



<h4 class="wp-block-heading"><span id="toc98">Lambda Layer</span></h4>



<p>複数のLambda関数でライブラリを共有できる仕組み。Lambda関数間で利用する共通機能などに適用できる。同じライブラリを利用するLambda関数などが複数あった場合便利。</p>



<h4 class="wp-block-heading"><span id="toc99">Lambdaエッジ</span></h4>



<p>サーバー管理を行わなくても、Webアプリをグローバルに分散可能。パフォーマンス向上。</p>



<h4 class="wp-block-heading"><span id="toc100">Invocation</span></h4>



<p>Lambda関数の名前空間にあるメトリクス。イベントまたはAPI呼び出し関数の回数を測定可能。</p>



<h4 class="wp-block-heading"><span id="toc101">スケジュール設定</span></h4>



<p>定期的にRDSなどのサービスに対して処理を行うなど可能。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc102">Amazon EBS</span></h3>



<p>ES2にアタッチできるストレージ。AmazonEFS / インスタンスストアも合わせて覚えておく。EBSボリュームはボリュームタイプやサイズを途中で変更可能。</p>



<p>一つのAZでEBSボリュームを作成すると、そのゾーン内でのみ自動的に複製が生成される。別のAWSリージョンには複製されません。</p>



<p>IPはEBSではなくインスタンスに設定する。</p>



<h4 class="wp-block-heading"><span id="toc103">EBSをインスタンスにアタッチして使用する流れ</span></h4>



<p>まず、インスタンスに追加でアタッチしたボリュームの利用を開始するために、最初にボリューム内にファイルシステムを作成することが必要。</p>



<h4 class="wp-block-heading"><span id="toc104">Amazon EBS ボリュームタイプ</span></h4>



<p>HDDよりもSSDの方が性能は良い。また、SSDの中でも「プロビジョンドIOPS SSD」と「汎用SSD」が選択できるが、プロビジョンの方が性能は良い。</p>



<p>HDDでいうと「スループット最適化HDD」「コールドHDD」があり、「スループット最適化HDD」の方が性能は良い。<a rel="noopener" target="_blank" href="https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-volume-types.html" title="">https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-volume-types.html</a></p>



<ul class="wp-block-list">
<li>プロビジョンドIOPS SSD 1000Mib/s</li>



<li>スループット最適化 HDD 500Mib/s</li>



<li>汎用SSD　コールドSSD 250Mib/s</li>
</ul>



<p><span style="text-decoration: underline;">I /O処理での比較</span></p>



<ul class="wp-block-list">
<li>io2 Block Express：IOPS最大256000</li>



<li>io2：IOPS最大64000</li>



<li>io1：IOPS最大64000</li>
</ul>



<p></p>



<h4 class="wp-block-heading"><span id="toc105">Amazon EBSとAmazon EFSの違い</span></h4>



<ul class="wp-block-list">
<li>接続台数<br>EBS：１台のEC2インスタンスと接続可能<br>EFS：複数のEC2インスタンスと接続可能</li>



<li>耐久性<br>EBS：単一のAZ内で冗長化<br>EFS：複数のAZで冗長化</li>



<li>拡張性<br>EBS：手動でボリューム拡張可能<br>EFS：自動でボリューム拡張可能</li>
</ul>



<p>EFSはファイル共有用。NFSv4プロトコル。SMBプロトコルを利用するのはAmazon FSx for Windows。</p>



<p>EFSは標準ストレージと低頻度アクセスストレージ(EFS IA)という２つのストレージクラスがある。EFS IA は、毎日アクセスしないファイルに対して最適化されたコスト効率の料金とパフォーマンスを提供。</p>



<p>ファイルシステムは EFS ライフサイクル管理を有効にするだけで、選択したライフサイクルポリシーに従ってアクセスしないファイルは、自動的にEFS IAに移せる。</p>



<p></p>



<h4 class="wp-block-heading"><span id="toc106">EBSとインスタンスストアの違い</span></h4>



<ul class="wp-block-list">
<li>接続<br>EBS：EC2インスタンスストアとネットワーク接続<br>インスタンスストア：ホストコンピュータのストレージを利用</li>



<li>耐久性<br>EBS：単一のAZ内で冗長化<br>インスタンスストア：冗長化されない</li>



<li>拡張性<br>EBS：ボリューム拡張可能<br>インスタンスストア：ボリューム拡張不可能</li>



<li>料金<br>EBS：従量課金<br>インスタンスストア：無料</li>
</ul>



<h4 class="wp-block-heading"><span id="toc107">バックアップ</span></h4>



<p>EBSはスナップショット機能があり、データのバックアップができる。バックアップ先はS3。定期的にバックアップを取得する場合は、DLMを使用する。</p>



<h4 class="wp-block-heading"><span id="toc108">EBSボリュームの暗号化</span></h4>



<p>既存のEBSボリュームを作成後に設定で暗号化することはできない。EBSのデータをコピーする際にオプションで暗号化オプションを設定することで、暗号化されたスナップショットを作成することができます。その後、スナップショットを復元すれば暗号化されたEBSボリュームに変更することができる。</p>



<h4 class="wp-block-heading"><span id="toc109">共有</span></h4>



<p>Amazon EBSボリュームはインスタンス間で共有できません。EBSは単一のEC2インスタンスからのみのアクセスに対して、EFSは複数のリージョンとインスタンスにファイルシステムをマウントできる。</p>



<h4 class="wp-block-heading"><span id="toc110">EC2の休止状態との関係</span></h4>



<p>EC2 インスタンスを休止状態にすることで、インスタンスメモリの内容が Amazon EBSのルートボリュームに保存されます。インスタンスが再起動すると、インスタンスメモリの内容が再ロードされます。&nbsp;これによりインスタンスを特定の期間休止させることで、コストを節約することができます。</p>



<h4 class="wp-block-heading"><span id="toc111">スナップショット</span></h4>



<p>EC2が起動している状態で取得できる。スナップショットはS3に保存される。取得できるデータはスナップショット開始時点のデータ。リージョンを跨いでコピーできる。</p>



<p>このスナップショットを復元させて、新しく作ったテスト環境用のEC2などにアタッチすることで、簡単にテスト環境を作れます。</p>



<h4 class="wp-block-heading"><span id="toc112">RAID0構成</span></h4>



<p>複数のEBSを使用して1台の装置のように使用することができる。</p>



<h4 class="wp-block-heading"><span id="toc113">RAID1構成</span></h4>



<p>耐障害性が I/O パフォーマンスより重要な場合に利用されるストレージ構成。1つのEBSボリュームが故障したとしてもデータの消失を防ぐことができ、RTO1分以内の回復が可能。&nbsp;&nbsp; &nbsp;</p>



<h4 class="wp-block-heading"><span id="toc114">課金</span></h4>



<p>EBSボリューム課金はEC2が停止していてもアタッチしていれば課金。デタッチした場合は課金なし。</p>



<h4 class="wp-block-heading"><span id="toc115">マルチアタッチ機能</span></h4>



<p>Amazon EBSプロビジョンド IOPS io1・io2ボリュームのみ利用可能。単一のボリュームを同じAZ内の最大16個のインスタンスに同時アタッチ可能。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc116">Amazon SNS</span></h3>



<p>通知配信サービス。「トピック」を作成し、トピックに「サブスクリプション」という形で購読者（エンドポイント）を追加します。この購読者に対して通知を送る。エンドポイントにメールアドレスを設定するとメール送信が、HTTP/HTTPSでは指定URLにHTTPリクエストが、Lambdaを選択すると対象のLambda関数を実行できる。FIFOで配信順序を保証。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc117">Dynamo DB</span></h3>



<p>スケーラブルで高速なパフォーマンス。低レイテンシ（読み書き遅延時間が遅くない。）<br>Dynamoテーブルのキャパシティは、変化が予測できない場合は「オンデマンド」、予測できる場合は「プロビジョン」。IoTデータやセッションデータ管理などに用いられます。メタデータの保存にも最適。画像データは保存できない。SQLクエリを実行はできない。</p>



<h4 class="wp-block-heading"><span id="toc118">Dynamo DBの自動保存</span></h4>



<p>DynamoDBは３箇所のアベイラビリティゾーンに自動保存される。ただし、Dynamo DBにスナップショット機能などはない。</p>



<h4 class="wp-block-heading"><span id="toc119">セッション管理</span></h4>



<p>AWSでセッション管理を行う場合は「DynamoDB」「ElastiCache」のどちらか、または、両方を使うのが一般的。</p>



<h4 class="wp-block-heading"><span id="toc120">ゲートウェイエンドポイントとの接続</span></h4>



<p>VPCのルーティングテーブルを書き換えて、ゲートウェイ経由でサービスにアクセスできるので、インターネットを経由せずに操作可能。</p>



<h4 class="wp-block-heading"><span id="toc121">TTL</span></h4>



<p>過去〇ヶ月分のデータのみを必要とする場合は、データにTTL（Time To Live）を設定可能。</p>



<h4 class="wp-block-heading"><span id="toc122">DynamoDB Streams&nbsp;</span></h4>



<p>使用するとトランザクションを他のアプリケーションと共有可能。また、DynamoDBテーブルに保存されたデータ項目の変更を記録できるようになる。</p>



<h4 class="wp-block-heading"><span id="toc123">異なるリージョン間でのテーブル同期</span></h4>



<p>DynamoDB Streams を有効にし、対象のリージョンとレプリケーション先のリージョンに同じテーブルを作成する。さらに、それらのリージョンに作成されたDynamoDBテーブルを同期するグローバルテーブルを設定する。これで、DynamoDB Streamsによってリージョン1のDynamoDBテーブルのデータに更新が発生した場合に、リージョン2のDynamoDBテーブルへと自動的にレプリケーションされる設定が可能。</p>



<h4 class="wp-block-heading"><span id="toc124">DynamoDBグローバルセカンダリインデックス</span></h4>



<p>クエリ処理の柔軟性を高めるための機能</p>



<h4 class="wp-block-heading"><span id="toc125">DynamoDB Accelerator（DAX）</span></h4>



<p>DAXを有効化することで、追加のキャッシュレイヤーによって最大10倍のパフォーマンス向上を実現できる。ただし、高コストなため、コスト最適を考慮する場合は向いていない。（Auto Scalingによる処理負荷に対するスケーリングの方がコスト最適）</p>



<h4 class="wp-block-heading"><span id="toc126">AWS Data Pipelineとの連携</span></h4>



<p>Data Pipelineは様々なAWSデータベースやストレージ間のデータの移動と変換を自動化するサービスです。DynamoDBに設定することが可能で、定期的なデータ取得タスクを設定可能。</p>



<h4 class="wp-block-heading"><span id="toc127">AppSyncとの連携</span></h4>



<p>リアルタイムで最新の状態に保つコラボレーションアプリを構築できます。</p>



<h4 class="wp-block-heading"><span id="toc128">ポイントインタイムリカバリ</span></h4>



<p>指定した日時の状態にテーブルデータを新しいテーブルとして復元します。DynamoDB ではテーブルに対して増分バックアップが実施され、これを利用して、目標復旧時点（RPO）の15分および目標復旧時間（RTO）の1時間を容易に達成可能。</p>



<h4 class="wp-block-heading"><span id="toc129">整合性</span></h4>



<ul class="wp-block-list">
<li>強い整合性モデル<br>データの更新の際にデータベースをロック。過去のデータが読み取られないようにしてデータの一貫性を担保。</li>



<li>結果整合性モデル<br>データの更新でデータベースがロックされることはない。可用性とスケーラビリティを維持。データ更新時に読み取りリクエストが発生した場合は、データの整合性が担保されません。</li>
</ul>



<h4 class="wp-block-heading"><span id="toc130">DynamoDBのキャパシティ増強</span></h4>



<p>処理性能は上がるが、コストが高い。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc131">IAM</span></h3>



<p>サービスの権限をロール管理するサービス。IAMポリシーで権限を定義し、IAMロールに設定する。このIAMロールを各種サービスに付与する。基本的に権限管理はアクセスキー管理よりもロール管理がセキュアで推奨されている。</p>



<h4 class="wp-block-heading"><span id="toc132">AWS CLIを利用する場合</span></h4>



<p>権限はロールとアクセスキーにより制御できる。（ロールが推奨されている。）操作する対象の権限を持つユーザがCLIを実施する必要がある。</p>



<h4 class="wp-block-heading"><span id="toc133">開発者が不必要な権限ロールを追加するのを防ぐ</span></h4>



<p>IAMアクセス許可境界で権限ロールを追加できる範囲を設定できる。</p>



<h4 class="wp-block-heading"><span id="toc134">署名付きURLを利用するケース</span></h4>



<p>決められた期間内に専用端末でログファイルを見る場合などに利用。S3バケットで署名付きURLを生成し、有効期限が切れる前にベンダーにログファイルをダウンロードしてもらう。仮にIAMロールを付与したアカウントを作成すると、ユーザを削除しないと常に使用できてしまうため。</p>



<h4 class="wp-block-heading"><span id="toc135">IAMデータベース認証</span></h4>



<p>これを使うとEC2インスタンスからIAMデータベース認証を利用してRDSのDB インスタンスにアクセスが可能。DBインスタンスに接続する際にパスワードは必要なく、認証トークンを使用。認証トークンはAmazon RDS がリクエストに応じて生成する一意の文字列で、IAM内において管理されます。そのため、ユーザー認証情報をデータベースに保存する必要はありません。</p>



<h4 class="wp-block-heading"><span id="toc136">AWS IAM Identity Center（旧SSO）</span></h4>



<p>SAMLフェデレーションを設定してオンプレミス環境のActive Directoryと連携することで、Active Directoryの資格情報を使用して、全ユーザーがAWSとオンプレミスの両方のリソースに対して、一元的にアクセスできるシングルサインオンを実現することができます。</p>



<h4 class="wp-block-heading"><span id="toc137">Microsoft Active Directory</span></h4>



<p>オンプレミス環境にあるWindowsサーバーやWindowsアプリに対するユーザー認証を実現する認証用サーバー。こちらのサービスとIAMユーザ管理両方を行うと管理が非効率。そのため、MS Active Directoryの認証情報とIAM認証情報を連携させることが必要。AWS SSOを有効にする必要あり。<br>Microsoft Active DirectoryとIAM側のディレクトリリクエストをするためにはAD Connectorというディレクトリゲートウェイを使用します。<br>SAMLを使用して、AWSクラウドへのAPIアクセス用にSAMLベースのフェデレーションを設定できる。</p>



<h4 class="wp-block-heading"><span id="toc138">AWS Organizations</span></h4>



<p>アカウントを一元管理するサービス。全アカウントにシングル サインオン (SSO) ソリューションを必要としている。アカウントで IAM ロールを使って、特定のAWSアカウントのリソースへのアクセス権を別の AWS アカウントに付与できますが、これはAWS Organizationsのメンバーアカウント間の連携にしか利用できません。外部ベンダーアカウントには適用できない。</p>



<p>デフォルトでメンバーアカウントが属するOUに対して「FullAWSAccess」（すべてのリソースの全ての操作可能）が付与される。そのため、どんな権限をつけても、この権限があると、全操作可能のまま。そのため、SCPを利用する場合は、この権限をまずは、デタッチする必要がある。</p>



<p>ちなみに、SCPでは明示的なDeny要素が、最初の明示的なAllowよりも優先。</p>



<h4 class="wp-block-heading"><span id="toc139">サードパーティソフトの権限</span></h4>



<p>AWSマーケットプレイスで購入したサードパーティのソフトウェアが必要とする権限のIAMポリシーを作成。次に、IAMポリシーを利用してクロスアカウントアクセス用のIAMロールを作成し、該当するサードパーティのソフトウェアに設定。これによってソフトが対象のEC2インスタンスに連携可能。</p>



<p>アカウントごとにIAMユーザを作成する必要がなくなります。</p>



<h4 class="wp-block-heading"><span id="toc140">AWS アクセスキー</span></h4>



<p>AWSのアクセスキーは、アクセスキーIDとシークレットアクセスキーから構成される。AWSアクセスキーは、ユーザ名とパスワードによる認証と同様の処理をプログラムアクセス時にアクセスキーIDとシークレットアクセスキーを用いて行える。メリットは更新の影響がないが、デメリットとして、権限が強いキーが存在してしまうこと。</p>



<h4 class="wp-block-heading"><span id="toc141">AWS STSとの違い</span></h4>



<p>AWS STSは一時的なセキュリティキーを作成し、キーを提供した信頼するユーザーへ渡すことで、AWSリソースへのアクセスを許可できる。IAMのアクセスキーとの違いは「有効期限」を設定し、一時的な許可が可能な点と、リクエストに応じてその都度動的に作成されるため、ユーザーに紐づいてキーが保存されない。AWS IDを発行しなくて良いので、一時的なアクセスが必要なユーザに対して有効。</p>



<p>OpenID Connect互換のIDプロバイダーを使用してユーザがサインインするには、AWS STSを利用したWeb IDフェデレーションによってアクセス認証を一時的に許可できます。</p>



<h4 class="wp-block-heading"><span id="toc142">SCPとの違い</span></h4>



<p>SCPはOrganizationsでAWSアカウントに対する権限の制御ができる。AWSアカウントまたは組織単位(OU)内のアカウントのグループに対してAWSサービスへの権限境界を設定できます。<br>SCP自体は権限を与えるものではなく「ここまでは許可できる」という境界を設定するもので、AWSアカウントまたはOUに関連付けられているSCPがある場合、許可していないAWSサービスは、AWSアカウントまたはOUへのアクセスを拒否されます。</p>



<p>SCPの使い方としては、組織の大枠でまず使用するサービスにSCPを設定。このSCPで許可・拒否された範囲においてIAMの方で個別ユーザに許可権限を与える流れ。</p>



<h4 class="wp-block-heading"><span id="toc143">ROA</span></h4>



<p>RIRを介して作成されるドキュメント。 Amazonが特定のAS番号のアドレス範囲を公開することを承認する。 これを利用して、パブリックにルーティング可能なIPアドレスの一部または全部を、オンプレからAWSアカウントに導入可能。</p>



<h4 class="wp-block-heading"><span id="toc144">IAM Access Analyzer</span></h4>



<p>AWSアカウントの外部からアクセスできるリソースを特定する総合的な解析を実行可能。これにより、S3の外部アカウントからのアクセス情報を分析して、不正なアカウントアクセスがないかを確認可能。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc145">Elastic IP</span></h3>



<h4 class="wp-block-heading"><span id="toc146">EIPの課金条件</span></h4>



<p>EIPはElastic IPの略です。AWSで利用するインターネットからアクセス可能な静的アドレス。課金される場合は下記です。</p>



<ul class="wp-block-list">
<li>EIPを関連付けているEC2インスタンスが停止している場合</li>



<li>EC2に関連付いていない（= 昔は使っていたが、EC2を停止してしまって忘れられている）EIP</li>



<li>関連付いているEC2は起動しているがEIPが二つ目けれども、ふたつ目以降のEIP</li>



<li>EIPの「リマップ(remap)」を、1ヶ月に100回以上行った場合</li>
</ul>



<p>課金されない条件は下記です。</p>



<ul class="wp-block-list">
<li>Elastic IP アドレスが EC2 インスタンスに関連付けられている。</li>



<li>Elastic IP アドレスに関連付けられているインスタンスが実行中である。</li>



<li>インスタンスには、1 つの Elastic IP アドレスしかアタッチされていない</li>
</ul>



<p>インスタンスに関連付いていて、動いている場合に課金されないので注意。</p>



<h4 class="wp-block-heading"><span id="toc147">Elastic IPの上限</span></h4>



<p>AWS アカウントでリージョンあたり5つの Elastic IP アドレスまでが上限。パブリック (IPv4) インターネットアドレスが数に限りがあるため。ただし、専用フォームから申請で上限を上げられる可能性。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc148">Amazon RDS</span></h3>



<p>RDSで利用できるDBはAurora・MySQL・MariaDB・Oracle・SQL Server・PostgreSQL。データは暗号化されている。（AWSでMySQLを利用する場合は、Auroraがベスト。）</p>



<h4 class="wp-block-heading"><span id="toc149">バックアップ</span></h4>



<p>7日間自動バックアップがある。初回のみフルバックアップで、2回目以降は差分のみバックアップ。パッチ作業自動化。</p>



<h4 class="wp-block-heading"><span id="toc150">マルチAZ</span></h4>



<p>RDSはマルチAZを利用可能。マルチAZ構成を利用することで、別のAZにDBを複製し、障害発生時などに切り替ることで高可用性を維持できます。</p>



<h4 class="wp-block-heading"><span id="toc151">リードレプリカ</span></h4>



<p>付加分散を目的として、読み取り用として、DBを複製すること。リードレプリカを作成するには新しくDBを作成するより、元のDBからリードレプリカを作るほうが効率が良い。<br>リードレプリカにはレプリケーションラグというタイムラグがある。</p>



<h4 class="wp-block-heading"><span id="toc152">Amazon RDSからデータ自動削除</span></h4>



<p>処理完了後にAmazon RDSから自動でデータを削除したい場合、Amazon Data Pipelineを使用して、指定された間隔で、信頼性のあるデータ処理や移動（ETL）を行うことができます。</p>



<h4 class="wp-block-heading"><span id="toc153">Amazon RDS Proxy</span></h4>



<p>RDSプロキシを利用することで、アプリとデータベース間のコネクションを管理できる。Lambda関数からRDS DBインスタンスへのコネクションプールを確立・管理し、アプリからのデータベース接続を最小限に抑えることができ、DBコネクションが非効率に乱立することを防げる。</p>



<h4 class="wp-block-heading"><span id="toc154">ストレージエンジン</span></h4>



<p>通常のMySQLではMyISAMをストレージエンジンとして設定することができるが、Amazon RDS MySQLではMyISAMをストレージエンジンとして使用できない。Amazon RDS MySQLにおいて、推奨されるストレージエンジンはInnoDB。</p>



<h4 class="wp-block-heading"><span id="toc155">クエリ処理高速化</span></h4>



<p>Amazon ElastiCacheをAmazon RDSに連携してクエリ処理高速化を可能に。</p>



<h4 class="wp-block-heading"><span id="toc156">ランダムI/O遅延</span></h4>



<p>ランダムI/O遅延が発生している場合は、データベース性能が不足している。したがって、RDSのデータベース性能をI/O処理に適したものにする必要がある。</p>



<h4 class="wp-block-heading"><span id="toc157">拡張モニタリング</span></h4>



<p>拡張モニタリングを有効化すると、RDSのDBインスタンスの様々なプロセス・スレッドのメモリ状況を常時モニタリングすることができる。</p>



<h4 class="wp-block-heading"><span id="toc158">Amazon RDSイベント機能</span></h4>



<p>DB更新などが発生した際にAmazon SNS通知やEventBridgeなどでメッセージ送付が可能。ただし、Amazon RDSイベント機能はAmazon S3イベント通知のようにデータ登録でのDB操作をイベントとして利用はできない。そのため、Lambda関数をデータ登録と連動させて動かすことはできません。</p>



<p>また、ライフサイクルポリシーなどはない。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc159">Amazon Aurora</span></h3>



<p>AuroraはMySQL、PostgreSQL互換のDB。3つのAZにまたがるクラスターボリュームを作成します。オンデマンド自動スケーリング構成によって、予測困難なアプリケーションワークロードに対応可能。</p>



<h4 class="wp-block-heading"><span id="toc160">Aurora Serverless</span></h4>



<p>Aurora ServerlessはDB インスタンスクラスのサイズを指定せずにデータベースエンドポイントを作成できるというサーバーを常時起動しない柔軟性の高いAuroraデータベースです。Aurora Serverlessは最小と最大のキャパシティーを設定して、その範囲でキャパシティを自動で調整することができます。</p>



<h4 class="wp-block-heading"><span id="toc161">RDSとの差</span></h4>



<p>Auroraは標準的なRDS for MySQLと比べて5倍のスループット、標準的なRDS for PostgreSQLと比べて3倍のスループットを実現。</p>



<h4 class="wp-block-heading"><span id="toc162">可用性</span></h4>



<p>Auroraはクラスターが3つのAZに分散されて構成。高い可用性を担保。</p>



<h4 class="wp-block-heading"><span id="toc163">フェイルオーバー機能</span></h4>



<p>フェールオーバーの実行時間はレプリカを作成している場合は開始から終了までに通常30秒以内に完了。レプリカを作成していない場合、フェイルオーバーは15分以内で完了。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc164">Amazon ElasticCache</span></h3>



<p>インメモリデータベースキャッシュ。</p>



<ul class="wp-block-list">
<li>Amazon ElasticCache for Memcached<br>レプリカ機能なし。memcachedはシンプルを追求したデータストアです。memcachedでできることはRedisでもできる。</li>



<li>Amazon ElasticCache for Redis<br>プライマリの複数レプリカを作成可能。データをディスク上に保存しないため高速でのデータアクセスを実現しています。そのためリアルタイム性を追求するシステムで活用されることが多いです。機械学習などにも利用できる。ただし、データベースが停止するとキャッシュクリアされてしまうため、データが消えます。スナップショット機能でバックアップができます。</li>
</ul>



<p></p>



<h3 class="wp-block-heading"><span id="toc165">Amazon SQS</span></h3>



<h4 class="wp-block-heading"><span id="toc166">キュータイプ</span></h4>



<p>Amazon SQS（Simple Queue Service）には2つのキュータイプがある。</p>



<ul class="wp-block-list">
<li>標準キュー<br>配信が 1 回以上行われます。そのため重複配信する場合があります。システムが重複メッセージを処理可能な設計である場合や順序が重要でない場合に使用可能。</li>



<li>FIFO（First-In-First-Out）キュー<br>メッセージが一度だけ配信され、送信された順で処理される。重複メッセージの配信ない。&nbsp;</li>
</ul>



<h4 class="wp-block-heading"><span id="toc167">キューの優先順付</span></h4>



<p>SQSのキューには優先順付ができます。</p>



<h4 class="wp-block-heading"><span id="toc168">SQSによるスケーリング</span></h4>



<p>SQSはキューによってシステム処理を分散させて負荷分散ができる。（水平方向のスケーリング）</p>



<h4 class="wp-block-heading"><span id="toc169">キューの保存期間</span></h4>



<p>デフォルトでは4日間。ただし、SetQueueAttributesアクションで、メッセージ保持期間の値を60秒〜14日間まで設定可能。メッセージの保持期間が終了すると、メッセージは自動削除。</p>



<h4 class="wp-block-heading"><span id="toc170">可視性タイムアウト</span></h4>



<p>キューが対象に受信された直後、キューがまだ残っているので、そのキューを再処理しないように設定する時間。</p>



<h4 class="wp-block-heading"><span id="toc171">メッセージ重複排除ID</span></h4>



<p>同一の重複排除IDが設定されたメッセージをキューへ送っても5分間は受付けない設定です。</p>



<h4 class="wp-block-heading"><span id="toc172">ポーリング機能</span></h4>



<p>キューに空のキューが送信されないようにする手法。SQSへメッセージを取得するポーリングリクエスト実施時に空の場合、指定数秒の間待機するロングポーリング機能を使用。一定時間待たない場合はショートポーリングを使用。</p>



<h4 class="wp-block-heading"><span id="toc173">デッドレターキュー</span></h4>



<p>デッドレターキューはSQSのキューの一種で、エラーが起きた際に再処理を行うためにデッドレターキューにSQSのメッセージが一旦入って、再処理が行われる。</p>



<p>（例）</p>



<p>LambdaにSQSメッセージ送信→Lambdaエラー→複数リトライ→SQSのメッセージがデッドレターキューに入る→再処理</p>



<h4 class="wp-block-heading"><span id="toc174">キューサイズ</span></h4>



<p>キューサイズとはメッセージ数のこと。SQSキューサイズを確認するAutoScalingトリガーを構成することでインスタンスを増加させることができる。</p>



<p>キューサイズが増えると処理が停滞する。この停滞はトラフィックを監視してもわからない。（トラフィックとはネットワークを流れる情報、およびその情報量）</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc175">Amazon kinesis</span></h3>



<p>ストリーミングデータをリアルタイムで処理できるサービスです。</p>



<h4 class="wp-block-heading"><span id="toc176">Kinesisの種類</span></h4>



<ul class="wp-block-list">
<li>Kinesis Video Streams：配信<br>数百万など大量のデバイスから動画をストリーミングで安全かつ簡単に配信することが可能</li>



<li>Kinesis Data Streams：リアルタイム処理<br>デバイスなどから送られる大量のストリーミングデータをリアルタイムに収集、処理して別のサービスに配送するサービス。IoTデバイスからリアルタイムでデータを取得し、処理を行うなど。</li>



<li>Kinesis Data Firehose：取り込み変換<br>データロードまで60秒必要となり、リアルタイムな処理には向いていませんが、データ変換・配信するのに向いています。</li>



<li>Amazon Managed Service for Apache Flink（旧Analystics）：分析<br>データ分析後に配信などの処理ができる。これを利用して、ストリーミングデータをクエリ処理によって分割し、直接Amazon S3バケットに保存などができる。</li>
</ul>



<h4 class="wp-block-heading"><span id="toc177">Kinesis Dataについて</span></h4>



<p>シャード（ストリーム内の一意に識別されたデータレコードのシーケンス）のセット。Kinesisのストリームは複数のシャードで構成され、各シャードが容量の1単位。</p>



<p>シャード制限</p>



<ul class="wp-block-list">
<li>読み取り：最大1秒あたり5件のトランザクション</li>



<li>読み取り最大合計レート：2MB/1秒</li>



<li>書き込み：最大1秒あたり1000レコード</li>



<li>書き込み最大合計レート：1MB/1秒 (パーティションキーを含む)&nbsp;</li>
</ul>



<p>ストリームデータ容量は、ストリームに指定したシャード数で決まる。ストリーム総容量はシャードの容量の合計です。</p>



<h4 class="wp-block-heading"><span id="toc178">リシャーディング</span></h4>



<p>Kinesis Data Streamシャードと言われるデータシーケンスを結合・分割することができる機能がある。</p>



<h4 class="wp-block-heading"><span id="toc179">appstreamとの違い</span></h4>



<p>AppStreamはアプリケーション配信を行うもので、Kinesisはデータのリアルタイム処理を行うものです。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc180">AWS CloudFormation</span></h3>



<p>JSONやYAMLで記述されたテンプレート（定義ファイル）を利用して、AWSリソースをプロビジョニングするサービス。インフラ環境のデプロイを自動化できる。</p>



<h4 class="wp-block-heading"><span id="toc181">CloudFormation記載内容</span></h4>



<ul class="wp-block-list">
<li>Resources：インスタンスなどのスタックリソースとそのプロパティを指定</li>



<li>Parameters：テンプレートに渡す値を指定</li>



<li>Description：コメントなど</li>



<li>Mappings/Conditions：条件分岐を記載</li>
</ul>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>RegionMap:
  ap-northeast-1:
    hvm: &quot;ami-0792756bc9edf3e63&quot;
  ap-southeast-1:
    hvm: &quot;ami-0162da29310cc18f6&quot;

この内容が、PropertiesにあるMapping関数によって引用可能。

Properties:
  ImageId: !FindInMap [RegionMap, !Ref &#39;AWS::Region&#39;, hvm]

この記述だと、リージョンごとにインスタンスを作成できる。</code></pre></div>



<h4 class="wp-block-heading"><span id="toc182">AWS SAMとの連携</span></h4>



<p>サーバーレスアプリケーションをデプロイするためのツール。YAMLを使用して、サーバレスアプリケーションのLambda関数、データベース、イベントソースマッピングをモデリングできる。</p>



<h4 class="wp-block-heading"><span id="toc183">費用</span></h4>



<p>CloudFormation自体は無料。料金はプロビジョニングしたリソースの利用料金のみに発生。</p>



<h4 class="wp-block-heading"><span id="toc184">スタックセット</span></h4>



<p>CloudFormationテンプレート内にAWSリソースの設定を定義して、１つのテンプレートにより複数の AWS アカウントやリージョンにリソースを展開できます。</p>



<h4 class="wp-block-heading"><span id="toc185">ドリフト</span></h4>



<p>チェックする機能。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc186">Cloudwatch</span></h3>



<p>AWSリソースとアプリケーションの監視サービスで、パフォーマンスデータを収集し可視化し、リアルタイムでアプリケーションを最適化してトラブルシューティングするための補助サービス。カスタムメトリクスは有料で、通常メトリクスは無料。</p>



<h4 class="wp-block-heading"><span id="toc187">標準メトリクス</span></h4>



<p>ネットワーク受信料やCPU利用率、データ転送量、ディスク使用量等の標準メトリクスを提供。</p>



<h4 class="wp-block-heading"><span id="toc188">カスタムメトリクス</span></h4>



<p>カスタムメトリクスで下記を取得できる</p>



<ul class="wp-block-list">
<li>アプリやサーバーが生成したデータ（Webの読み込み時間、リクエストエラー発生率、同時処理数またはスレッド数）</li>



<li>CPUやネットワーク使用率、ページロードやクエリ実行時間</li>



<li>UnhealthyHostCountメトリクス：異常とみなされるターゲットの数を提供</li>
</ul>



<h4 class="wp-block-heading"><span id="toc189">検知・通知機能</span></h4>



<p>CloudWatchはアプリケーション処理の異常正常を監視することもできる。以上を検知した場合、アラームによって通知や自動的なアクションを起動することができ、SNSなどのサービスへの連携も可能。</p>



<p>（使用例）</p>



<ul class="wp-block-list">
<li>EC2停止→イベントをトリガーとしてSNSへ通知→Eメールを送信</li>



<li>異常状態インスタンス置換<br>UnhealthyHostCountメトリクスをモニタリングするAmazon CloudWatchアラームを作成。<br>AutoScalingアクションを構成。<br>アラームが起動した場合アラーム状態になった場合Auto Scalingに通知→異常状態のインスタンスを置換</li>
</ul>



<h4 class="wp-block-heading"><span id="toc190">ログ機能</span></h4>



<p>CloudWatch Logsを使ってCloudWatchから取得したログを集約してログを記録できる。</p>



<h4 class="wp-block-heading"><span id="toc191">共有リンク</span></h4>



<p>Cloud watchのダッシュボードのみを見たい管理者がいる場合などに使用。最小特権の原則に従うとIAMロールを付与するとAWSコンソールのその他画面を見られてしまう。そのため、この共有リンクを作成し、共有することで、ダッシュボードのみを確認可能とできる。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc192">Amazon CloudFront</span></h3>



<p>Webページを外部から見る場合にレイテンシを抑えるためのサービス。また、予期せぬアクセス集中にはAmazon Cloudfrontが有効です。CloudfrontはCDNサービスであり、キャッシュサーバがリクエストに応答するため、オリジンサイトへのアクセス集中を避けることができます。Cloud FrontはUDPをサポートしていません。</p>



<h4 class="wp-block-heading"><span id="toc193">Auto Scalingとの違い</span></h4>



<p>Auto Scalingもアクセス集中には有効だが、CPUが90%を超えた場合など、トリガーをきっかけにスケールするため、予期せぬアクセス集中に対応ができない。</p>



<h4 class="wp-block-heading"><span id="toc194">国単位のサイトアクセスの遮断</span></h4>



<p>CloudFrontを使うと国単位のアクセス遮断などが可能。セキュリティグループでは実現できない。</p>



<h4 class="wp-block-heading"><span id="toc195">オリジンサーバへのアクセスが増える原因</span></h4>



<p>キャッシュされるべきデータがエッジロケーションにないため、オリジンサーバへのアクセスが頻発。原因として、キャッシュの保持期間が短くなっていることが考えられる。対策としては、CloudFrontディストリビューション設定において、Cache-Controlのmax-ageディレクティブの値を上げる。</p>



<h4 class="wp-block-heading"><span id="toc196">CloudFrontの署名付きCookies機能</span></h4>



<p>CloudFrontの署名付きCookies機能を利用すると、現在のオブジェクトURLを変更しないで、有料会員だけにプライベートメディアファイルへのアクセスを提供できる。</p>



<h4 class="wp-block-heading"><span id="toc197">DDoS攻撃対応</span></h4>



<p>AWS Shieldを組み合わせることで、WebアプリへのDDoS攻撃に対して最適な防御壁を設定可能。</p>



<h4 class="wp-block-heading"><span id="toc198">IP遮断</span></h4>



<p>CloudFrontのIPマッチ条件でリクエストの発信元のIPアドレスに基づいて着信Webリクエストを許可またはブロックできます。</p>



<h4 class="wp-block-heading"><span id="toc199">CloudFrontとビューア間のセキュア通信</span></h4>



<p>CloudFrontとビューア間の通信はHTTPS Comodo、DigiCert、Symantec、またはその他のサードパーティプロバイダーなどの信頼できる認証局（CA）によって発行された証明書、またはAWS Certificate Manager（ACM）が提供する証明書の両方が可能。&nbsp;</p>



<h4 class="wp-block-heading"><span id="toc200">CloudFrontとオリジン間のセキュア通信</span></h4>



<p>CloudFrontとカスタムオリジン間のHTTPSオリジンがELB以外の場合は、信頼されたサードパーティー認証機関 (CA) (Comodo、DigiCert、Symantec など) によって署名された証明書を使用、ELBの場合はACMの証明書が必要。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc201">Amazon Route53</span></h3>



<p>Amazon Route53はAWSが提供する高い可用性とスケーラビリティを持つクラウドDNS（Domain Name System）サービス。</p>



<h4 class="wp-block-heading"><span id="toc202">レコードの種類</span></h4>



<ul class="wp-block-list">
<li>Aレコード：ホスト名とIPv4アドレスの関連付けを提供する</li>



<li>AAAAレコード：ホスト名とIPv6アドレスの関連付けを提供する</li>



<li>CNAMEレコード：ドメイン名から別のドメイン名を参照</li>



<li>MXレコード：対象ドメイン宛のメール配送先ホスト名を定義するレコード</li>



<li>SOAレコード：DNSサーバや管理者のメールアドレス、シリアル番号などを保持して、更新されているかの判断を行う</li>
</ul>



<h4 class="wp-block-heading"><span id="toc203">ルーティングポリシー</span></h4>



<ul class="wp-block-list">
<li>レイテンシーベースルーティング<br>レイテンシーの低いリソースへルーティング。アプリケーションの処理を高速化可能。</li>



<li>位置情報ルーティング<br>接続元から地理的に近いリソースへルーティング。</li>



<li>シンプルルーティング<br>指定されたレコードの情報に従ってルーティング。</li>



<li>複数値回答ルーティング<br>DNSクエリに対する応答として複数の値を返すように設定可能。IPアドレス単位での正常・非正常を判断してルーティングすることが可能。これはロードバランサーに置き換わるものではありませんが、ヘルスチェックした上で複数の IP アドレスを返すことができる。</li>
</ul>



<h4 class="wp-block-heading"><span id="toc204">フェイルオーバシステム構築</span></h4>



<p>ヘルスチェック機能を使えば、EC2の状態をチェックして、異常時にフェイルオーバーできる。</p>



<ul class="wp-block-list">
<li>アクティブ/パッシブ方式<br>常時2台が動き1台で処理を実行。もう一台は待機。route53ではこちらしかできない。</li>



<li>アクティブ/アクティブ方式<br>常時2台が稼働し処理を実行。障害時性能が半分に。</li>
</ul>



<p>2台構成で性能を分けるため、1台が動かなくなると性能が落ちる。</p>



<h4 class="wp-block-heading"><span id="toc205">RDSのフェイルオーバシステム</span></h4>



<p>DBインスタンスのCNAMEレコードをプライマリーからセカンダリーに切り替えることで、セカンダリーをプライマリへと昇格。セカンダリーDBは最初から実行できる状態で待機されているホットスタンバイとしておく。</p>



<h4 class="wp-block-heading"><span id="toc206">DDoS攻撃への対応</span></h4>



<p>DDoS攻撃時にユーザが継続してアプリを利用できるように「シャッフルシャーディング」「 エニーキャスト ルーティング」という支援機能がある。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc207">Amazon Athena</span></h3>



<p>サーバーレスのインタラクティブなクエリサービスで、S3上のデータを直接SQLを使用して簡単に分析できます。機械学習向けで、通常の使用には向かない。</p>



<h4 class="wp-block-heading"><span id="toc208">料金</span></h4>



<p>クエリ単位にお金かかる。</p>



<h3 class="wp-block-heading"><span id="toc209">AWS Data Pipeline</span></h3>



<p>指定された間隔でオンプレミスデータだけでなく、異なるAWSコンピューティングとストレージサービス間でデータを処理移動するサービス。例えば、LambdaなどでDBのデータ削除処理を行なった場合、合わせてS3のバックアップも削除するなどが可能。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc210">AWS Step Functions</span></h3>



<p>AWS Step Functionsはワークフローのステップを自動的に起動してアプリケーションを順番通りに実行するサービス。</p>



<p>デフォルトで、状態がエラーの場合、実行全体が失敗する。アクションとフロー状態に対するエラー処理方法を設定可能。その際、リトライを実施して処理を継続するか、タイムアウトによって処理を停止できるが、再起動を実施するわけではない。</p>



<p>ワークフローには入力も設定でき、アクションが長時間待ちになっている場合は、人の入力作業が滞っているなども考えられる。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc211">Amazon DLM（Data Lifecycle Manager）</span></h3>



<p>各タスクをスケジューリングできる。</p>



<p>（例）<br>EBSのスナップショット作成や削除をスケジューリング。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc212">ECS</span></h3>



<ul class="wp-block-list">
<li>EC2モード<br>EC2を選択した場合は各インスタンスのOSアップデートなど、EC2自体の運用が必要。</li>



<li>Fargateモード<br>EC2自体の運用管理を削減できる。</li>
</ul>



<p>（ECS利用例）<br>そこからDynamoDBへ読み込み接続をする場合、ECSタスクにIAMロールを付与する。</p>



<h4 class="wp-block-heading"><span id="toc213">AWS Fargate</span></h4>



<p>FargateはECS・EKSと共に使用するコンテナクラスターを管理サービス。ECSを動かす環境として、Fargateを選択可能。AWS上でコンテナをサーバーレスで実行することが出来るようにする機能を提供してくれるサービス。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc214">Snowball</span></h3>



<p>Snowballは安全なデバイスを使用してAWS内外に大量のデータを転送するペタバイト規模のデータ転送サービス。データはGlacierに直接インポートはできないため、Glacierに保存する場合は一旦S3に保存して、ライフサイクルポリシーでGracierに保存するようにする。</p>



<h4 class="wp-block-heading"><span id="toc215">デバイスの種類</span></h4>



<ul class="wp-block-list">
<li>Snowball Edge Storage Optimized<br>データ転送用のedgeデバイスオプションで100TB (80TB使用可能) </li>



<li>Snowball Edge Compute Optimized<br>機械学習、フルモーション動画など大規模42TB</li>



<li>Snowball Edge Storage Optimized<br>大規模なデータ移行80TB</li>
</ul>



<p>現在SnowBall利用は推奨されておらず、AWSではSnowball Edgeの利用が求められている。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc216">AWS VPN</span></h3>



<p>オンプレミス環境とのサイト間VPN接続を確立する。サイト間VPNをAWSとオンプレミス間に構成するためには、オンプレミス側のネットワーク環境にカスタマーゲートウェイデバイスを設置して、カスタマーゲートウェイを構成します。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc217">Acceleratedサイト間VPN</span></h3>



<p>Global Acceleratorを利用したサイト間VPN。VPNの通信はAWSグローバルネットワークを経由して接続されるため、高可用性・高パフォーマンスが維持される。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc218">Amazon Redshift</span></h3>



<p>Amazon Redshiftとは、AWS上で提供されているデータウェアハウス専用のデータベースサービスです。あらゆるデータを構造化して蓄積し、高速に分析処理できることが大きな特徴です。機械学習にも利用されます。</p>



<h4 class="wp-block-heading"><span id="toc219">RedShift Spectrum</span></h4>



<p>RedShift Spectrumは、Amazon Redshiftと統合されており、S3のデータを直接クエリする能力を持ちます。BIツールと統合されているため、多数の同時ユーザーからの複雑なクエリの要件も満たすことができます。オブジェクト全体に対して実施するため、データの一部を分析するなどは向いていない。</p>



<h4 class="wp-block-heading"><span id="toc220">拡張VPCルーティング</span></h4>



<p>Redshiftクラスターに対する拡張VPCルーティングを有効にすることで、VPCに出入りするRedshiftクラスターのすべてのCOPYおよびUNLOADトラフィックを監視可能。</p>



<h4 class="wp-block-heading"><span id="toc221">Work Load Management（WLM）</span></h4>



<p>Redshiftのクエリ処理に対して割り当てるRedshiftのリソースを指定する機能。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc222">Amazon EMR&nbsp;</span></h3>



<p>ビックデータ分析用のサービス。Hadoopフレームワーク。1秒ごとの課金。EMRとRedshiftの違いは、ツールか保管しておく場所かの違い。</p>



<p>膨大なデータを迅速かつコスト効率よく処理して分析するサービス。DynamoDB に格納されているデータなど大量のデータを迅速かつ効率的に処理できるが、レポート作成など向きではない。（過剰スペック）</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc223">AWS Secrets Manager </span></h3>



<p>データベースやその他のサービスの認証情報を安全に暗号化してシークレットとして保存・取得する仕組みを提供します。自動回転をオンにすることで定期的に資格情報を更新可能</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc224">GuardDuty</span></h3>



<p>継続的にモニタリングを行い、悪意のあるアクティビティを確認するサービス。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc225">AWS Shield</span></h3>



<p>マネージド型の分散サービス妨害 (DDoS) に対する保護サービス。standardは基本的に軽減のみ。AWS Shield Advancedでは、DDoS攻撃によって生じた可能性のある請求に関しても保証されます。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc226">AWS Glue</span></h3>



<p>データをRDSやKinesis、S3データレイクなどから集めて、変換して読み込むためのサービス。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc227">AWS API Gateway</span></h3>



<p>トラフィック管理、認可とアクセスコントロール、モニタリング、API バージョン管理などのAPI管理を実施できます。そのパフォーマンスとしては最大数十万規模の同時 API コール処理が可能。API Gateway は受信したAPI コールと転送データ量に応じて課金される従量課金制サービス。<br>L3/L4 DDoS攻撃に対応可能。</p>



<p>Lambdaと連携して、サーバレスAPIを作成できる。</p>



<h4 class="wp-block-heading"><span id="toc228">処理性能を向上</span></h4>



<p>高負荷に備えてAPIゲートウェイのスロットリング制限設定とキャッシュを有効化する。</p>



<p>レスポンスキャッシュ機能があり、実行結果をキャッシュすることが可能。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc229">AWS Transit Gateway</span></h3>



<p>複数のVPCやVPCピアリングをハブ＆スポークス方式で接続可能。中央のゲートウェイからネットワーク上にあるAmazon VPC、オンプレミスのデータセンター、リモートオフィスそれぞれに単一の接続を構築して管理することができ、管理の簡略化が可能。</p>



<h4 class="wp-block-heading"><span id="toc230">VPN接続スループット向上</span></h4>



<p>AWS Transit Gatewayを利用して、Equal Cost Multipath (ECMP)をこれらの接続の間で有効にできます。トラフィックを複数のパスに負荷分散できるので帯域幅を広げられる。そのため、VPN接続などで接続数が増えた場合、帯域を広げてスループット改善が可能になる。</p>



<h4 class="wp-block-heading"><span id="toc231">マルチキャスト</span></h4>



<p>マルチキャストは複数のデバイス（ホスト端末）に対して同一データを一斉に送信するネットワーク方法のこと。AWS&nbsp;Transit Gatewayでマルチキャストを有効にすると実行可能。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc232">AWS Strage Gateway</span></h3>



<p>オンプレミスから実質無制限のクラウドストレージへのアクセスを提供するハイブリッドクラウドストレージサービス。ストレージ間のデータ移行に利用できる。</p>



<h4 class="wp-block-heading"><span id="toc233">ボリュームタイプ</span></h4>



<ul class="wp-block-list">
<li>キャッシュ型ボリュームモード<br>データ自体はS3に書き込まれる。頻繁にアクセスするデータはキャッシュとしてローカルに保持。ストレージ容量は、必要なキャッシュ容量分確保。アクセス方式も移行前と変わらない。</li>



<li>補完型ボリュームモード<br>キャッシュ型と違い、ローカルに必要な分ストレージ容量を確保する必要がある。</li>
</ul>



<h4 class="wp-block-heading"><span id="toc234">データの暗号化</span></h4>



<p>デフォルトでデータを暗号化している</p>



<h3 class="wp-block-heading"><span id="toc235">AWS Database Migration Service</span></h3>



<p>オンプレの各種データベースをAWSへ移行するサービス。また、Oracleなどは単純に移行するだけではなく、スキーマーの再作成なども条件次第では可能。（手作業ミスを防げる）</p>



<h3 class="wp-block-heading"><span id="toc236">AWS Server Migration Service</span></h3>



<p>オンプレの仮想マシン（VMware vSphereやHyper-V/SCVMMなど）をAWSへ移行するサービス。もう使われていない。Application Migrate Service（AMSに変わった）</p>



<h3 class="wp-block-heading"><span id="toc237">AWS DataSync </span></h3>



<p>オンプレのファイルストレージをAWSストレージサービス(S3やEFS)間のデータ移動を自動化。安全オンラインサービス。</p>



<h3 class="wp-block-heading"><span id="toc238">AWS Transfer Family</span></h3>



<p>Amazon S3やAmazon EFSへのファイル転送を実現するツール。SFTPやFTPを利用したファイル転送に対応しているため、小規模ファイル転送が可能。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc239">Direct Connect</span></h3>



<p>オンプレミスとAWSを繋げる回線。構築に時間はかかるがセキュリティ抜群。<br>Direct Connectの料金は「データ転送料金」と「ポート時間料金」の２つで従量課金制。</p>



<p>DirectConectで接続時、オンプレとEC2両方のサーバに対して、SQSなどでポーリング処理が可能。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc240">AWS Import/Export</span></h3>



<p>大量のデータを物理ストレージデバイスからAWSに転送するサービス。ストレージドライブをAWSに郵送し、Amazon高速内部ネットワークを利用してドライブから直接データを転送できる。</p>



<p>Glacierストレージクラスのデータはエクスポートがサポートされていない。</p>



<h3 class="wp-block-heading"><span id="toc241">VM Import/Export</span></h3>



<p>仮想マシンイメージを既存の環境から Amazon EC2 インスタンスにインポートすることや、元のオンプレミス環境にエクスポートすることが簡単にできます。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc242">CodePipeline</span></h3>



<p>CodeDeployやECSなどのサービスをパイプラインとして設定することで、コードの開発からデプロイまでを自動化することができる。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc243">CloudHSM</span></h3>



<p>クラウドベースのハードウェアセキュリティモジュール(HSM) 。AWSクラウド側で安全性の高いハードウェアベースの暗号化保存機能を利用して、暗号化キーを簡単に生成して使用できます。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc244">Amazon WorkSpaces</span></h3>



<p>WindowsまたはLinuxのデスクトップを数分でセットアップ可能。これを利用して、すばやくスケールすることで世界中のたくさんの従業員に仮想デスクトップを提供できます。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc245">AWS Outposts</span></h3>



<p>RDSをオンプレ環境にセットアップ可能にするサービス。ほぼすべてのデータセンタ・コロケーションスペース・オンプレ施設にAWSサービス、API、ツールを提供可能。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc246">Amazon CloudSearch</span></h3>



<p>ウェブアプリ向けの検索ソリューションを容易かつコスト効率良く設定、管理、スケール可能。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc247">Amazon OpenSearch Service</span></h3>



<p>Amazon S3バケット保存した大量のPDFファイルに対して、ドキュメント共有アプリケーションにフレーズ検索機能を実装することができる。</p>



<p></p>



<h3 class="wp-block-heading"><span id="toc248">AWSサービスの上限関連</span></h3>



<ul class="wp-block-list">
<li>ElasticIPの上限：5</li>



<li>EC2インスタンスのタグの上限：50</li>



<li>1リージョン当たりのVPC上限：5</li>



<li>1リージョン当たりのサブネット上限：200</li>
</ul>



<h3 class="wp-block-heading"><span id="toc249">その他アーキテクト概念系</span></h3>



<h4 class="wp-block-heading"><span id="toc250">Design for Failure</span></h4>



<p>障害が発生してもサービスを継続できるようにシステムを設計する。</p>



<h4 class="wp-block-heading"><span id="toc251">メッシュアーキテクチャ</span></h4>



<p>データ品質に対する責任を全社横断組織のような「中央組織」と各事業部門といった「ドメイン」に分散させることで、データ利活用におけるドメインとしてのアジリティを確保しつつ、ドメインが作成したデータやアナリティクスを他ドメがメッシュのように相互利用できるようにするもの。</p>



<h4 class="wp-block-heading"><span id="toc252">ハブアンドスポークシステム</span></h4>



<p>「ハブ」と呼ばれる拠点に一旦全ての荷物を集約し、拠点別に振り分けてから各拠点に向けて配送する仕組みのことです。</p>



<h4 class="wp-block-heading"><span id="toc253">SDK</span></h4>



<p>SDKはPerl以外は利用可能。</p>



<h4 class="wp-block-heading"><span id="toc254">プロキシサーバ</span></h4>



<p>クライアントからの要求をフィルターし、製品の更新に関連する要求のみを許可して、特定のソフトウェア更新以外のすべての要求をフィルタリングできます。ネットワークACLおよびセキュリティグループはURLに基づいてリクエストをフィルタリングすることができない。</p>



<h4 class="wp-block-heading"><span id="toc255">CIDR</span></h4>



<p>国の特定はできない。</p>



<h4 class="wp-block-heading"><span id="toc256">シャーディング</span></h4>



<p>データベース内の複数のテーブルにデータを分割するための一般的な概念です。リクエスト増加などで単一のマスターDBの運用で限界がある場合に、 一定のルールに従いデータを複数のDBに振り分けることでアクセスを分散させることができます。&nbsp;</p>



<h4 class="wp-block-heading"><span id="toc257">ingress</span></h4>



<p>パケットがネットワーク機器へ入力すること。</p>



<h4 class="wp-block-heading"><span id="toc258">egress</span></h4>



<p>パケットがネットワーク機器から出力されること。</p>The post <a href="https://tomoblog.net/programing/aws/solution-architect-associate/">【AWS】ソリューションアーキテクトアソシエイト用語まとめ。</a> first appeared on <a href="https://tomoblog.net">ともぶろぐ</a>.]]></content:encoded>
					
					<wfw:commentRss>https://tomoblog.net/programing/aws/solution-architect-associate/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Swift】座標を指定するCGRect・CGSize・CGPointの違いまとめ。</title>
		<link>https://tomoblog.net/programing/swift/cgrect-cgsize-cgpoint/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cgrect-cgsize-cgpoint</link>
					<comments>https://tomoblog.net/programing/swift/cgrect-cgsize-cgpoint/#respond</comments>
		
		<dc:creator><![CDATA[tomo]]></dc:creator>
		<pubDate>Thu, 26 Oct 2023 11:53:27 +0000</pubDate>
				<category><![CDATA[Swift]]></category>
		<guid isPermaLink="false">https://tomoblog.net/?p=8510</guid>

					<description><![CDATA[<p>今回の記事はSwiftの座標を指定するCGRect・CGSize・CGPointの違いをまとめた記事です。画面表示で座標を指定してオブジェクトを描写するのはアプリ開発においては必須と思われるので、座標系で詰まっている方は [&#8230;]</p>
The post <a href="https://tomoblog.net/programing/swift/cgrect-cgsize-cgpoint/">【Swift】座標を指定するCGRect・CGSize・CGPointの違いまとめ。</a> first appeared on <a href="https://tomoblog.net">ともぶろぐ</a>.]]></description>
										<content:encoded><![CDATA[<p>今回の記事はSwiftの座標を指定するCGRect・CGSize・CGPointの違いをまとめた記事です。画面表示で座標を指定してオブジェクトを描写するのはアプリ開発においては必須と思われるので、座標系で詰まっている方は是非参考にしてみてください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-14" checked><label class="toc-title" for="toc-checkbox-14">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Swiftの座標系とは？</a><ol><li><a href="#toc2" tabindex="0">CGRect</a></li><li><a href="#toc3" tabindex="0">CGSize</a></li><li><a href="#toc4" tabindex="0">CGPoint</a></li></ol></li><li><a href="#toc5" tabindex="0">CGRect・CGSize・CGPointの違い</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Swiftの座標系とは？</span></h2>



<p>Swiftの座標系、特に画面描写に限定した座標は下記3つです。</p>



<ul class="wp-block-list">
<li>CGRect</li>



<li>CGSize</li>



<li>CGPoint</li>
</ul>



<p>それぞれ順番に解説していきます。</p>



<h3 class="wp-block-heading"><span id="toc2">CGRect</span></h3>



<p>CGRectはX座標、Y座標、縦、横を指定する座標系です。画像で表すと下記です。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="306" height="181" src="https://tomoblog.net/wp-content/uploads/2020/08/スクリーンショット-2020-08-19-21.18.34.png" alt="" class="wp-image-891" srcset="https://tomoblog.net/wp-content/uploads/2020/08/スクリーンショット-2020-08-19-21.18.34.png 306w, https://tomoblog.net/wp-content/uploads/2020/08/スクリーンショット-2020-08-19-21.18.34-300x177.png 300w" sizes="(max-width: 306px) 100vw, 306px" /></figure>



<p>これをSiwftコードを記載すると下記のように表現できます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-swift" data-lang="Swift"><code>// 座標をセット
CGRect rect = CGRectMake(10, 20, 100, 80);
// 各座標を出力する
print(rect.origin.x)//10
print(rect.origin.y)//20
print(rect.size.width)//100
print(rect.size.height)//80</code></pre></div>



<p>一般的にSiwftでアプリ開発をする場合で、画面にオブジェクトを表示する場合はこちらのCGRectを使用します。</p>



<h3 class="wp-block-heading"><span id="toc3">CGSize</span></h3>



<p>CGSizeは対象のオブジェクトの縦と横を指定する座標系です。画像で表すと下記のようなイメージです。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="318" height="181" src="https://tomoblog.net/wp-content/uploads/2020/08/スクリーンショット-2020-08-19-21.27.55.png" alt="" class="wp-image-894" srcset="https://tomoblog.net/wp-content/uploads/2020/08/スクリーンショット-2020-08-19-21.27.55.png 318w, https://tomoblog.net/wp-content/uploads/2020/08/スクリーンショット-2020-08-19-21.27.55-300x171.png 300w" sizes="(max-width: 318px) 100vw, 318px" /></figure>



<p>これをSiwftコードを記載すると下記のように表現できます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-swift" data-lang="Swift"><code>// 座標をセット
CGSize size = CGSizeMake(100, 50);
// 各座標の出力
print(size.width)//100
print(size.height)//50</code></pre></div>



<h3 class="wp-block-heading"><span id="toc4">CGPoint</span></h3>



<p>CGPointは対象のオブジェクトのX座標、Y座標を指定する座標系です。画像で表すと下記のようになります。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="308" height="189" src="https://tomoblog.net/wp-content/uploads/2020/08/スクリーンショット-2020-08-19-21.23.57-1.png" alt="" class="wp-image-893" srcset="https://tomoblog.net/wp-content/uploads/2020/08/スクリーンショット-2020-08-19-21.23.57-1.png 308w, https://tomoblog.net/wp-content/uploads/2020/08/スクリーンショット-2020-08-19-21.23.57-1-300x184.png 300w" sizes="(max-width: 308px) 100vw, 308px" /></figure>



<p>これをSiwftコードを記載すると下記のように表現できます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-swift" data-lang="Swift"><code>// 座標セット
CGPoint point = CGPointMake(200, 300);
// 各座標の出力
print(point.x)//200
print(point.y)//300</code></pre></div>



<h2 class="wp-block-heading"><span id="toc5">CGRect・CGSize・CGPointの違い</span></h2>



<p>座標系の違いはオブジェクトのX座標、Y座標、縦、横をどこまで指定するかという違いを持ちます。先ほどの章でも述べましたが、一般的にSwiftのアプリ開発でオブジェクト描写を行う際に使用されるのはCGRectです。</p>



<p>では、今回の記事は以上です。ほかにも多数のSwift関連の記事を記載しているので、興味があれば是非サイト内見ていってください。</p>The post <a href="https://tomoblog.net/programing/swift/cgrect-cgsize-cgpoint/">【Swift】座標を指定するCGRect・CGSize・CGPointの違いまとめ。</a> first appeared on <a href="https://tomoblog.net">ともぶろぐ</a>.]]></content:encoded>
					
					<wfw:commentRss>https://tomoblog.net/programing/swift/cgrect-cgsize-cgpoint/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Docker】Anaconda環境構築とJupyter notebookを起動する方法。</title>
		<link>https://tomoblog.net/programing/python/anaconda-jupyter-notebook/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=anaconda-jupyter-notebook</link>
					<comments>https://tomoblog.net/programing/python/anaconda-jupyter-notebook/#respond</comments>
		
		<dc:creator><![CDATA[tomo]]></dc:creator>
		<pubDate>Thu, 26 Oct 2023 06:56:51 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://tomoblog.net/?p=8496</guid>

					<description><![CDATA[<p>今回の記事はDocker環境上にAnaconda環境を構築しJupyter notebookを起動する方法に関してご紹介する記事です。Anacondaをローカルにインストールするとほかのソフトと競合を起こすこともあるので [&#8230;]</p>
The post <a href="https://tomoblog.net/programing/python/anaconda-jupyter-notebook/">【Docker】Anaconda環境構築とJupyter notebookを起動する方法。</a> first appeared on <a href="https://tomoblog.net">ともぶろぐ</a>.]]></description>
										<content:encoded><![CDATA[<p>今回の記事はDocker環境上にAnaconda環境を構築しJupyter notebookを起動する方法に関してご紹介する記事です。Anacondaをローカルにインストールするとほかのソフトと競合を起こすこともあるので、Jupyter notebookを使用したいと考えている方は是非Docker上に環境構築を行ってみましょう。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-16" checked><label class="toc-title" for="toc-checkbox-16">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Dockerインストール</a></li><li><a href="#toc2" tabindex="0">DockerでAnaconda起動</a></li><li><a href="#toc3" tabindex="0">DockerコンテナでJupyter notebookを起動</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Dockerインストール</span></h2>



<p><span class="marker-red">Docker環境がすでにある方は飛ばしてください。</span></p>



<p>まずはDockerを自身のPCにインストールします。インストールの流れは下記です。</p>



<ol class="wp-block-list">
<li>PCにあったDockerをインストール（<a rel="noopener" target="_blank" href="https://hub.docker.com/editions/community/docker-ce-desktop-mac" title="">こちらの公式ページから</a>）</li>



<li>Dockerのアカウント作成（<a rel="noopener" target="_blank" href="https://hub.docker.com/signup" title="">こちらの公式ページから</a>）</li>
</ol>



<p>DockerはWindowsとMacなどOSの違いでインストールするものが違います。ただ、インストールは簡単でイメージファイル、またはexeファイルをダウンロードし、クリックするだけだけです。</p>



<p>アカウント作成では適当なIDを打ち込んで、メールアドレスとパスワードを設定するだけです。アカウント作成が終わればメールが飛んできますので承認すればアカウントが使用できるようになります。</p>



<p>Dockerは安心できるコミュニティなのでメール登録も安心して行ってください。</p>



<p>Dockerがインストールできたか確認するためには、コマンドプロンプト、ターミナルを開き、下記コマンドを実行してください。バージョン番号が出力されればOKです。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>docker --version</code></pre></div>



<p>クジラのアイコンのアプリケーションがPCに追加されていると思いますのでそちらをクリックするとDockerが起動します。</p>



<p>詳細なDockerのPython環境構築手順は下記記事にまとめているので気になる方は是非参考にしてみてください。（<a target="_blank" href="https://tomoblog.net/programing/docker/python-helloworld/" title="">Docker上にPython環境を構築しHello World</a>）</p>



<h2 class="wp-block-heading"><span id="toc2">DockerでAnaconda起動</span></h2>



<p>次にAnaconda3のDockerイメージを取得し、Dockerコンテナを立ち上げていきます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>docker pull continuumio/anaconda3</code></pre></div>



<p>取得したイメージをビルドしてDockerコンテナを起動します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>docker run -it -p 8888:8888 continuumio/anaconda3 --name jupyter /bin/bash</code></pre></div>



<p>これでDockerコンテナが起動し、コンテナ内のバッシュコマンドを開くことができたと思います。次はコマンド操作によってAnaconda環境に含まれているJupyter notebookを起動していきます。</p>



<h2 class="wp-block-heading"><span id="toc3">DockerコンテナでJupyter notebookを起動</span></h2>



<p>下記コマンドを実行してください。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>jupyter notebook --notebook-dir=/opt/notebooks --ip=0.0.0.0 --no-browser --allow-root</code></pre></div>



<ul class="wp-block-list">
<li>&#8211;notebookはJupyter notebookが保存されている場所</li>



<li>&#8211;ipは0.0.0.0を指定</li>



<li>&#8211;allow-rootはルート権限</li>
</ul>



<p>（Jupyter notebookが存在しないとなった場合やPCがWindowsの場合は、Docker上の環境パスがデフォルトでは設定されていないので、cdコマンドで、「opt/conda/bin/」のフォルダ移動して、上記コマンドを実行してください。）</p>



<p>下記のような表示が出力されればJupyter notebook のローカルサーバがDocker上に起動しています。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>To access the notebook, open this file in a browser:
        file:///root/.local/share/jupyter/runtime/nbserver-27-open.html
    Or copy and paste one of these URLs:
　　　　　　｛ここにURLが表示されている｝</code></pre></div>



<p>URLが出力されているのでこれをPCのブラウザで開くとJupyter notebookのページを開くことができます。操作方法もローカル環境にインストールしたAnaconda版のJupyter notebookと差はないです。</p>



<p>今回の記事は以上です。ほかにも多数のDocker系の記事やPython関連の記事を記載しています。興味があればサイト内見ていってください。</p>The post <a href="https://tomoblog.net/programing/python/anaconda-jupyter-notebook/">【Docker】Anaconda環境構築とJupyter notebookを起動する方法。</a> first appeared on <a href="https://tomoblog.net">ともぶろぐ</a>.]]></content:encoded>
					
					<wfw:commentRss>https://tomoblog.net/programing/python/anaconda-jupyter-notebook/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Docker】Python環境構築から「HelloWorld」までの手順。</title>
		<link>https://tomoblog.net/programing/python/python-helloworld/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python-helloworld</link>
					<comments>https://tomoblog.net/programing/python/python-helloworld/#respond</comments>
		
		<dc:creator><![CDATA[tomo]]></dc:creator>
		<pubDate>Thu, 26 Oct 2023 02:43:49 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://tomoblog.net/?p=8491</guid>

					<description><![CDATA[<p>今回の記事はDockerでPython環境構築を行い、HelloWorldを出力するまでの手順をご紹介する記事です。Docker初学者でも理解できるように、Dockerでの環境構築についてから解説していきます。Pytho [&#8230;]</p>
The post <a href="https://tomoblog.net/programing/python/python-helloworld/">【Docker】Python環境構築から「HelloWorld」までの手順。</a> first appeared on <a href="https://tomoblog.net">ともぶろぐ</a>.]]></description>
										<content:encoded><![CDATA[<p>今回の記事はDockerでPython環境構築を行い、HelloWorldを出力するまでの手順をご紹介する記事です。Docker初学者でも理解できるように、Dockerでの環境構築についてから解説していきます。Pythonの環境構築で困っている方は是非参考にしてみてください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-18" checked><label class="toc-title" for="toc-checkbox-18">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Dockerでの環境構築について</a></li><li><a href="#toc2" tabindex="0">Dockerインストール</a></li><li><a href="#toc3" tabindex="0">Docker上でPython環境構築</a></li><li><a href="#toc4" tabindex="0">DockerコンテナのPythonでHelloWorld</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Dockerでの環境構築について</span></h2>



<p>自身のPCに環境を構築する場合は自身のPCにDocker Engineを介さず直接OSにソフトをインストールしているイメージです。そのためソフトのバージョンを変更する場合は、ソフトを都度アップデート、またはアンインストールしてから再度インストールする必要があります。</p>



<p>しかし、Dockerで環境を構築する場合は、自身のPCに乗っている箱のような下記のようなイメージです。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="349" height="255" src="https://tomoblog.net/wp-content/uploads/2023/10/image.png" alt="" class="wp-image-8492" style="aspect-ratio:1.3686274509803922;width:218px;height:auto" srcset="https://tomoblog.net/wp-content/uploads/2023/10/image.png 349w, https://tomoblog.net/wp-content/uploads/2023/10/image-300x219.png 300w" sizes="(max-width: 349px) 100vw, 349px" /></figure>



<p>コンテナごとにソフトをインストールできるので、バージョン3.7のPython、バージョン3.8のPython両方でコードを試せるなどの利点があり、開発シーンにおいて重宝されます。</p>



<p>今回の流れは、このDockerのコンテナにPythonをインストールし、コンテナ内でPythonファイルを実行し、「HelloWorld」を出力します。</p>



<h2 class="wp-block-heading"><span id="toc2">Dockerインストール</span></h2>



<p>まずはDockerを自身のPCにインストールします。インストールの流れは下記です。</p>



<ol class="wp-block-list">
<li>PCにあったDockerをインストール（<a rel="noopener" target="_blank" href="https://hub.docker.com/editions/community/docker-ce-desktop-mac" title="">こちらの公式ページから</a>）</li>



<li>Dockerのアカウント作成（<a rel="noopener" target="_blank" href="https://hub.docker.com/signup" title="">こちらの公式ページから</a>）</li>
</ol>



<p>DockerはWindowsとMacなどOSの違いでインストールするものが違います。ただ、インストールは簡単でイメージファイル、またはexeファイルをダウンロードし、クリックするだけだけです。</p>



<p>アカウント作成では適当なIDを打ち込んで、メールアドレスとパスワードを設定するだけです。アカウント作成が終わればメールが飛んできますので承認すればアカウントが使用できるようになります。</p>



<p>Dockerは安心できるコミュニティなのでメール登録も安心して行ってください。</p>



<p>Dockerがインストールできたか確認するためには、コマンドプロンプト、ターミナルを開き、下記コマンドを実行してください。バージョン番号が出力されればOKです。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>docker --version</code></pre></div>



<p>クジラのアイコンのアプリケーションがPCに追加されていると思いますのでそちらをクリックするとDockerが起動します。</p>



<p>では次にPythonの開発環境を構築していきましょう。</p>



<h2 class="wp-block-heading"><span id="toc3">Docker上でPython環境構築</span></h2>



<p>Dockerではすでによく使われるソフトのセットがDockerイメージとして公開されています。そのため、Pythonの開発環境もそのDockerイメージを使います。</p>



<p>コマンドプロンプト、ターミナルを開き、下記コマンドを実行してください。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>docker pull python:latest</code></pre></div>



<p>こちらのコマンドで、Pythonの最新バージョンのDockerイメージをDockerにインストールすることができます。</p>



<p>インストールが完了すれば、そのDockerイメージをビルドします。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>docker run -it --name test0622 python:latest /bin/bash</code></pre></div>



<ul class="wp-block-list">
<li>&#8211;name test0622がDocker環境の名前</li>



<li>python:latestはビルドに利用したイメージ</li>



<li>/bin/bashはDockerコンテナをビルドした最後にバッシュコマンドを実行し、Dockerコンテナ内のバッシュを開いているということです。（少し、理解しずらいかもしれませんがWebサーバにはSSH接続したようなイメージで、ここでコマンドを実行することができます。）</li>
</ul>



<p>ビルドしたDockerコンテナのバッシュで下記コマンドを実行してみてください。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>python --version
Python 3.8.3</code></pre></div>



<p>Pythonがインストールされていることが確認できました。</p>



<p>このDocker環境はDockerアプリからやコマンドで一覧として確認できます。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="646" src="https://tomoblog.net/wp-content/uploads/2020/06/スクリーンショット-2020-06-22-21.30.12-1024x646.png" alt="" class="wp-image-636" style="aspect-ratio:1.585139318885449;width:412px;height:auto" srcset="https://tomoblog.net/wp-content/uploads/2020/06/スクリーンショット-2020-06-22-21.30.12-1024x646.png 1024w, https://tomoblog.net/wp-content/uploads/2020/06/スクリーンショット-2020-06-22-21.30.12-300x189.png 300w, https://tomoblog.net/wp-content/uploads/2020/06/スクリーンショット-2020-06-22-21.30.12-768x484.png 768w, https://tomoblog.net/wp-content/uploads/2020/06/スクリーンショット-2020-06-22-21.30.12.png 1026w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>PCをシャットダウンして再度起動した場合などはDockerが止まっていることがあります。その場合は、アプリアイコンからDockerを起動するか、コマンドで下記を実行し、Dockerを立ち上げます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>コンテナを動かす
docker start [作成したコンテナ名]
コンテナを止める
docker stop [止めたいコンテナ名]
コンテナのbashに入る
docker attach [入りたいコンテナ名]
コンテナから出るかつコンテナを止める
exit</code></pre></div>



<p>では最後に、Pythonファイルを作成し、HelloWorldを出力しましょう。</p>



<h2 class="wp-block-heading"><span id="toc4">DockerコンテナのPythonでHelloWorld</span></h2>



<p>下記コマンドをDockerコンテナ内で実行します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>// 開発フォルダに移動
cd ~

// hello.pyファイル作成
touch hello.py 

// vimインストール
apt-get update
apt-get install vim

// ファイル編集モード
vi hello.py</code></pre></div>



<p>ファイル編集モードで、下記をPythonファイルに書き込みます。vimコマンドは簡単で「i」で書き込みモード、「Esc」でモードから戻る、「:wq」で上書き保存＋終了です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-file="hello.py" data-lang="Python"><code>print(&quot;Hello World&quot;)</code></pre></div>



<p>このファイルをdockerコンテナのPythonで実行するとHelloWoirldが出力されます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>python hello,py

Hello World</code></pre></div>



<p>以上で今回の記事は終了です。Docker上でPython環境を構築し、HelloWorldを出力してみました。ほかにもDocker関係の記事を多数記載しているので是非参考にしてみてください。</p>The post <a href="https://tomoblog.net/programing/python/python-helloworld/">【Docker】Python環境構築から「HelloWorld」までの手順。</a> first appeared on <a href="https://tomoblog.net">ともぶろぐ</a>.]]></content:encoded>
					
					<wfw:commentRss>https://tomoblog.net/programing/python/python-helloworld/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ブロックチェーンの仕組みを初心者向けにわかりやすくご紹介。</title>
		<link>https://tomoblog.net/programing/blockchain/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=blockchain</link>
					<comments>https://tomoblog.net/programing/blockchain/#respond</comments>
		
		<dc:creator><![CDATA[tomo]]></dc:creator>
		<pubDate>Wed, 18 Oct 2023 14:05:54 +0000</pubDate>
				<category><![CDATA[1.Programing]]></category>
		<guid isPermaLink="false">https://tomoblog.net/?p=8483</guid>

					<description><![CDATA[<p>今回の記事はブロックチェーンの仕組みを初心者向けにわかりやすくご紹介する記事です。ブロックチェーン初心者でもすぐに理解できるように多数の図を用いて分かりやすく解説していきます。ブロックチェーンに興味を持っている方や仕組み [&#8230;]</p>
The post <a href="https://tomoblog.net/programing/blockchain/">ブロックチェーンの仕組みを初心者向けにわかりやすくご紹介。</a> first appeared on <a href="https://tomoblog.net">ともぶろぐ</a>.]]></description>
										<content:encoded><![CDATA[<p>今回の記事はブロックチェーンの仕組みを初心者向けにわかりやすくご紹介する記事です。ブロックチェーン初心者でもすぐに理解できるように多数の図を用いて分かりやすく解説していきます。ブロックチェーンに興味を持っている方や仕組みを知りたい方は、是非参考にしてください。</p>



<p>今回参考にした文献は「<span class="marker">講談社：ブロックチェーン技術概論</span>」という書籍です。</p>



<p>記事の構成は以下です。</p>



<ul class="wp-block-list">
<li>仮想通貨・ブロックチェーンの歴史（仕組みと歴史は密接な関係にあるため）</li>



<li>ブロックチェーンの仕組み</li>



<li>ブロックチェーンの信頼担保策</li>



<li>ブロックチェーンの合意（コンセンサス）</li>
</ul>



<p>では記事に進みます。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-20" checked><label class="toc-title" for="toc-checkbox-20">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ブロックチェーンの歴史</a></li><li><a href="#toc2" tabindex="0">ブロックチェーンの仕組み</a><ol><li><a href="#toc3" tabindex="0">仮想通貨管理の仕組み</a></li><li><a href="#toc4" tabindex="0">ブロックチェーンについて</a></li><li><a href="#toc5" tabindex="0">仮想通貨で送金を行う仕組み</a></li><li><a href="#toc6" tabindex="0">トランザクションの内部的な処理について</a></li><li><a href="#toc7" tabindex="0">トランザクションの伝播</a></li></ol></li><li><a href="#toc8" tabindex="0">ブロックチェーンの信頼担保策</a><ol><li><a href="#toc9" tabindex="0">ハッシュチェーン</a></li><li><a href="#toc10" tabindex="0">タイムスタンプサービス</a></li><li><a href="#toc11" tabindex="0">プルーフ・オブ・ワーク</a></li></ol></li><li><a href="#toc12" tabindex="0">ブロックチェーンの合意（コンセンサス）</a><ol><ol><li><a href="#toc13" tabindex="0">No1. 最も長いブロックを正とする</a></li><li><a href="#toc14" tabindex="0">No2. 枝分かれしていない部分までを正とし、その先を切り取る</a></li></ol></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading" id="仮想通貨-ブロックチェーンの歴史-ブロックチェーンの仕組み-ブロックチェーンの課題"><span id="toc1">ブロックチェーンの歴史</span></h2>



<p>仮想通貨・ブロックチェーンの歴史は実は古めです。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="329" height="237" src="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-13.20.12.png" alt="" class="wp-image-5576" style="aspect-ratio:1.3881856540084387;width:149px;height:auto" srcset="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-13.20.12.png 329w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-13.20.12-300x216.png 300w" sizes="(max-width: 329px) 100vw, 329px" /></figure>



<p>2008年に「<strong><span class="marker">サトシ・ナカモト</span></strong>」という謎の人物がネット上に1つの論文を投稿し、その論文の中に<span class="marker">仮想通貨</span>とそのシステムの中核を担う<span class="marker"><strong>ブロックチェーン</strong></span>技術について記述があったというのが原点です。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="468" height="356" src="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-13.14.10.png" alt="" class="wp-image-5575" style="aspect-ratio:1.3146067415730338;width:192px;height:auto" srcset="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-13.14.10.png 468w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-13.14.10-300x228.png 300w" sizes="(max-width: 468px) 100vw, 468px" /></figure>



<p>つまり<span class="marker"><strong>仮想通貨・ブロックチェーンは2008年生まれ</strong></span>ということです。最近巷でブームのAIの誕生は1960年代のため、2008年生まれというのがかなり新しい（<strong>むしろ新しすぎる技術</strong>）ということがわかると思います。</p>



<p>この新しすぎるという点で仮想通貨の使い道はまだ少ないと言えます。日本で仮想通貨を利用して飲み食いができる飲食店や、物を購入できる施設はかなり少ないです。（ビックカメラは使えるとか笑。）</p>



<p>しかし、技術の将来性は認められ、将来性という点で価値がつき、価格が上昇しているのが現状です。</p>



<p>では話を戻します。</p>



<p>この2008年に発表された論文をもとに興味をもったエンジニアが開発を進め、論文発表から1年後の2009年に<strong><span class="marker">仮想通貨第1号のビットコイン</span></strong>が誕生するのです。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="146" height="138" src="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-13.28.32.png" alt="" class="wp-image-5577"/></figure>



<p>ビットコインの誕生後、イーサリアムやリップルなど数々の仮想通貨が開発され現在しのぎを削っています。</p>



<p><strong><span class="marker">「仮想通貨 ＝ ブロックチェーン</span></strong><span class="marker"><strong>」は間違い</strong></span>です。</p>



<ul class="wp-block-list">
<li>仮想通貨は資産</li>



<li>ブロックチェーンは仮想通貨を運用する上で必要な技術</li>
</ul>



<p>この2点をよく区別して押さえておきましょう。</p>



<p>簡単にまとめると歴史はこんなものです。まだまだ歴史は浅いということです。次に仕組みに移っていきます。</p>



<h2 class="wp-block-heading" id="仮想通貨-ブロックチェーンの歴史-ブロックチェーンの仕組み-ブロックチェーンの課題"><span id="toc2">ブロックチェーンの仕組み</span></h2>



<p>今回の記事のメイン部分です。ブロックチェーンの仕組みを解説します。仮想通貨を交えた説明の方がわかりやすいので今回はビットコインで使用されるブロックチェーンを解説します。</p>



<p>ブロックチェーンの仕組み解説の流れは下記です。</p>



<ol class="wp-block-list">
<li>仮想通貨管理の仕組み</li>



<li>仮想通貨で送金を行う仕組み</li>



<li>トランザクションの内部的な処理について</li>
</ol>



<p>ではまずは仮想通貨を運用する上で最も大事な管理方法の概念を解説します。</p>



<h3 class="wp-block-heading" id="仮想通貨管理の仕組み"><span id="toc3">仮想通貨管理の仕組み</span></h3>



<p>ネット上の通貨なのに2重で使用されたりしないのかと不安に思う方もいると思いますが、仮想通貨の管理方法は鉄壁です。</p>



<p>現金の銀行振込などの管理と仮想通貨の管理方法を比較してみましょう。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="691" height="430" src="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-13.43.32.png" alt="" class="wp-image-5581" style="aspect-ratio:556/346" srcset="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-13.43.32.png 691w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-13.43.32-300x187.png 300w" sizes="(max-width: 691px) 100vw, 691px" /><figcaption class="wp-element-caption">（https://biz.kddi.com/beconnected/feature/2021/210303_2/）を引用</figcaption></figure>



<ul class="wp-block-list">
<li>銀行の場合：<strong><span class="marker">絶対的な信頼のある銀行という第3者が取引記録を管理することで信頼を担保</span></strong></li>



<li>仮想通貨の場合：<strong><span class="marker">全員で取引履歴を管理することで信頼を担保</span></strong></li>
</ul>



<p>ここで押さえておくことは、<strong>仮想通貨の管理は銀行の場合と比較して、第3者という信頼に足るものはなく、全員で管理を行うという点</strong>が大きく違うことです。</p>



<p><strong><span class="marker-red">なぜ全員で管理で信頼が担保されるのか？</span></strong></p>



<p>よくあるネットの記事ではこの説明がなされていないため雰囲気だけの理解になってしまいます。本記事ではこういった部分も余すことなく解説します。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="318" height="407" src="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-14.13.25.png" alt="" class="wp-image-5582" style="aspect-ratio:0.7813267813267813;width:159px;height:auto" srcset="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-14.13.25.png 318w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-14.13.25-234x300.png 234w" sizes="(max-width: 318px) 100vw, 318px" /></figure>



<p>仮想通貨の管理は共有台帳という過去の取引を全て記録した台帳が担っています。台帳はイメージがつきやすいと思います。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="293" height="381" src="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-14.17.09.png" alt="" class="wp-image-5583" srcset="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-14.17.09.png 293w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-14.17.09-231x300.png 231w" sizes="(max-width: 293px) 100vw, 293px" /></figure>



<p>家庭内では家計簿、企業ではエクセルやソフトで帳簿などといった形での共有管理は割と一般的に行われているのです。</p>



<p><strong>家計簿や帳簿と仮想通貨の共有台帳の違い</strong>は<strong><span class="marker">共有台帳を仮想通貨を扱う全員が保有し中身を見ることができる点</span></strong>が違います。</p>



<p>例えば<strong>2人で共有台帳を管理する場合</strong>を考えてみます。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="692" height="486" src="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-14.33.35.png" alt="" class="wp-image-5584" srcset="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-14.33.35.png 692w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-14.33.35-300x211.png 300w" sizes="(max-width: 692px) 100vw, 692px" /></figure>



<p>この場合、どちらが正しい記録かわからないためBさんの不正はバレません。では3人の場合はどうでしょうか？</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="950" height="491" src="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-14.38.10.png" alt="" class="wp-image-5585" srcset="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-14.38.10.png 950w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-14.38.10-300x155.png 300w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-14.38.10-768x397.png 768w" sizes="(max-width: 950px) 100vw, 950px" /></figure>



<p>3人で管理する場合、差異が生じている取引はAさんCさん・Bさんの間で差が発生しています。多数決の原理ではありませんが、Bさんの共有台帳がおかしいことがわかります。</p>



<p>先ほど説明した<strong>全員で共有台帳を管理</strong>とは、<strong><span class="marker">この犯人探しの原理をさらに拡大し、ビットコインを保有する全ての人（全員）と不正を働いた（今回はBさんの）共有台帳の差異が不正の証拠となり、信頼担保につながるっている</span></strong>ということです。</p>



<p>つまりこれらの説明をまとめると「<strong><span class="marker">全員で取引履歴を管理することで信頼を担保</span></strong>」ということになるわけです。</p>



<p>紹介した<strong><span class="marker-red">共有台帳</span></strong>。これが「<strong><span class="marker-red">ブロックチェーン</span></strong>」です。</p>



<h3 class="wp-block-heading" id="ブロックチェーンについて"><span id="toc4">ブロックチェーンについて</span></h3>



<p>ブロックチェーンをもう少し詳細に解説していきます。<strong>ブロックチェーンとは「ブロックが繋がったもの（チェーン）」</strong>したものという意味です。</p>



<p><strong>ブロックという単位</strong>について踏み込んでいきましょう。下記のような取引があるとします。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="423" height="371" src="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-15.10.05.png" alt="" class="wp-image-5588" srcset="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-15.10.05.png 423w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-15.10.05-300x263.png 300w" sizes="(max-width: 423px) 100vw, 423px" /></figure>



<p>共有台帳に蓄積する時間はビットコインで約10分が1周期と決まっています。<strong><span class="marker">全世界で起きたビットコイン取引はこの周期ごとに記録され、これが1つの「ブロック」</span></strong>というわけです。この「ブロック」に過去のブロックチェーンと連結させていくことでチェーンが伸びていきます。</p>



<p><strong><span class="marker">「ブロックチェーン ＝ ブロック（10分間の取引履歴）が連結したもの」</span></strong></p>



<p>次に、仮想通貨での送金を行う仕組みからブロックチェーンの技術を見てみましょう。</p>



<h3 class="wp-block-heading" id="仮想通貨で送金を行う仕組み-ブロックチェーンのトランザクションについて-ハッシュチェーンについて-タイムスタンプサービスについて-プルーフ-オブ-ワークについて-合意-コンセンサス-について"><span id="toc5">仮想通貨で送金を行う仕組み</span></h3>



<p>仮想通貨で送金を行うことを「<span class="marker-red"><strong>トランザクション</strong></span>」と言います。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="433" height="379" src="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-15.22.03.png" alt="" class="wp-image-5590" srcset="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-15.22.03.png 433w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-15.22.03-300x263.png 300w" sizes="(max-width: 433px) 100vw, 433px" /></figure>



<p>この送金処理には問題点があります。</p>



<ul class="wp-block-list">
<li>2重使用問題（詳しくは「ブロックチェーンの合意（コンセンサス）」の章にて）</li>



<li>金額の不正</li>
</ul>



<p>「<strong><span class="marker-red">貨幣的価値の総量保存則</span></strong>」というものがあります。何らかの処理があっても入金に対して出金の価値は等価。簡単にいうと、100円の入金に対して出金は100円で等価になるということです。</p>



<p>このことから上図の<strong><span class="marker">Aさんが入金した「入金4」に対してBさんが受け取る出金4は等価</span></strong>であります。これは正しいのでこの<strong><span class="marker">トランザクションは承認</span></strong>となります。</p>



<p>一方、入金と出金が合わない場合、監査に引っかかりトランザクションは<strong>承認されません</strong>。</p>



<p><strong><span class="marker-blue"><span class="marker">ブロックの全てのトランザクションが承認された時</span></span></strong>過去のブロックチェーンと連結されるというわけです。</p>



<p>実はこれにはまだ隠された問題があるのですが、そこは本記事の「ブロックチェーンの同意（コンセンサス）」章にて解説します。</p>



<p>送金（トランザクション）の仕組みがわかったことで次は、この送金（トランザクション）の内部的な処理を解説していきます。ここからがブロックチェーンの真髄です。</p>



<h3 class="wp-block-heading" id="仮想通貨で送金を行う仕組み-ブロックチェーンのトランザクションについて-ハッシュチェーンについて-タイムスタンプサービスについて-プルーフ-オブ-ワークについて-合意-コンセンサス-について"><span id="toc6">トランザクションの内部的な処理について</span></h3>



<p>ここから難しいです。</p>



<p>先ほどの送金の仕組みはわかりやすいように「入金」「出金」というふうに概念的なイメージで記載しました。しかし、仮想通貨はあくまでもビット（データ）です。</p>



<p>どの入金データが出金データに紐づくかを判断するために「秘密鍵」「公開鍵」による「デジタル署名」管理を行なっています。</p>



<p>秘密鍵に対応する公開鍵は唯一。秘密鍵は自身で管理するもので公開鍵はその名の通り公開している</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="511" height="144" src="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-16.19.38.png" alt="" class="wp-image-5596" srcset="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-16.19.38.png 511w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-16.19.38-300x85.png 300w" sizes="(max-width: 511px) 100vw, 511px" /></figure>



<p>では送金を行う際の内部的な処理を解説していきます。</p>



<p>送金者はまず「<strong><span class="marker-blue">トランザクション</span></strong>」というデータを作成します。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="192" height="129" src="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-16.02.05.png" alt="" class="wp-image-5594"/></figure>



<ul class="wp-block-list">
<li>入力：送金者の資金</li>



<li>出力：送金先・金額など</li>
</ul>



<p>このトランザクションを仮想通貨ネットワーク（今回はビットコインネットワーク）のノードと呼ばれるPtoP通信のネットワークで伝播されていきます。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="811" height="375" src="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-16.34.43.png" alt="" class="wp-image-5597" srcset="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-16.34.43.png 811w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-16.34.43-300x139.png 300w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-16.34.43-768x355.png 768w" sizes="(max-width: 811px) 100vw, 811px" /></figure>



<p>上図のような取引で送金者の<strong><span class="marker">Aさんは入力に対する資金をもっていることが前提</span></strong>になります。この資金はもちろん仮想通貨の取引ですので、仮想通貨データになります。これを「<span class="marker-red"><strong>UTXO</strong></span>」と言います。</p>



<p>UTXOについて理解するのには下記のように<strong><span class="marker">Aさんが過去にCさんから送金をしてもらった</span></strong>という設定を加えて図にしてみます。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="738" height="424" src="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-17.07.21.png" alt="" class="wp-image-5598" srcset="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-17.07.21.png 738w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-17.07.21-300x172.png 300w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-17.07.21-120x68.png 120w" sizes="(max-width: 738px) 100vw, 738px" /></figure>



<ol class="wp-block-list">
<li>送金をされると出力には送金先のユーザの「秘密鍵」に対応する「公開鍵」が付与される</li>



<li>送金をされる側のAさんは「公開鍵」でロックされた仮想通貨資金の「UTXO」を持つ</li>



<li>この資金をBさんに送金する際の資金とするため秘密鍵で鍵を開ける</li>



<li>Bさんに送金する入力にデジタル署名（秘密鍵）</li>
</ol>



<p>これでUTXOについてよく理解できたと思います。最終的に下記図のように<strong>BさんのUTXOが増え、AさんのUTXOは減る</strong>ということです。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="900" height="388" src="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-17.13.16.png" alt="" class="wp-image-5599" srcset="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-17.13.16.png 900w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-17.13.16-300x129.png 300w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-17.13.16-768x331.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p>私はこの部分が前後関係を記載している記述が少なく難しさを感じていました。</p>



<p>トランザクションがノードによるビットコインネットワークを伝播する際の処理に関しても詳しくみていきましょう。</p>



<h3 class="wp-block-heading" id="トランザクションの伝播"><span id="toc7">トランザクションの伝播</span></h3>



<p>トランザクションの伝播の流れは下記です。</p>



<ol class="wp-block-list">
<li>トランザクションが行われた初めのノードでトランザクションが正しいかを検証する</li>



<li>正しかった場合：伝播、正しくない場合：トランザクションは無かったことに</li>
</ol>



<p><strong>トランザクションが正しいかどうかをまず初めのノードで検証され、このノードで承認された場合のみトランザクションは全てのノードに伝播します。</strong></p>



<p>この検証方法は<span class="marker"><strong>トランザクションのデジタル署名の秘密鍵が参照するUTXO（上図でいうとCさんから送金されたUTXO）の公開鍵を開けることができるか</strong></span>によって検証可能です。</p>



<p>しかし、トランザクション内に以前の取引情報はありません。ではどうやって検証を行うのか？<br>答えはノード内に保存されているブロックチェーンです。</p>



<p><strong>ブロックチェーンには全ての過去の取引が記録されているため参照することができるのです。</strong></p>



<p>では次は仮想通貨の管理で説明した不正防止法をもう少し深掘り解説していきます。</p>



<h2 class="wp-block-heading" id="ブロックチェーンの信頼担保策"><span id="toc8">ブロックチェーンの信頼担保策</span></h2>



<p>ブロックチェーンの管理のところでも概念的な信頼担保の方法を述べましたが、この章ではさらに詳しくその施策を解説していきます。それは下記3点です。</p>



<ol class="wp-block-list">
<li>ハッシュチェーン</li>



<li>タイムスタンプサービス</li>



<li>プルーフ・オブ・ワーク</li>
</ol>



<p>順番に説明していきます。</p>



<h3 class="wp-block-heading" id="仮想通貨で送金を行う仕組み-ブロックチェーンのトランザクションについて-ハッシュチェーンについて-タイムスタンプサービスについて-プルーフ-オブ-ワークについて-合意-コンセンサス-について"><span id="toc9">ハッシュチェーン</span></h3>



<p>ブロックチェーンのブロックには「取引履歴」と「前のブロックのハッシュ値」が保存されています。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="374" height="128" src="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-18.22.19.png" alt="" class="wp-image-5604" srcset="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-18.22.19.png 374w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-18.22.19-300x103.png 300w" sizes="(max-width: 374px) 100vw, 374px" /></figure>



<p>このハッシュ値は暗号学的ハッシュ関数により出力される値です。この<strong><span class="marker-red">ハッシュ関数はデータに対してハッシュ値という暗号を出力する関数</span></strong>です。このハッシュ関数は入力が同じ場合は出力が同じになるが、少しでも値が違えば全く予想されない暗号を返します。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="392" height="219" src="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-18.16.50-1.png" alt="" class="wp-image-5605" srcset="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-18.16.50-1.png 392w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-18.16.50-1-300x168.png 300w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-18.16.50-1-120x68.png 120w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-18.16.50-1-160x90.png 160w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-18.16.50-1-320x180.png 320w" sizes="(max-width: 392px) 100vw, 392px" /></figure>



<p>このため<strong><span class="marker">取引履歴を少しでも触るとブロックチェーン全体の整合性合わないようになる</span></strong>ということです。</p>



<h3 class="wp-block-heading" id="仮想通貨で送金を行う仕組み-ブロックチェーンのトランザクションについて-ハッシュチェーンについて-タイムスタンプサービスについて-プルーフ-オブ-ワークについて-合意-コンセンサス-について"><span id="toc10">タイムスタンプサービス</span></h3>



<p>先ほどのハッシュチェーンだけでは実は信頼性は担保されません。なぜなら、<span class="marker"><strong>一部の取引履歴をいじるとそのブロックの整合性が合わなくなりますが、全ブロックのハッシュ値を再計算してしまえば整合性を合わせることは可能</strong></span>だからです。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="404" height="236" src="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-18.24.36.png" alt="" class="wp-image-5606" srcset="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-18.24.36.png 404w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-18.24.36-300x175.png 300w" sizes="(max-width: 404px) 100vw, 404px" /></figure>



<p>これを防ぐために<strong><span class="marker">ある時点（上図で例えるとブロック2）で刊行物として現実世界に数値を公表</span></strong>する方法です。これでハッシュ値の全入れ替えは不可能になります。</p>



<h3 class="wp-block-heading" id="仮想通貨で送金を行う仕組み-ブロックチェーンのトランザクションについて-ハッシュチェーンについて-タイムスタンプサービスについて-プルーフ-オブ-ワークについて-合意-コンセンサス-について"><span id="toc11">プルーフ・オブ・ワーク</span></h3>



<p>新しいブロックを生成するためには下記図のように一つ前のハッシュ値を見つける必要があります。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="639" height="297" src="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-18.35.32.png" alt="" class="wp-image-5608" srcset="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-18.35.32.png 639w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-18.35.32-300x139.png 300w" sizes="(max-width: 639px) 100vw, 639px" /></figure>



<p>ハッシュチェーンで説明しましたが、ハッシュ値の計算には<strong><span class="marker-red">膨大な時間（プルーフ・オブ・ワーク）</span></strong>が必要になります。この膨大な時間は先ほどの再計算はブロックの数だけ行う必要があります。</p>



<p><strong>現在マイニングを行なっている人も増えているため1回のプルーフ・オブ・ワークに勝つことでさえかなり限られています。<span class="marker">そのため全ブロックで再計算を行い勝つことは不可能と言えるでしょう。</span></strong></p>



<p><strong><span class="marker">この3つの施作によってブロックチェーン管理は信頼担保をしていると言えるのです。</span></strong></p>



<p>では、ブロックチェーンの合意（コンセンサス）についてです。</p>



<h2 class="wp-block-heading" id="仮想通貨-ブロックチェーンの歴史-ブロックチェーンの仕組み-ブロックチェーンの課題"><span id="toc12">ブロックチェーンの合意（コンセンサス）</span></h2>



<p>ブロックチェーンは先ほどの説明で完全に信頼に足るものであると述べております。しかし、<strong>最後にブロックチェーンに矛盾が発生する際に必要な合意（コンセンサス）</strong>について理解しておきましょう。</p>



<p><strong>例えば2つのノードから同時に同じUTXOを資金として別の送金先に送金を行うなどです。</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="663" height="304" src="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-19.20.11.png" alt="" class="wp-image-5611" srcset="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-19.20.11.png 663w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-19.20.11-300x138.png 300w" sizes="(max-width: 663px) 100vw, 663px" /></figure>



<p>この場合図のように<strong><span class="marker">異なる履歴をもつトランザクション1と2のどちらが正しいかを判断する術がありません。</span></strong></p>



<p>この場合ブロックは下記のようになります。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="510" height="256" src="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-19.21.36.png" alt="" class="wp-image-5612" srcset="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-19.21.36.png 510w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-13-19.21.36-300x151.png 300w" sizes="(max-width: 510px) 100vw, 510px" /></figure>



<p>この判断する（同意する）アルゴリズムを「<strong><span class="marker-red">コンセンサス・プロトコル</span></strong>」または、「<strong><span class="marker-red">コンセンサス・アルゴリズム</span></strong>」と呼びます。</p>



<p>アルゴリズムの中身は大きく2つです。</p>



<h4 class="wp-block-heading" id="no1-最も長いブロックを正とする"><span id="toc13">No1. 最も長いブロックを正とする</span></h4>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="663" height="242" src="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-15-22.34.24.png" alt="" class="wp-image-5617" srcset="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-15-22.34.24.png 663w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-15-22.34.24-300x110.png 300w" sizes="(max-width: 663px) 100vw, 663px" /></figure>



<p>これはブロックチェーンの長いほうを採用するというもの。ブロックチェーンの長さが同じ場合はNo.2の方法を使用します。</p>



<h4 class="wp-block-heading" id="no2-枝分かれしていない部分までを正とし-その先を切り取る"><span id="toc14">No2. 枝分かれしていない部分までを正とし、その先を切り取る</span></h4>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="567" height="248" src="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-15-22.41.25.png" alt="" class="wp-image-5619" srcset="https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-15-22.41.25.png 567w, https://tomoblog.net/wp-content/uploads/2022/02/スクリーンショット-2022-02-15-22.41.25-300x131.png 300w" sizes="(max-width: 567px) 100vw, 567px" /></figure>



<p>もう一つが枝分かれしていないビットコインネットワークに承認されている（全てのノードで承認されている）部分から先を切り取る方法です。</p>



<p>こういった方法でチェーンの枝分かれは回避されているのです。</p>



<p>長くなりましたが以上がブロックチェーン技術の仕組みに関してです。今後も継続して、記事を記載していくので是非興味がある方はブックマークなどに入れておいてください。</p>



<p>私自身、初学者のためもし間違い等あればご指摘いただけると幸いです。</p>The post <a href="https://tomoblog.net/programing/blockchain/">ブロックチェーンの仕組みを初心者向けにわかりやすくご紹介。</a> first appeared on <a href="https://tomoblog.net">ともぶろぐ</a>.]]></content:encoded>
					
					<wfw:commentRss>https://tomoblog.net/programing/blockchain/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
