やーまんぶろぐ

気が向いた時にだけ書くブログ

PD充電器でオフィスへの持ち物を軽量化

私はだいたい週4日で在宅勤務、週1日でオフィス勤務をしています。オフィスに行くときの持ち物をできるだけ減らしたかったので、今回PD充電器を購入して、電源ACアダプターを持ち歩くのをやめました。

ヘッドホン、キーボード、マウスはオフィスのロッカーにもともと置いていたので、鞄にはノートPCのみになります。

PD充電器とは

PDはPower Deliveryの略で、これに対応しているとUSB Type-Cのポート利用して充電することができます。ですので付属の重たいACアダプターを持ち歩く必要がなくなります。

購入したもの

今回購入したものをメモしておきたいと思います。

W数が低いとPCは充電できません。事前に調べていただくのが一番ですが、65Wあればまず十分です。45W以上をおすすめします。

USB CケーブルもPD対応のものを選びましょう。

英語の勉強法 TOIEC300点から800点にアップ

6年ぶりに記事書きます。しばらく香港に駐在していて、あまりブログを書く時間が取れませんでした。今年の4月に日本に帰ってきたので、気が向いたときにまた書いていきたいと思います。

まずは自分が実施した英語の勉強法をまとめておこうかと思います。

英語勉強法

日本人チューターによる英語レッスン (週一回90分)

最初からネイティブの方に教わると半分以上聞き取れないだろうと思い、日本人のチューターを探しました。幸いすぐに見つかり、結果的に香港にいる間のほとんどの期間教わることになりました。お世話になりました。

発音、文法、フレーズの練習を中心に、他の人との会話でも使いたい内容の練習に使っていました。ここで話した内容と同じ内容を他の人にもするイメージです。何度か同じ内容を話すと、少しずつ英語表現が良くなっていくのが自分でもわかります。

ビジネス会話は含めずに、日常の会話がメインでした。

現地の人と英語で会話する

駐在して一番良かったのは現地の友人がたくさんできたことです。当然英語で話すしかコミュニケーションを取れないので、嫌でも英語を話す機会が作れます。(一部日本語を話せる方もいましたが)

ランチ、ディナー、ハイキング、BBQ、会社から最寄りの駅までの帰り道など毎日誰かと話すように心がけていました。ここが日本ではできないことなので、どうやって補おうか考え中です。

ビジネス英語

初日からビジネスでは英語を求められます。

幸い1対1の会話は意外とすぐできるようになりました。1対1の場合は相手が自分を待ってくれるので、勝手に話が進んでいくことはありません。

なので最初の壁は複数人で参加する会議でした。相手の会話が速いペースで進んでいくので、自分が話したいことを考えている間に話題が次に進んでいます。最初のほうは、会議が終わってから毎回メールでフォローアップしていました。

対策としては、自分の言いたいことを事前に英語で準備しておくことです。その話の時だけいきなりベラベラ話し出す感じです。最初は一語一句用意していたので時間がかかりましたが、今では箇条書き程度です。

英語が出来なくても自分のペースで話を進める一番のおすすめの手は、会議のファシリテートに立候補するか、自分で会議をオーガナイズすることです。自分が話したい内容を決め、自分が進行するので、話が勝手に進んでいくことはありません。会議の準備は大変ですが、英語が少しでも話せるようになったきっかけはこれが一番大きかった気がします。

あとは英語を使う部署に希望を出し続けることですかね。幸い日本に戻っても英語を使う部署なので、引き続き頑張ります。

NETFLIX (毎日 30分以上)

これは2年くらいしてある程度英語が聞き取れるようになってから始めました。NETFLIXで英語字幕を付けて、英語で見ていました。できるだけ毎日見るようにしていました。
見ていた内容は、英語が簡単だったので子供向けが多かったです。

Reeding (不定期)

本は不定期ですが読むようにしていました。声に出して読むのが重要かと思います。
最初のほうはペッパーピッグとか子供向けの絵本から入り、少し英語に慣れてきてからは、Who is シリーズをいくつか見ていました。あとNETFLIXで見たものを英語で読みなおすのもおすすめです。

最後に

英語が苦手だった自分も英語でコミュニケーションを取るようになれました。自分もできたので全員できるようになると思っています。できないと思ってる人は圧倒的に英語に触れる時間が少ないと思いますので、まずは何でもよいので英語に触れる時間を増やすことをおすすめします。

AWS認定プログラム ソリューションアーキテクト – プロフェッショナルに合格しました

AWS認定プログラム ソリューションアーキテクト – プロフェッショナルに合格しました。

合格に必要な情報をまとめておきます。

AWS認定プログラムについて

こちらにまとめています。模擬試験が2160円、本試験が32400円。
yamano3201.hatenablog.jp

AWS活用資料集

