全般

Q: Amazon CodeGuru とは何ですか?

CodeGuru には、Amazon CodeGuru Security と Amazon CodeGuru Profiler の 2 つのコンポーネントがあります。CodeGuru Security は、機械学習 (ML) とプログラム分析に基づくツールで、アプリケーションコードのセキュリティ脆弱性を発見します。CodeGuru Security はハードコードされた認証情報もスキャンします。CodeGuru Profiler は、実稼働状態のアプリケーションのパフォーマンスを最適化し、最もコストが高いコード行を特定することで、運用コストを大幅に削減します。

Q: CodeGuru の使用を開始するにはどうすればよいですか?

CodeGuru が一般公開されました。Amazon CodeGuru コンソールで今すぐお使いいただけます。

Q: どの AWS リージョンでCodeGuru を使用できますか?

サポートされている AWS リージョンを確認するには、すべての AWS グローバルインフラストラクチャの AWS リージョン表をご覧ください。詳細については、AWS 全般のリファレンスの「リージョンとエンドポイント」を参照してください。

Amazon CodeGuru セキュリティ

Q: Amazon CodeGuru Security とは何ですか?

CodeGuru Security は、ML とプログラム解析ベースのコードスキャンツールで、アプリケーションコードのセキュリティ脆弱性を発見します。

Q: どのプログラミング言語をサポートしていますか?

CodeGuru Security は現在、Java、Python、JavaScript、TypeScript、C#、CloudFormation、Terraform、Go、Ruby のスキャンをサポートしています。

Q: CodeGuru Security ではどのような種類の問題が検出されますか?

CodeGuru セキュリティは、オープンワールドワイドアプリケーションセキュリティプロジェクト (OWASP) の上位 10 件の問題共通弱点列挙 (CWE) の上位 25 件の問題、ログインジェクション、シークレット、AWS API と SDK の安全な使用を検出します。 CodeGuru セキュリティによって検出された脆弱性の詳細については、Amazon CodeGuru Detector ライブラリを参照してください。

Q: CodeGuru セキュリティを使い始めるにはどうすればいいですか?

CodeGuru コンソールにアクセスして、CodeGuru セキュリティをデベロッパーライフサイクルに統合してください。継続的インテグレーションおよび継続的デリバリー (CI/CD) ツール、リポジトリスキャン、統合開発環境 (IDE) に統合できます。

Q: CodeGuru セキュリティは私のコードにアクセスしますか?

CodeGuru セキュリティでは、推奨事項を生成するため、コードの読み取り専用アクセスが必要です。お客様の信頼、プライバシー、そしてお客様のコンテンツのセキュリティは、私たちの最優先事項です。AWS は、お客様のコンテンツへの不正アクセスや開示を防止し、AWS の利用がお客様に対するコミットメントを遵守することを保証するために、転送中の暗号化を含む適切な管理を実施します。また、カスタマーマネージド型の KMS キー (CMCMK) による暗号化もサポートしています。詳細については、「データプライバシーのよくある質問」を参照してください。

Q: CodeGuru セキュリティは私のコードのコピーを保存しますか?

いいえ、CodeGuru セキュリティはソースコードを保存しません。

Q: CodeGuru セキュリティはインテリジェントな推奨事項を提供するため、どのようにトレーニングされていますか?

CodeGuru セキュリティは、ロジスティック回帰とニューラルネットワークを組み合わせたルールマイニングと教師あり ML モデルを使用してトレーニングされます。たとえば、機密データリークに関するトレーニング中には、それらが使用されているすべてのコードパスに対して完全なコード分析を行い、対応する機能セットを作成します。さらに、それらをロジスティック回帰モデルおよび畳み込みニューラルネットワーク (CNN) への入力情報として使用します。

Q: CodeGuru セキュリティはどの統合をサポートしていますか?

CodeGuru セキュリティは、Amazon Inspector の Lambda コードスキャンと統合されています。リポジトリや CI/CD ツールとのさらなる統合が間もなく開始されます。

Amazon CodeGuru Profiler

