Posts

Showing posts from 2017

Atehna JDBC ドライバで Credential を明示的に指定せずに Athena にアクセスする

少し前まで対応していなかったのか、JDBC ドライバで Athena にアクセスする際に Credential を明示的に渡さず、EC2 インスタンスなどに付与されているロールの権限でアクセスする方法が探しても見つからなかったのですが、(いつからかはわかりませんが) 今はできるようになっていました。
これで Credential の管理を気にせずに Athena JDBC ドライバが使えます。

How to configure aws_credentials_provider_class に com.amazonaws.athena.jdbc.shaded.com.amazonaws.auth.DefaultAWSCredentialsProviderChain を指定する。これだけです。
EC2 でも Lambda でもこれで OK。

How it worksJavaDoc によると、DefaultAWSCredentialsProviderChain クラスは

環境変数Java のシステムプロパティ~/.aws/credentialsECS、EC2 のインスタンスメタデータ
を探してアクセスキー ID、シークレットアクセスキーを取得するように動作します。AWS CLI の Credential を探す動作と似てますね (boto3 っぽい感じ)。

このクラスを使うと、特にプロパティファイルや ~/.aws/credentials で認証情報を指定していない場合、EC2 の場合はインスタンスメタデータから、Lambda の場合は環境変数からアクセスキー ID、シークレットアクセスキーを取得し、EC2 インスタンスや Lambda についているロールの権限で Athena にアクセスできるようになります。

ちなみにこの DefaultAWSCredentialsProviderChain を使った方法、今の所は AWS Developer Guide では Undocumented の模様。Athena JDBC ドライバのドキュメントには InstanceProfileCredentialsProvider を使った方法は書いてありますが、このクラスはあくまで EC2 インスタンス用 (インスタンスメタデータから取得できる場合のみ使える方法) なので、Lambd…

Solution Architect Professional に合格しました

2017/4/15 に Solution Architect Professional にチャレンジし、なんとか合格しました。2 年経ったら更新しないといけないので、2 年後の自分に向けて備忘録的なものを残しておきます。

どういう試験か Associate は AWS の各サービスが提供する機能や使い所を聞いてくる問題が多く、対策本もあるので、ざっと勉強すれば割といけてしまいます。

一方、Professional は多くの問題が、何らかの前提条件や制約条件と、システム構築や改修に関する要件が与えられ、その上で AWS を使って要件を満たすにはどのような設計やサービスの使い方をすべきか、という点を問われます。

例えば、
オンプレで多層 (Web レイヤー、APP レイヤー、DB レイヤー) の Web システムを運用しているお客様がいるWeb レイヤーでは静的コンテンツに対するリクエスト、APP レイヤーでは動的コンテンツに対するリクエストをさばいているキャンペーンを開催したところ、ピーク時に最大 XXX rps のリクエストがあり、Web レイヤーでリクエストを捌き切れないという問題が発生した次のキャンペーンが一週間後に迫っているお客様は AWS を使って可用性を確保したいと考えているどのような提案ができるか みたいな設問に対して、AWS を使ったソリューションが選択肢で与えられている、という感じです (実際こんな問題が出たわけじゃないです。ただの妄想です)。

選択肢には AWS じゃそんなのできないよ (そんな機能ない) というのが紛れている場合もありますが、どれをとっても実現は可能で、お客様の要件やステークホルダーが最も気にしているポイントを満たす上でベストな選択肢はどれか選べ、というものも結構多いです。
なので、サービスの機能を勉強してそれぞれ何ができるのか知っているだけではきつくて、設問の状況をしっかり理解して適切なソリューションを選べないといけないです。

上の妄想問題の場合だと、次のキャンペーンが一週間後となっているので、フルに AWS に移行するようなソリューション (CloudFront + ELB + EC2 + AutoScaling + RDS) は多分期間的に NG ですね。
Web レイヤーでリクエストを捌けなかったと言っているので、静的コ…

「Cassandra: The Definitive Guide 2nd Edition」を読んだ

新しい概念をいきなり英語で学ぶのはハードルが高いということで、以前買ってパラパラめくったっきりになっていた日本語の第1版を読んだ後に第2版に手を出したので、結局トータルで2ヶ月近くかかってようやく読み終えました。



元々は前職でWebサービスを開発していた時、データストアとして採用するかどうかの検討のために読み始めたのですが、転職してしまったため本来の目的を果たすことはありませんでした。が、分散システムのアーキテクチャについては非常に参考になりました。分散についてはまだまだ知らないことが多く、もっと勉強しないといかんなぁと思わされた書籍でした。

TOCBeyond Relational DatabasesIntroducing CassandraInstalling CassandraThe Cassandra Query LanguageData ModelingThe Cassandra ArchitectureConfiguring CassandraClientsReading and Writing DataMonitoringMaintenancePerformance TuningSecurityDeploying and Integrating
個人的には、Chapter 5のモデリングの話(「クエリ」を中心にモデリングすべきである)が参考になったのと、Chapter 6のCassandraのアーキテクチャ、Chapter 9の書き込み、読み込みが内部でどう処理されているかという話が面白かったです。