一番まとまってるしわかりやすいので、ここから入るとわかりやすいです。
AWS クラウドサービス活用資料集 | AWS

無料問題集

ある程度勉強したら問題集に取り組みます。
yamano3201.hatenablog.jp

模擬試験

模擬試験は悪問が多いそうです。受けなくても良いかもしれません。
【AWS認定】ソリューションアーキテクト プロフェッショナル(AWS CSA-Pro)に合格してきた【英語重要】

公式リンク

自分用のメモになりますが、受験前に一読するとヒントになると思います。
yamano3201.hatenablog.jp

有料サービス

個人的にはUdemyのPractice Testがおすすめです。
https://www.udemy.com/aws-certified-solutions-architect-professionalpractice-test/learn/v4/overview

80問×3で240問が買い切りです。
日本語に対応していないですが、解説もあり充実していました。

私の場合、試験の2週間前から1日20-30問くらいを解きながら勉強しました。

当日

170分の試験はけっこうつらかったです。

半分くらい過ぎたところから、明らかに頭が回らなくなって焦りました。

午後からの試験でしたが、
直前まで集中して勉強していたのが裏目に出てしまいました。

結果

結果はすぐに画面で確認することができます。
私の場合は80%でした。

総合評点: 80%

トピックレベルスコアリング:
1.0  High Availability and Business Continuity: 83%
2.0  Costing: 100%
3.0  Deployment Management: 87%
4.0  Network Design: 75%
5.0  Data Storage: 66%
6.0  Security: 75%
7.0  Scalability & Elasticity: 76%
8.0  Cloud Migration & Hybrid Architecture: 100%

所感

どんなに勉強しても受かるか心配だったのですが、
UdemyのPracticeTestで3回とも70%を超えたのが自信になりました。

有料ですが、一度は問題を解いてみるのがおすすめです。

AWS認定試験を受ける前に確認すべき公式リンク一覧 (ソリューションアーキテクト – プロフェッショナル)

AWS 認定ソリューションアーキテクト – プロフェッショナルを受ける前に確認すべき公式リンク一覧をまとめました。
aws.amazon.com

既にAWSについて詳しく知っている人向けの確認用のメモです。

EC2

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html

  • タグ
    • 環境ごとのEC2の保護にタグが使える

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.html

  • シングルルート I/O 仮想化 (SR-IOV)
    • 高性能ネットワーキング機能

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/virtualization_types.html

  • HVM AMI
    • ハードウェアへの高速なアクセスを可能にするハードウェア拡張を利用できる

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html

  • EBS暗号化
    • 以下の暗号化を行う
      • ボリューム内の保存データ
      • ボリュームとインスタンスの間で移動されるすべてのデータ
      • ボリュームから作成されたすべてのスナップショット
      • それらのスナップショットから作成されたすべてのボリューム

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html

  • 複数ENI、複数EIP
    • 管理用ネットワーク作成

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-capacity.html

  • InsufficientInstanceCapacityエラー
    • リスタートか再作成

AutoScaling

http://docs.aws.amazon.com/autoscaling/latest/userguide/as-suspend-resume-processes.html

  • スケーリングプロセスの中断

CloudWatch

http://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CW_Support_For_AWS.html

  • メトリクスとディメンションのリファレンス

ELB

CLBの問題が多い。今ならALB, NLBを使うのが普通。

http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-sticky-sessions.html

  • スッティキーセッション

VPC

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html

  • NACL
    • CIDR の範囲を指定してインバウンド、アウトバウンドのACLを設定

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-peering.html

  • VPC Peering
    • 2 つの VPC 間でプライベートなトラフィックのルーティングが可能
    • 今ならNLBを使ってPrivateLink接続のほうがシンプル

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_DHCP_Options.html

  • DHCP オプションセット
    • 作成後に変更できないので、新しいセットを作成して新しく関連付けする

Route53

http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html

  • DNS フェイルオーバー
    • 異常になったらDNSレベルでフェイルオーバーができる

http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-choosing-alias-non-alias.html

S3

http://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html

  • SSE
    • Amazon S3 で管理されたキーによるサーバー側の暗号化 (SSE-S3) の使用
    • AWS KMS で管理されたキーによるサーバー側の暗号化 (SSE-KMS) の使用
    • お客様が用意したキーによるサーバー側の暗号化 (SSE-C) を使用

http://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html

  • Cross-Origin Resource Sharing (CORS)
    • クロスオリジンリクエストを明示的に有効にする

http://docs.aws.amazon.com/AmazonS3/latest/dev/PresignedUrlUploadObject.html

  • 署名付き URL
    • 署名付き URL の作成者がそのオブジェクトをアップロードする権限が必要

http://docs.aws.amazon.com/AmazonS3/latest/dev/qfacts.html

  • マルチパートアップロード