Q: Amazon CodeGuru Profiler とは何ですか?

CodeGuru Profiler により、デベロッパーおよび IT オペレーターは、アプリケーションのランタイム動作を簡単に把握し、パフォーマンスを向上させ、インフラストラクチャのコストを削減できます。Amazon CodeGuru Profiler は、アプリケーションのランタイムプロファイルを分析し、コード内で最も関連性の高い部分のパフォーマンスを向上させる方法についてのインテリジェントな推奨事項と可視化をデベロッパーに提供します。

Q: プロファイリンググループとは何ですか?

プロファイリンググループは、ユーザーが作成する論理グループで、1 つのアプリケーションの境界を表します。たとえばマイクロサービスアーキテクチャでは、割り当てられたマイクロサービスのプロファイルがプロファイリンググループにより集約され、それらすべてが 1 つのプロファイルに構成されます。

Q: 既にコードには、広範囲のログ記録を統合済みです。まだプロファイルする必要がありますか?

ログ記録は (CPU の使用率ではなく) レイテンシーのみを監視するため、ログ記録の実行時間は限られたシナリオについてしか効果がありません。また、デベロッパーは (アプリケーションのパフォーマンスに影響を与えることなく) アプリケーションのすべての機能をログ記録する必要があるため、実装は時間を要する作業となります。そのため、デベロッパーは稼働中のアプリケーションを効果的に監視およびトラブルシューティングするために必要なツールを利用できなくなります。ここで、プロファイリングが登場します。CodeGuru Profiler は、シナリオに関係なく、そのアプリケーションの動作で発生するすべてのデータを収集するように設計されています。CodeGuru Profiler は、一般的に見られるパフォーマンスの非効率性に関する知識ベースを参照することで、稼働中のアプリケーション内でパフォーマンスに影響しているコードパターンを自動的に検出します。開発者は、提供された推奨事項に従って問題を修正できます。

Q: CodeGuru Profiler は、従来の APM やスタンドアロンプロファイラーとどう違うのですか?

従来の APM は、モニタリング、トレース、アプリケーションのパフォーマンスに関する有用なデータを提供します。CodeGuru Profiler は、アプリケーションのランタイムデータの視覚化や、検出されたパフォーマンスの問題に関する実用的な推奨事項を提供することにより、これらの APM の機能を補完します。また、機械学習を使用してアプリケーションプロファイルの異常を検出し、異常なコード行を特定して警告します。CodeGuru Profiler を使用すると、パフォーマンスの最適化に最も効果的なコードの部分や、コストを削減できる可能性などを簡単に確認しながら、その対処方法に関するガイダンスを受けることができます。その際、パフォーマンスエンジニアリングの高度な知識は必要ありません。Amazon CodeGuru Profiler は、EC2 インスタンス、コンテナー、AWS Lambda を含むサーバーレスコンピューティングプラットフォームとオンプレミスの両方をプロファイリングできます。さらに、一部のスタンドアロンプロファイラーはテスト環境でのみ実行されるように設計されていますが、CodeGuru Profiler は、本番環境で、本番トラフィックの負荷の下で、さらにアプリケーションに影響を与えずに継続的に実行できるように設計されています。これは、ベアメタルホストでの実行時を含む、本番環境での運用上の問題のトラブルシューティングに役立ちます。

Q: どのタイプのアプリケーションをプロファイルできますか?

CodeGuru Profiler は、Amazon EC2 でホストされているアプリケーション、Amazon ECS と Amazon EKS で実行されるコンテナ化されたアプリケーション、および AWS Fargate と AWS Lambda で実行されているサーバーレスアプリケーションで動作します。 さらに、CodeGuru Profiler をオンプレミスでも実行できます。

Q: CodeGuru Profiler は、AWS Lambda でホストされているアプリケーションのパフォーマンスにどのように影響しますか?

