2020年9月2日から9月4日に開催しました、Architecting on AWS for APN Partnerにていただきましたご質問と回答の一部を掲載します。
以下は、2020年9月2日現在の情報を元に回答しております。
Q. S3のバージョンは何世代までという指定はできるのでしょうか?
A. ライフサイクルポリシーを使用して、世代ではなくアップロードからの日数を指定して古いバージョンのものを削除することができます。
Q. 選択するリージョンによって利用料金の違いはありますか?
A. あります。例としてEC2の料金ページを記載します。リージョン選択のプルダウンがあります。
https://aws.amazon.com/jp/ec2/pricing/on-demand/
Q. S3のバージョニング有効にして、過去のバージョンに戻したとき、アクセスコントロールリストの設定も戻りますか?
A. はい、戻したバージョンのアクセス権限に戻ります。
Q. バージョニングを有効にした場合、いつまでさかのぼってデータを復元することができるのでしょうか?
A. バージョン削除しない限り、どこまででもさかのぼれます。
Q. 長期アーカイブにはS3 Glacierでしょうか?
A. はい、そのとおりです。
Q. Snowballはデータを物理的に運ぶという認識で合っていますでしょうか?
A. はい。あっております。
Q. ニューヨークから東京リージョンのS3にファイルをアップロードする際、具体的にどういったルートとなりますか?
エッジロケーションから東京リージョンまではAWSのネットワークを利用することになるのでしょうか?
A. TransferAcceleration を利用しない場合は直接転送されます。利用した場合は、ニューヨークから最も低レイテンシのエッジロケーションに接続され、そこからAWSのバックボーンネットワークを使って転送されます。
Q. マルチパートアップロードAPI、TransferAcceleration、Snowballはそれぞれ有料のオプションなのでしょうか
A. マルチパートアップロードは無料です。TransferAccelarationは使用されたときに別料金がかかります。Snowballは有料です。
Q. ストレージクラスの移動とはS3のバケットが2つあるということでしょうか?それとも1つの中で2クラス存在するのでしょうか?
A. バケットは1つで、クラスの種類や数とは関連ありません。バケットは、S3を利用するための抽象化されたオブジェクトを格納するAPIエンドポイントです。
Q. ラボ1の最後でindex.htmlを更新する手順がありました。
紹介されていた手順では、再度公開するまでの間はindex.htmlにアクセスできません。
アクセス不可時間を極力発生させないようにページの更新を行う場合はどのような方法がありますか?(バケット全体を公開するという方法以外で)よく選択される方法についてご紹介いただければと思います。
A. デプロイをAWS CLIにより実行します。
その際に、 --acl public-read オプションを設定します。https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html
Q. オブジェクトごとにストレージクラスが設定できるということでしょうか?
A. はい。オブジェクトごとにクラスが選択できます。
Q. バケットを作ること自体に料金は発生しないであってますか?
A. はい。発生しません。
Q. t2, t3インスタンスを再作成した際にはCPUクレジットしていたCPUは一旦0になる認識であっていますでしょうか
A. t3ファミリでは、停止するとCPUクレジットはゼロになります。t2ファミリでは、サイズごとの初期値が与えられます。再起動の場合は、CPUクレジットに変化はありません。
Q. T2,T3でCPUバーストが続き、CPUクレジットがなくなった場合どうなるのでしょうか?
A. CPUバーストができなくなります。unlimitedの設定をONにすることで、追加料金を払ってCPUバーストできるようにすることもできます。
Q. EC2のインスタンスタイプは運用途中で変更できるのでしょうか。
A. Running の状態ではできませんが、停止した状態で変更できます。ファミリの変更はできないものがありますがサイズ変更は可能です。
Q. プレイスメントグループとして複数のEC2を同じ場所に生成することにどのような利点があるのでしょうか?フェイルオーバー用であれば別のAZなどに生成することになると思うのですが。
A. インスタンス間のレイテンシー(通信遅延)を低減するのが目的です。
Q. AMIからEC2を作る際のEBSの紐づきがうまく理解できませんでした。
再度簡単でいいので解説してほしいです。
A. AMIを作成する際に、EC2にアタッチされているEBSボリュームのスナップショットが自動で作成されています。
AMIからEC2を起動するときはEBSスナップショットからそのEC2用のEBSボリュームが作成され、EC2にアタッチされます。
Q. EBSのライフサイクルマネージャを使用しスナップショットを取得する際は、EC2停止は不要なのでしょうか。編集中のファイル等ありそうですが。
A. 不要ですが、あまり書き込みのない時間帯での実施がよいです。
Q. スループット最適化HDDとCold HDDですが、具体的にどのような事例があてはまるのでしょうか。ユースケースだけではイメージが掴めず恐縮ですが、具体例を教えていただけると嬉しいです。
A. スループット最適化HDDはビッグデータ分析基盤など大量のデータを扱う場合に向いています。
ColdHDDはアクセス頻度の低いバックアップ用データなどに向いています。
Q. 専有ホストはEC2が作られる物理サーバを専有できるということでしょうか?
A. はい。アカウントで専有した物理ホストを利用できます。
Q. リザーブドインスタンスで1年契約していたが、システム需要が高まり(CPU使用率増加等)リソースなどが足りなくなった場合はどのような改善対応が取れますか?
A. 追加したインスタンスも常時使い続けるのであればその分のリザーブドインスタンスを追加します。
コンバーチブルの場合は利用中のリザーブドインスタンスをスケールアップさせて対応することもできます。
またインスタンスには係数がついており、例えばsmallをmediumにスケールアップした場合、small分のリザーブドインスタンを買い増すことでmediumサイズのインスタンスを利用する、といったことも可能です。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/apply_ri.html
Q. EBSのスナップショットはコマンドでも取得可能でしょうか。(JP1等のジョブから取得できるようにすることを想定)
A. はい、aws cliを用いて可能です。例えば、
$ aws ec2 create-snapshot --volume-id $VOLUME_ID
などで、指定したボリュームのスナップショットが取得できます。
Q. リザーブドインスタンスを1年契約で使用して、1年後に延長して使うことはできますか?
A. 有効期限満了で無効になります。それまでに次の購入をキューに入れておくことができます。
Q. EFSの質問です。最初のアーキテクチャズではマウントターゲットと別れて表記されていますが、EFSの機能としてマウントターゲットがあり、それを使用することで複数のEC2にまたがるストレージを設定できるのでしょうか。
A. はい。EFSのマウントターゲットは、作成すると同じNW(VPC)内の複数のEC2から利用できます。EC2ごとに作成する必要はありません。
Q. ハードウェア専有インスタンスも物理HWを専有している認識ですが専有ホストとの使い分けはどのようになるのでしょうか。
A. ハードウェア専有インスタンスはアカウントでホストを専有するだけなので、ホストに載せたいインスタンスを限定することができません。
例えば、本番用インスタンスのみを専有ホストで起動したい場合でも、ハードウェア専有インスタンスの場合は同じ物理ホストに開発用インタンスも起動する場合があります。
専有ホストを使うと、配置先のホストを選択できます。
Q. 専有オプションを利用するのはコンプライアンスやライセンスに関連するときのみという理解でよいでしょうか?例えば性能保証(性能をコントロールしたいとか?)の場合は考えなくてよいですか?
A. はい。性能は、専有するので変わる、ということはありません。
Q. DynamoDBグローバルテーブルのレプリカに関してうまく理解ができませんでした。
各レプリカへ分散してデータが蓄積されグローバルテーブルに最終的に集約されるのでしょうか。
また、これはオプション的なものなのかデフォルト的に作られるものなのかも教えていただけると助かります。
A. グローバルテーブルはリージョンをまたいだレプリケーションのことを指していて、特定の共有テーブルなどを指しているものではありません。そしてオプション機能です。
Q. AWS CLIはどこから使用するのでしょうか。またスクリプト化して実行のようなこともできるでよいでしょうか。
A. Windows, Mac, Linuxにインストールして使用できます。通常のOSコマンドのようにバッチファイルやシェルコマンドなどでスクリプト化できます。
Q. AWSへの理解を深めるために個人でAWSアカウントを取得しようと考えています。
ただ知らない間に利用量が高額になってしまわないかと思い、少し腰が引けています。
試してみたいことはRDSでのマルチAZの構築だったり、EC2複数台でのLoad Balanceの設定等です。12か月の無料枠やスポットインスタンスを活用していけばよいでしょうか。
なにかAWS利用のコツ等あれば教えてください。
A. まずは無料枠を利用して様々なサービスを触ってみましょう
ご注意点としては、以下です。
・作成したアカウントのセキュリティ設定を行う。
・コストのモニタリングを行う。
・AWS Pricing Calicuratorを使って見積もる。
・各サービスの料金ページで料金を確認する。
Q. Auto Scalingの設定は、いつでも変更できるという認識であってますでしょうか?
A. はい、いつもで可能です。
Q. DMSを使った場合、移行元サーバのサービスを停止せずに移行を開始することができるのでしょうか?
A. はい、差分移行が可能です。ただし最終的な停止点は必要になるかと思います。
Q. スキーマの用意をしてくれるサービス名をもう一度いいですか?
A. AWS Schema Conversion Tool です。
https://aws.amazon.com/jp/dms/schema-conversion-tool/
Q. インスタンスIDを変更することはできるのでしょうか?
A. インスタンスIDは変更できません。
Q. パブリックIPアドレスはいつ割り当てられるのでしょうか?
インターネットゲートウェイをアタッチしたタイミングでしょうか。
A. パブリックサブネット上で、パブリックIPアドレスの付与を有効化したEC2インスタンスを起動、開始したタイミングです。
Q. ルートテーブルの「送信先」にはサブネット内のIPを記載するのでしょうか?
A. VPCのIPアドレス範囲は送信先localとしてデフォルトでルートテーブルにあります。
VPC外の宛先をIPアドレス範囲で記載します。
Q. Elastic IPの課金はどのタイミングで発生しますか。
A. 作成したあと、EC2インスタンスに割り当てて無い間課金されます。また割当先のインスタンスが停止している間も課されます。
Q. NATゲートウェイはプライベートサブネット毎に作成するものですか?
また、NATゲートウェイはパブリックサブネット上に配置するものですか?
A. 単一障害点を排除するベストプラクティスに基づくと必要な場合はAZごとのパブリックサブネットに作成します。NATゲートウェイは複数のサブネットで共有することもできます。ただ帯域幅が45Gbpsという制限があるのでより広い帯域が必要な場合は複数NATゲートウェイを作成します。
Q. EC2にElasticNetworkInterfaceをアタッチする上限はありますか?
A. インスタンスサイズにより制限数が異なります。ENIだけでなくアドレス数にも制限があります
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerEN
Q. プライベートサブネット内のEC2でIPアドレスを固定したい場合にも、ElasticIPアドレスを使いますか?
A. プライベートの場合はENIを作成してそこでアドレスを固定します。なおプライベートのアドレスはインスタンスの停止や開始では変化しません。
Q. プライベートサブネットにNATゲートウェイを紐づける設定はどのように行うのでしょうか?
A. ルートテーブルのターゲットにNATゲートウェイを設定することで行います。
Q. Elastic IP アドレスをパブリックサブネットに属しているEC2インスタンスに関連づけた場合、外から通信しようとしたときどういった通信経路になりますか?
A. インターネットゲートウェイからルーティングされます。
Q. ENIなんの略かもう一度教えていただきたいです。
A. ElasticNetworkInterfaceです。
Q. NATゲートウェイに割り振られるパブリックIPを固定化したい場合の設定を教えてください。
A. NATゲートウェイはEIPが必須になりますので、固定化されます。
Q. セキュリティグループはEC2に設定されているのでしょうか。
また、セキュリティグループはEC2に紐づけるファイヤーウォールという認識でしょうか。他のEC2にもセキュリティグループを紐づけられるのでしょうか。
A. EC2にアタッチしているENIに設定されるファイヤーウォールです。EC2の他にもRDSなどENIを利用するサービスにも紐付けられます。
Q. 直接ピア接続設定をしていないVPCは途中に設定しているVPCがあってもそれを中継して通信が届かないということでしょうか。
A. VPCの機能としては、通信は届きません。中継地点にいるVPCに自力でプロキシなどを立てる必要があります。意図しない通信を通さない、とお考えください
Q. DXにより何の料金が変わることでコストが削減できるのでしょうか
A. データ転送料金です。データ転送コストはDXのほうが安いです。ですが別途DXの使用料金が必要になります。例えば1Gbpsを常に使い続けるような場合ではDXのほうがコスト低減を見込めます。
Q. VPC作成時に予約したIPアドレス範囲がかぶっていた場合、VPCピア接続できないという理解であっていますか?
A. はい、あっております。
Q. VPCエンドポイントの説明をもう一度お願いしたいです。
A. 例えばS3などAWSのAPIエンドポイントに対してリクエストをするサービスは通常インターネット経由です。セキュリティ上の理由などで、バケットへのアクセスにインターネットを介したくない場合などがあります。VPCエンドポイントを作成すると、S3へアクセスがある場合にインターネットを介さずVPC内からバケットにアクセスできるようになります。
Q. レプリケーションについての質問です。フェイルオーバーが起きた場合は、レプリカDBがプライマリになるのでしょうか?
A. はい、スタンバイDBがマスターとなります。
Q. Network Load Balancerにはなく、Application Load Balancerを選んだときに受けられるメリットは具体的にどんなものなのでしょうか。
A. ルーティングやスティッキーセッションなどレイヤー7に特化した機能です。他の機能詳細については
https://aws.amazon.com/jp/elasticloadbalancing/features/?nc=sn&loc=2
をご参照ください。
Q. RDSスタンバイDBへのレプリケーションはどういった間隔で行われるのでしょうか?
A. RDSにデータを書き込んだときにレプリケートされます、RDSではマスターとスタンバイの両方に書き込まれて書き込み完了としています。
Q. 先程の例では、AZ-bのパブリックサブネットにNATゲートウェイを追加することでSPOFを取り払えるということでした。NATゲートウェイへのトラフィックのルーティングは各サブネットのルートテーブルを用いて行うということだったと思いますが、AZ-aのNATゲートウェイに障害が発生した際にAZ-a内のサーバがAZ-bのNATゲートウェイにアクセスするように自動的に切り替えることはできるのでしょうか。
A. NATゲートウェイ自体が冗長化されていて自動復旧するため、ユーザー側では考慮不要です。ただし例えばAZ-a全体に問題が発生したシナリオで考えるとそのAZのNATゲートウェイは使えないものとなります。ですので、もう一方のAZにもNATゲートウェイを構築しておき、アウトバウンド通信のルートをそれぞれのAZで設定します。
Q. DirectConnect接続を2つ用意した冗長構成は可能ですか?
可能な場合、2つの接続を負荷分散(両方Active)とする構成もActive/Standbyとする構成いずれも可能ですか?
A. 可能です。こちらBlackBeltの資料のP19記載のとおり、ルーター側での設定により可能です。
https://d1.awsstatic.com/webinars/jp/pdf/services/20200219_BlackBelt_Onpremises_Redundancy.pdf
Q. オンプレとの接続においては、規模によって1か2となる認識であっていますか?(3は使わない)また、VPC peeringとTransit Gatewayのどちらを使用する数の目安はありますか?
1. DirectConnect/VPN VPC peering
2. DirectConnect/VPN Transit Gateway
3. DirectConnect/VPN Transit Gateway VPC peering
A. そうですね。VPC PeeringとTransit Gatewayは同時に使いませんのでどちらかです。
数の目安としては、コストとのトレードオフです。
また、VPC Peeringの数の制限もありますので、このあたりが判断基準になるかと思います。
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/amazon-vpc-limits.html
Q. VPCピアリングをした場合、このVPC間の接続はインターネットに出ていると思うのですが、VPNのような暗号化された通信になっていますか。
A. AWSのネットワークを介して暗号化されています。リージョン間でも同様です。
Q. AWS CLIはダウンロードしたらコマンドプロンプトから利用ができるのでしょうか。
その際AWSの環境の指定などはどのようにしているのでしょうか。
A. はい、コマンドラインから実行できます。aws configureコマンドで、認証情報やデフォルトで利用するリージョンなどの環境情報を聞かれるので設定します。これらの設定は設定ファイルに書き込まれます。
Q. ラボでデフォルトVPCというのがありましたが、これは何かに使いますか?消してしまって問題ないVPCですか?
A. サービスや機能検証用のVPCです。消しても問題ありません。
Q. VPC作成時の設定で、DNSホスト名の有効化をONにしたときの機能は、例えば、EC2作成した際にパブリック DNS(ec2-XXX-XXX-XXX-XXX.ap-northeast-1.compute.amazonaws.com)が自動的に割り当てられる、ということですか?
A. はい。そのとおりです!
Q. IAMの権限についてですが、拒否が優先されるというお話がありましたが、例えば同じ権限の拒否設定をポリシーの上部に記載し、下部に許可を指定した場合も拒否が勝つということでしょうか?(下に書いたポリシーが優先されるわけではないということでしょうか?)
A. 記載位置や順序は関係なく、拒否が優先されます。
Q. EC2上にてIAMロールを使用しない場合、アクセスキーやシークレットコードはアプリケーションにハードコードしなくてはいけなくなるため、漏洩のリスクが高まるということでしょうか?
A. はい。かつては、勉強会などでキーをハードコードして、それをgithubにアップしてしまうことでキーを盗まれるような人もおられました。
IAMロールを使用しない場合は、ハードコーディングする他、ホームディレクトリの.aws ディレクトリに保管する、環境変数に設定するという方法があります。
Q. スイッチロールに関してはだれでも実施できるのでしょうか。
また、実施した際はログ等の出力がされるのでしょうか
(下位ユーザが上位ユーザの権限を独断でスイッチできてしまうのではないかと懸念です)
A. いいえ。スイッチロールの許可(sts:assumerole)をIAMポリシーに設定してIAMユーザーに許可する必要があります。IAMロール側でも信頼ポリシーにAWSアカウントを含める必要があります。
Q. EC2でCLIを利用するということは、AWS内部に踏み台を作るということですか?
A. はい。セッションマネージャを使うとsshを使わずブラウザからインスタンスのシェルが使えます。このインスタンスを利用することで安全にAWSのリソースにアクセスできます。
Cloud9というブラウザだけで利用できる開発環境を利用しても同様のことが可能です。
Q. AWSアカウントとIAMユーザは同じ意味でしょうか?
A. AWSアカウントは、アカウントを登録した際に発行される12桁の番号で管理される環境です。
アカウント内に作成されるユーザーがIAMユーザーです。
Q. メトリクスデータの保存期間は延長可能でしょうか?
A. 延長はできません。保管したいデータはAPIなどを利用して外部に保管する必要があります。
Q. CloudTrailは過去に起こったことを調査するためにある、ということですが、CloudWatch Logsでは過去のことは確認できないということでしょうか?
A. CloudWatch Logsはアプリケーションのログなどの過去データを記録します。CloudTrailはAWS APIのリクエスト履歴です。
Q. CloudWatchアラームのアクションの実行(EC2インスタンス再起動など)に関する権限の設定などは行う必要があるのでしょうか。
A. 特に不要です。IAMロールやポリシーを設定する必要もありません。
Q. EC2等が自動で増減した場合、所定のCloudWatch設定を自動で入れるような動きをさせることは出来ますか。
A. CPUメトリックスなど標準メトリクスは自動で取得できます。エージェントが必要な場合はそれをインストール及び設定済みのAMIを作成しておくのがよいでしょう
Q. CloudWatchのログ監視についてなのですが、CloudWatch Agentがサーバ上で指定文字列を抽出/集計するのでしょうか。それとも一旦S3等にログを落としてきてそこから文字列を抽出/集計するのでしょうか。
A. ログは一旦全てそのままCloudWatchLogsに書き出されます。集計や抽出はメトリクスフィルタで行います。
Q. これまで想定されていない課金が発生したことはありましたか?
A. 以下などがあります。
・Glacierのプロビジョニング迅速取り出しを誤って購入してしまった。
・Database Migration Serviceのお試し利用後、無料期間を超えて放置してしまい課金が発生した。
他には、開発中にデバック用途で書き出していたログをOFFにし忘れて大量の不要なログを本番環境に出してしまったこともあります。
Q. DynamoDBのパーティションキーはハッシュを使うという説明がありましたが、レンジパーティションは使用できないのでしょうか。
A. レンジキーは使用できません。パーテーションを分けるのはパーテーションキー(ハッシュキー)です。
時系列データを扱う場合に一つのパーテーションにアクセスが集中しないようにするには、日付ごとにテーブルを作成するなどのテクニックがあります。
上記の例では、DataPipelineを使って古いテーブルのデータをS3に保管するという方法もあります。
Q. CloudWatchの料金体系について軽く触れてもらえますか?標準メトリクスは自動でとられるようですが、料金がかかる?
A. 標準メトリクスは無料利用枠です。
こちらを御覧ください。
https://aws.amazon.com/jp/cloudwatch/pricing/
Q. AutoScalingでEC2インスタンスのスケールインを行う場合(例えば3台→2台に減らす場合)、
既に利用者が対象のインスタンスに接続中だったにも関わらず、そのインスタンスが自動的に停止し始めた、、というようなことは発生しないのでしょうか?
A. ALBを使用するとConnectionDrainingが有効なため、ユーザーへの影響を減らすことができます。
Q. 今まで紹介されたサービスでスナップショットファイル(EBS)やエクスポート先(CloudWatch Logs)がS3のサービスがいくつかありましたが、課金はS3の利用料として請求されるのでしょうか。それとも、S3を利用するサービスの利用料として請求されるのでしょうか。また、S3のストレージクラスは何になるのでしょうか。
A. EBSスナップショットなどAWSが内部的にS3を利用する場合はユーザーがS3のことを意識する必要はなく、課金はそのサービスの課金となります。
CloudwatchLogsのようにユーザーが明示的にS3を指定する場合はS3の料金が課金されます。ストレージクラスもユーザーが指定できます。
Q. ラボの手順の中で「キーペアのオプション」の選択時に「キーペアなしで続行」を選択しています。これは研修なのでこの選択なのでしょうか。それとも一般的には「既存のキーペアを選択」なのでしょうか。
A. 1つ1つのインスタンスにSSHでログインする必要がある場合は、キーペアを作成して指定します。今回はSSHでログインしませんので、キーペアなしです。
Q. AutoScaling の起動設定で「CloudWatch 内で EC2 インスタンスの詳細モニタリングを有効にする」の指定がありました。
これは、自動的にEC2にCloudWatch Logs エージェントをインストールしてくれる、ということですか?
A. メトリクス収集間隔はデフォルト5分ですが、詳細モニタリングを有効にすると1分になります。追加料金が発生します。
Q. ELB作成により表示される、DNS 名のホスト名でインターネットからアクセスしていますが、
このホスト名を(EIPのように)恒久的に同じIPアドレスで使用することはできるのでしょうか。
A. Application Load Balancerではできません。 Network Load BalancerではEIPが使用できます。
Q. ラボでNATゲートウェイの冗長化を行い、それぞれのAZに作成したNATゲートウェイを使うようサブネットを関連付けました。これはNATゲートウェイ単体で障害が発生した場合は自動で復旧してくれるからOK、AZ単位で障害が発生した場合は、サブネットごとにNATゲートウェイを用意しておけば生き残ったAZはそのまま利用が続けられるという考え方であっていますか?
A. はい!バッチリあっております。
Q. Autoscalingの起動設定でAMIを指定しますが、
もしこのAMIが、ヘルスチェックに対して正常なレスポンスを返さないような、問題のあるAMIだった場合、
Autoscalingで「希望する容量」を満たすように、インスタンスの起動を試みる
↓
ヘルスチェックで失敗したため、インスタンスの停止
↓
Autoscalingで「希望する容量」を満たすように、インスタンスの起動を試みる
↓
・・・
を無限に繰り返すことになりますか?
A. はい、繰り返します。ですのでヘルスチェックの設定を見直すか、ヘルスチェックに成功するようにAMIを構築しなおしてください。
Q. コンソール画面のナビゲーションペインにある「new」は何を示しているのですか?
A. 新UIを示しています。新機能を示すこともあります。
Q. 手動で停止したインスタンスは停止状態で残ったままになりますが、どのように対応するのが良いでしょうか?
A. おそらくterminaltedかと思います。terminaltedのインスタンスは停止ではなく削除済です。コンソールの表示はそのうち消えます。
Q. AWS上に構築した環境を環境構成図にエクスポートする方法はありますか。
A. 標準機能ではありません。サードパーティ製品として、LucidChartなどがあります。
こちら試した例です。
https://www.yamamanx.com/lucid-try/
Q. CloudFormationについての質問です。環境をコピーしたいときに、現状の環境のスクリプト(json or yaml)化することは可能ですか?
A. 既存の環境をテンプレート化するAWS製の機能はありません。
サードパーティサービスでformar2があります。
https://www.yamamanx.com/former2-cloudformationtemplate/
Q. CloudFormationのjson/yamlの構文チェックはどのように行えばよいですか?
A. CLIで事前検証が行えます。
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/using-cfn-validate-template.html
Q. ELBのスティッキーセッションを使うとアプリサーバへのリクエストが偏ることの理由が理解できませんでした。可能でしたら補足説明をお願いします。
A. スティッキーセッションは、あるクライアントからの接続先のEC2インスタンスを固定化する機能なので、自然とアクセス先が偏ってしまうことがあります、ということです
極端な話、一人しかアクセスしない場合は、一つのインスタンスしか使われないとなります。
Q. ロングポーリングの説明をもう一度お願いします。何ができるのでしたっけ?
A. キューが空だったときの待機時間を設定する機能です。SQSはキューへのポーリングも課金対象のため、コストを最適化することができます。
Q. CloudFrontを使うために必要なDNSの設定があれば教えてください。
A. CloudFrontを設定するとxxx.cloudfron.netのようなドメイン名が得られるので、一般のDNSサーバではCNAMEに設定します。
Route53を利用する場合はAレコードのエイリアスとして登録することができます。
Q. 標準キューの場合の受信はどの順で行われるのでしょうか?
A. ベストエフォートの先入れ先出しです。順番が入れ替わってしまうこともある、という動きをします。
Q. CloudFrontは400番台や500番台エラーが返ってもキャッシュされるのでしょうか。
A. エラーをキャッシュする時間を設定することができます。
こちらをご覧ください。
https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/HTTPStatusCodes.html
Q. ネットワークをサブネットでわけると何が嬉しいか、もう一度説明をお願いできないでしょうか。サブネット間のEC2同士のサーバ通信は可能なのでしょうか。
A. IGW、VGWなどを使って外部と通信するときにサブネットを分けておくことによりネットワークの用途を制御しやすくなります。
特にIGWからの通信は世界中のインターネットから攻撃可能となりますので、パブリックサブネット、プライベートサブネットは最低限分けましょう。
サブネット間通信はもちろん可能です。VPCのネットワークレンジがルートテーブルに登録済みなためデフォルトで通信可能です。
Q. 「AWSトレーニングコースで使用している質問フォームのアーキテクチャ」の図ではSQSのメッセージをLambdaで処理しています。先程ロングポーリングなどの話があったのでSQSのメッセージのコンシューマーは能動的にキューからメッセージを取得するものだと思っていました。Lambdaは常に立ち上がっているわけではないので、SQSのメッセージをLambdaで処理するにはプッシュ処理(?)のようなことをしないといけないと思います。SQSはプッシュ処理もサポートしているのでしょうか。(SNSはプッシュ処理を行うとのことでした。)
A. LambdaのイベントにSQSを設定すると、AWSで内部的に動作しているLambdaがSQSにポーリングし、メッセージがあるとLamndaにイベントメッセージに含めてリクエストします。そのためプッシュしているような動きに見えます。
この内部的なLambdaからのポーリングにも課金されます。
このイベントがリリースされる前は独自のポーリングするためのコードを開発する必要がありました。
Q. サーバレス構成でDBに保存されたテーブルを(デバッグやメンテナンス目的で)のぞきたい場合、どのような方法がありますか?メンテナンス用のEC2を立ててそこからDBに接続するようなやり方がよくある方法でしょうか。
A. DynamoDBの場合は、マネジメントコンソールから項目やデータの確認ができます。
NoSQL Workbenchというクライアントツールもあります。
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/workbench.settingup.html
皆さま、ご受講いただきまして、誠にありがとうございました!
たくさんのご質問、ありがとうございました!!
トレノケートのAWS認定トレーニングでは、AWS社の厳格なテクニカルスキル及びティーチングスキルチェックに合格した認定トレーナーがコースを担当します。AWS初心者向けの研修や、AWS認定資格を目指す人向けの研修をご提供し、皆様のAWS知識修得のサポートをいたします。
・トレノケートのAWS研修(AWS認定トレーニング)はこちら
▼AWS初心者の方は、AWS Cloud Practitioner Essentialsから!
座学中心の研修で、AWSを初めて学ぶ方や、営業などで提案に関わる方におすすめです。
「AWS Certified Cloud Practitioner」資格取得を目指す方の基礎知識修得にも最適です。
→ AWS Cloud Practitioner Essentials 詳細・日程はこちらから