RDS

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.MultiAZ.html

  • マルチ AZ
    • 異なるアベイラビリティーゾーンに同期スタンバイレプリカが自動的にプロビジョニングされる

DynamoDB

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html

  • グローバルセカンダリインデックス
    • 1 つ以上の グローバルセカンダリインデックス を作成して、そのインデックスに対して Query リクエストを発行できる

RedShift

http://docs.aws.amazon.com/redshift/latest/mgmt/working-with-snapshots.html

  • スナップショット
    • 自動と手動の 2 つのタイプがある

http://docs.aws.amazon.com/redshift/latest/dg/c_workload_mngmt_classification.html

  • ワークロード管理 (WLM)
    • デフォルトで、同時実行レベルが 5の 1 つのキューと、同時実行レベルが 1 のスーパーユーザーキューを設定する

http://docs.aws.amazon.com/redshift/latest/mgmt/purchase-reserved-node-instance.html

  • リザーブドノード
    • プロジェクトの評価フェーズ、または概念実証を開発する場合はオンデマンドを使う

Kinesis

http://docs.aws.amazon.com/streams/latest/dev/introduction.html

  • Kinesis Data Streams
    • データレコードの大量のストリームをリアルタイムで収集し、処理する

IAM

http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html

  • リクエストの許可または拒否
    • デフォルトでは、すべてのリクエストが拒否
    • 明示的な許可はこのデフォルトに優先
    • 明示的な拒否はすべての許可に優先

http://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html

  • STS
    • AWS リソースへのアクセスを制御できる一時的セキュリティ認証情報を持つ、信頼されたユーザーを作成および提供する

http://docs.aws.amazon.com/IAM/latest/UserGuide/cloudtrail-integration.html

  • AWS CloudTrail による IAM イベントのログ記録
    • 認証された AWS API 呼び出しおよび AWS サインインイベントもログに記録する

http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html

  • ウェブ ID フェデレーション
    • IdPを使用してサインインし、認証トークンを受け取って、DynamoDBにアクセスする

http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html

  • IAMロール
    • パスワードやアクセスキーが不要

http://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html

  • クロスアカウントアクセス
    • 特定のアカウントにあるリソースを別のアカウントのユーザーと共有できる

http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-saml.html

http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_disable-perms.html

  • 一時的なセキュリティ認証情報のアクセス権限を無効
    • 一時的なセキュリティ認証情報は、期限が切れるまで有効で、取り消すことはできない
    • ただし、アクセス権限は、AWS リクエストのたびに評価されるため、アクセス権を変更することで認証情報を取り消すのと同等の効果を得ることができる

OpsWorks

http://docs.aws.amazon.com/opsworks/latest/userguide/common-issues-troubleshoot.html

  • UnrecognizedClientExceptionエラーの原因
    • IAM ユーザーまたはロール削除
    • ボリュームまたはストレージの設定編集
    • 手動でEIP追加

http://docs.aws.amazon.com/opsworks/latest/userguide/best-practices-updates.html

http://docs.aws.amazon.com/opsworks/latest/userguide/layers-elb.html

http://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook-events.html

  • ライフサイクルイベント
  • Setup, Configure, Deploy, Undeploy, Shutdown

CloudFormation

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-findinmap.html

  • Fn::FindInMap
    • マッピングのキーに対応する値を返す
    • 例、regionごとのAMIを定義

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html

  • IAMロール
    • InstanceProfile リソースは、IAM ロールの外側で指定
    • Roles プロパティで対応するロール名を指定することによってそのロールを参照

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waitcondition.html

  • WaitCondition
    • スタックの作成の外部での設定アクションを使ったスタックリソース作成を調整するため
    • 設定プロセスのステータスを追跡するため

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/conditions-section-structure.html

  • Conditions
    • 例、本稼働用のスタックの場合に動作を変える

CloudHSM

http://docs.aws.amazon.com/cloudhsm/latest/userguide/generate_ssh_key.html

  • CloudHSM
    • 暗号化オペレーションを処理し、暗号化キーの安全なストレージを提供するコンピューティングデバイス

AWS Fargateを触ってみた

Fargateとは、コンテナを扱う上で、サーバーやクラスタの管理が不要になるサービスです。

こちらを参考にチュートリアルを起動してみました。
www.ketancho.net

起動させたいコンテナイメージさえあれば簡単に動かせそうで、非常に興味深いサービスです。

メモ

  • VPCについて
    • GUIからだと新規VPCしか選べない
    • 作成後もVPCは変更できなそう
  • ALBについて
    • ALBと連携させることが可能
    • GUIだと新規しかつくれない
    • GUIからだとポートも選択肢が80だけ
    • ALBのリスナーは作成後に編集できるので、後から443に変更することできそう
  • CloudFormationについて

Amazon API Gateway のリソースポリシーでアクセスコントロール