CodeGuru Profiler のエージェントは、AWS Lambda 関数に割り当てられたリソース (CPU、メモリ) を使用します。このサービスは、プロセス内のスレッドとして実行されますが、アプリケーションのパフォーマンスには、最低限の影響しか与えないように調整されています。アプリケーションにおいて、AWS Lambda 関数用のリソースの大部分を消費している場合は、このエージェントが適切に機能できるよう、リソースの追加を検討してください。

Q: どのプログラミング言語をサポートしていますか?

CodeGuru Profiler は現在、Java、Python (プレビュー版) 、および Scala や Kotlin などの JVM 言語をサポートしています。

Q: CodeGuru Profiler はどう機能しますか?

CodeGuru Profiler は、エージェント、プロファイラーサービス、インテリジェントな推奨事項の 3 つの部分で構成されています。エージェントは、コマンドラインによりアプリケーションとともに起動し、アプリケーションの一部のプロセス内のスレッドとして実行されます。エージェントを実行している各サービスインスタンスから取得したデータが 5 分ごとにプロファイラーサービスに送信され、そこで集約されます。次に、CodeGuru Profiler はインタラクティブなフレームグラフでプロファイルデータを公開します。これにより、アプリケーションのパフォーマンスを視覚化できます。また、CodeGuru Profiler は、プロファイルされたデータを継続的にスキャンし、Amazon とパフォーマンスエンジニアリングのベストプラクティスと比較します。パフォーマンスの問題が検出された場合は、インテリジェントな推奨事項を積極的に知らせます。さらに、ML を利用して、アプリケーションのランタイムデータを継続的に分析し、アプリケーションプロファイルの異常を検出し、異常なコード行を特定して警告します。

Q: CodeGuru Profiler はどのリソースをプロファイルし、どの言語をサポートしていますか?

CodeGuru Profiler は、Java およびその他の JVM 言語の CPU (アクティブ CPU とウォールクロック時間) とメモリ (ヒープサマリー)、および Python アプリケーションの CPU (ウォールクロック時間) をプロファイルします。

Q: 同じアプリケーションから CPU とメモリの両方の情報を取得できますか?

はい。メモリプロファイリングを有効にしてプロファイリングを開始すると、CodeGuru Profiler はアプリケーションの CPU 情報とメモリ情報の両方を収集します。特定のアプリケーションの CPU データとメモリデータの両方を取得するために必要なプロファイリンググループは 1 つだけです。

Q: CodeGuru Profiler はどのようなメモリプロファイリング情報を提供しますか?

CodeGuru Profiler は、ヒープサマリー情報を提供します。ヒープサマリーは、特定の時間枠 (通常は 5 分) におけるオブジェクトタイプ (String、int、char[] など) およびカスタムタイプごとのメモリ使用率を統合して表示します。CodeGuru Profiler は、オブジェクトの合計サイズとその数の両方を追跡します。これらのメトリックはタイムライングラフで表示されるため、オブジェクトタイプごとのメモリ使用率の傾向とピークを簡単に見つけることができます。

Q: ヒープサマリー情報で何ができますか?

ヒープサマリーは、2 つのシナリオで役立ちます。まず、潜在的なメモリリークを見つけることができます。1 つ以上のオブジェクトタイプのメモリ使用率の曲線が絶えず増加している場合は、リークを示している可能性があり、メモリ不足エラーやアプリケーションのクラッシュにつながる可能性があります。2 つ目のシナリオは、アプリケーションのメモリフットプリントを最適化する場合です。この場合、オブジェクトタイプごとのメモリ使用率の分析結果は、どこに焦点を合わせるかを知るのに役立ちます。たとえば、予想外に大量のメモリが特定のオブジェクトタイプに割り当てられていることを知れば、そのタイプのオブジェクトの割り当てと参照しているアプリケーションの部分を中心に分析と最適化すればよいということになります。

お客様の詳細はこちら

Amazon CodeGuru のお客様のページをご覧ください。

詳細 
無料のアカウントにサインアップ

AWS 無料利用枠にすぐにアクセスできます。 

サインアップ 
コンソールで構築を開始する

AWS マネジメントコンソールで Amazon CodeGuru の構築を始めましょう。

サインイン