Amazon API Gateway のリソースポリシーでアクセスコントロールできるようになりました。
Amazon API Gateway が、API のリソースポリシーをサポート

公式サンプルではAWSアカウントのホワイトリスト、IP範囲のブラックリストがあります。

他にも時間やユーザーエージェント(UA)やユーザーIDなどのキーが用意されていて、各種設定を組み合わせたアクセスコントロールが簡単に設定できます。
AWS Conditions that can be used in API Gateway Resource Policies - Amazon API Gateway

以下、UAとIP範囲のアクセスコントロールを例にメモしておきます。

UAとIP範囲のAND条件によるアクセスコントロール

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "arn:aws:execute-api:ap-northeast-1:XXXXXXXXXXXX:yyyyyyyyyy/*/GET/",
            "Condition": {
               "StringLike": {
                    "aws:UserAgent": "test"
                },
                "IpAddress": {
                    "aws:SourceIp": "ZZ.ZZ.ZZ.ZZ/ZZ"
                }
            }
        }
    ]
}

UAとIP範囲のOR条件によるアクセスコントロール

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "arn:aws:execute-api:ap-northeast-1:XXXXXXXXXXXX:yyyyyyyyyy/*/GET/",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "ZZ.ZZ.ZZ.ZZ/ZZ"
                }
            }
        },
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "arn:aws:execute-api:ap-northeast-1:XXXXXXXXXXXX:yyyyyyyyyy/*/GET/",
            "Condition": {
                "StringLike": {
                    "aws:UserAgent": "test"
                }
            }
        }
    ]
}

最後に

ステージング環境で、Webアクセスは社内からのアクセスに絞りたい、SIM利用のIoTデバイスからはUAによるアクセスに絞りたい場合は、UAとIP範囲のOR条件によるアクセスコントロールが使えそうです。

また、LBで使いたい場合は、API Gateway + NLBの構成も考えられそうです。
Amazon API Gateway でプライベート VPC とのエンドポイント統合をサポート

既存のセキュリティグループだとUAによるアクセスコントロールができないので、非常に使い勝手が良さそうです。

AWS Well-Architected Lens – Serverless Applications まとめ コスト編

アーキテクチャを検討する上で、とても役に立つフレームワークであるAWS Well Archtected Framework。
サーバーレス版が公開されたのでベストプラクティスについてまとめておきます。
https://d1.awsstatic.com/whitepapers/architecture/AWS-Serverless-Applications-Lens.pdf

運用編セキュリティ編信頼性編パフォーマンス編コスト編の5回に分けてメモしていきます。

解釈が間違っているかもしれないので、ご注意ください。

SERVCOST 1:最適なラムダメモリ割り当てを決定するための戦略は何ですか?

  • 最良のコスト/パフォーマンスを確保するには、テスト・シナリオに基づく最適なメモリー割り振りが必要
  • メモリのチューニングとタイムアウトの微調整は、パフォーマンスや運用だけでなく、コスト削減にもつながる。
  • メモリを少なくすると、各Lambda関数の実行に時間がかかり、100ミリ秒の請求単位で増分されるため、料金が高くなる可能性がある。
  • AWSは新しいサービスや機能をリリースするため、引き続きコスト効果を確認し最適化を繰り返す必要がある。

SERVCOST 2:ラムダ関数のコードロギングの戦略は何ですか?

  • LambdaはCloud Watch Logsを使用してログを取得できる。ログの取り込みとストレージ量にコストが発生する。
    • 環境変数によって必要なときはいつでも正しいログレベルを設定する。特別にアクティブ化されない限り、ログイングされたログはDEBUGではなくINFOにしておく。
  • ログのコストを削減する方法。
    • AWS LambdaのAmazon CloudWatch Logsグループのログ保持期間を使用する。
    • Amazon S3Amazon ESなどのより費用対効果の高いプラットフォームにログをエクスポートする。

SERVCOST 3:複雑さを軽減するために必要なLambda関数を実行するコード・アーキテクチャーはありますか?

  • 不要なLambdaの実行を避ける。
  • API GatewayやIoTと他のAWSサービスを直接統合すると、Lambdaのコスト増加と、これらのリソース管理を回避できる。
  • Lambdaのコードを最適化する。
  • 不要な呼び出しを避けるケースを検討する。下にいくほどコストやレイテンシを削減することができるが、一番下はRESTful APIの恩恵を受けることはできない。

SERVCOST 4:できるだけ短い時間で実行するようにコードをどのように最適化していますか?

  • 長時間Lambdaを実行する必要がある場合は、Lambda関数で実装する代わりにStep Functionsを使用して待機状態を実装する。
  • データストアやその他のサービス/リソースへの接続を維持するためにグローバル変数を使用してコードを最適化すると、パフォーマンスが向上し、実行時間が短縮され、コストも削減される。