開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service...

280
Amazon Elasticsearch Service 開発者ガイド API バージョン 2015-01-01

Transcript of 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service...

Page 1: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service開発者ガイド

API バージョン 2015-01-01

Page 2: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド

Amazon Elasticsearch Service: 開発者ガイドCopyright © 2019 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's,in any manner that is likely to cause confusion among customers, or in any manner that disparages or discreditsAmazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may notbe affiliated with, connected to, or sponsored by Amazon.

Page 3: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド

Table of ContentsAmazon Elasticsearch Service とは ....................................................................................................... 1

Amazon Elasticsearch Service の機能 ............................................................................................ 1サポートされる Elasticsearch バージョン ....................................................................................... 2Amazon ES の料金表 .................................................................................................................. 2Amazon Elasticsearch Service の使用開始 ..................................................................................... 3関連サービス ............................................................................................................................. 3

Amazon ES ドメインの開始方法 ........................................................................................................... 5ステップ 1: Amazon ES ドメインを作成する .................................................................................. 5ステップ 2: インデックス作成のためにデータをアップロードする ..................................................... 7ステップ 3: Amazon ES ドメインでドキュメントを検索する ............................................................ 8ステップ 4: Amazon ES ドメインを削除する .................................................................................. 9

Amazon ES ドメインの作成と設定 ...................................................................................................... 10Amazon ES ドメインの作成 ...................................................................................................... 10

Amazon ES ドメイン (コンソール) の作成 ............................................................................ 10Amazon ES ドメインの作成 (AWS CLI) ............................................................................... 13Amazon ES (AWS SDK) ドメインの作成 .............................................................................. 14

Amazon ES ドメインの設定 ....................................................................................................... 14Amazon ES ドメイン (コンソール) の設定 ............................................................................ 14Amazon ES ドメインの設定 (AWS CLI) ............................................................................... 15Amazon ES (AWS SDK) ドメインの設定 .............................................................................. 15

EBS ベースのストレージの設定 .................................................................................................. 15EBS ベースのストレージの設定 (コンソール) ........................................................................ 15EBS ベースのストレージの設定 (AWS CLI) .......................................................................... 16EBS ベースのストレージの設定 (AWS SDK) ......................................................................... 17

VPC アクセス設定の変更 ........................................................................................................... 17VPC アクセスの設定 (コンソール) ....................................................................................... 17

Kibana の Amazon Cognito 認証の設定 ........................................................................................ 18アクセス ポリシーの設定 ........................................................................................................... 18

アクセスポリシーの設定 (コンソール) .................................................................................. 18アクセス ポリシーの設定 (AWS CLI) ................................................................................... 19アクセスポリシーの設定 (AWS SDK) ................................................................................... 20

詳細オプションの設定 ............................................................................................................... 20詳細オプションの設定 (コンソール) ..................................................................................... 20詳細オプションの設定 (AWS CLI) ....................................................................................... 21詳細オプションの設定 (AWS SDK) ...................................................................................... 21

ログの設定 ............................................................................................................................... 21ログ発行の有効化 (コンソール) ........................................................................................... 22ログ発行の有効化 (AWS CLI) ............................................................................................. 23ログ発行の有効化 (AWS SDK) ............................................................................................ 24スローログの Elasticsearch ログしきい値の設定 .................................................................... 24ログの表示 ....................................................................................................................... 25

Amazon ES ドメインの管理 ............................................................................................................... 26設定変更について ...................................................................................................................... 26設定変更に関連する料金 ............................................................................................................ 27サービスソフトウェア更新 ......................................................................................................... 28マルチ AZ ドメインの設定 ......................................................................................................... 29

シャード分散 .................................................................................................................... 29専用マスターノード分散 .................................................................................................... 31アベイラビリティーゾーンの中断 ........................................................................................ 32

ヘルスダッシュボードの解釈 ...................................................................................................... 33Amazon CloudWatch を使用した、クラスターメトリクスと統計情報の監視 (コンソール) .................... 34

クラスターメトリクス ....................................................................................................... 34専用マスターノードメトリクス ........................................................................................... 37EBS ボリュームメトリクス ................................................................................................ 38

API バージョン 2015-01-01iii

Page 4: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド

インスタンスメトリクス .................................................................................................... 39UltraWarm メトリクス ....................................................................................................... 42

Amazon Elasticsearch Service ドメインのタグ付け ........................................................................ 43タグの操作 (コンソール) .................................................................................................... 43タグの操作 (AWS CLI) ....................................................................................................... 44タグの操作 (AWS SDK) ..................................................................................................... 45

セキュリティ .................................................................................................................................... 46データ保護 ............................................................................................................................... 46

保管時の暗号化 ................................................................................................................. 47ノード間の暗号化 .............................................................................................................. 49

Identity and Access Management ................................................................................................ 50ポリシーのタイプ .............................................................................................................. 50Amazon ES リクエストの作成と署名 ................................................................................... 53複数のポリシーが衝突する場合 ........................................................................................... 54ポリシーエレメントのレファレンス ..................................................................................... 55詳細オプションと API に関する考慮事項 .............................................................................. 59アクセス ポリシーの設定 ................................................................................................... 61追加のサンプルポリシー .................................................................................................... 62

ロギングとモニタリング ............................................................................................................ 62CloudTrail 内の Amazon Elasticsearch Service 情報 ............................................................... 62Amazon Elasticsearch Service ログファイルエントリの概要 ................................................... 63

コンプライアンス検証 ............................................................................................................... 64弾力 ........................................................................................................................................ 65インフラストラクチャセキュリティ ............................................................................................. 65

データのインデックス作成 ................................................................................................................. 67インデックス作成の概要 ............................................................................................................ 67インデックスの命名制限 ............................................................................................................ 69レスポンスサイズの削減 ............................................................................................................ 69

HTTP リクエストの署名 .................................................................................................................... 71Java ........................................................................................................................................ 71Python ..................................................................................................................................... 73Ruby ....................................................................................................................................... 76Node ....................................................................................................................................... 77Go .......................................................................................................................................... 78

Amazon ES にストリーミングデータをロードする ................................................................................ 80Amazon S3 から Amazon ES にストリーミングデータをロードする ................................................. 80

前提条件 .......................................................................................................................... 80Lambda デプロイパッケージの作成 ..................................................................................... 81Lambda 関数の作成 .......................................................................................................... 82Lambda 関数のテスト ....................................................................................................... 84

Amazon Kinesis Data Streams から Amazon ES にストリーミングデータをロードする ....................... 85前提条件 .......................................................................................................................... 85Lambda 関数の作成 .......................................................................................................... 86Lambda 関数のテスト ....................................................................................................... 87

Amazon DynamoDB から Amazon ES にストリーミングデータをロードする ..................................... 87前提条件 .......................................................................................................................... 87Lambda 関数を作成する .................................................................................................... 89Lambda 関数のテスト ....................................................................................................... 90

Amazon Kinesis Data Firehose から Amazon ES にストリーミングデータをロードする ....................... 90Amazon CloudWatch から Amazon ES にストリーミングデータをロードする .................................... 91Amazon ES から AWS IoT へのデータのロード ............................................................................ 91

データの検索 .................................................................................................................................... 92URI 検索 ................................................................................................................................. 92リクエストボディ検索 ............................................................................................................... 93

ブーストフィールド .......................................................................................................... 94検索結果のページ分割 ....................................................................................................... 94検索結果のハイライト ....................................................................................................... 94

API バージョン 2015-01-01iv

Page 5: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド

Count API ........................................................................................................................ 96インデックススナップショットの使用 .................................................................................................. 97

手動スナップショット前提条件 ................................................................................................... 98手動スナップショットレポジトリの登録 ....................................................................................... 99

Python クライアントのサンプリング .................................................................................. 100手動スナップショットの撮影 ..................................................................................................... 102スナップショットの復元 ........................................................................................................... 103

Elasticsearch のアップグレード ........................................................................................................ 105アップグレードのトラブルシューティング .................................................................................. 106アップグレードの開始 .............................................................................................................. 107スナップショットを使用したデータの移行 .................................................................................. 108

Kibana と Logstash ......................................................................................................................... 111Kibana ................................................................................................................................... 111

Kibana へのアクセスのコントロール .................................................................................. 111WMS マップサーバーを使用するように Kibana を設定する ................................................... 114Kibana ローカルサーバーを Amazon ES に接続する ............................................................ 114

Logstash プラグインを使用した、データの一括読み込み ............................................................... 115Kibana の認証 ................................................................................................................................ 117

前提条件 ................................................................................................................................ 117ユーザープールについて ................................................................................................... 118ID プールについて ........................................................................................................... 118IAM ロールについて ........................................................................................................ 118

Amazon ES ドメインの設定 ..................................................................................................... 119Amazon Cognito 認証の設定 (コンソール) ........................................................................... 119Amazon Cognito 認証の設定 (AWS CLI) ............................................................................. 120Amazon Cognito 認証の設定 (AWS SDK) ............................................................................ 121

認証されたロールの許可 ........................................................................................................... 121ID プロバイダの設定 ................................................................................................................ 122(オプション) きめ細かなアクセスの設定 ..................................................................................... 123

ユーザーグループとトークン ............................................................................................. 124ルール ........................................................................................................................... 125

(オプション) ログインページのカスタマイズ ............................................................................... 125(省略可能) アドバンスドセキュリティを設定する ......................................................................... 125テスト ................................................................................................................................... 125制限 ...................................................................................................................................... 125一般的な設定の問題 ................................................................................................................. 126Kibana の Amazon Cognito 認証の無効化 ................................................................................... 128Kibana に Amazon Cognito 認証を使用するドメインの削除 ........................................................... 128

アラート ........................................................................................................................................ 129違い ...................................................................................................................................... 129

Amazon SNS のサポート ................................................................................................. 129アラート設定 .................................................................................................................. 130

SQL サポート ................................................................................................................................. 131サンプル呼び出し .................................................................................................................... 131注意と相違点 .......................................................................................................................... 131JDBC ドライバー .................................................................................................................... 131

VPC サポート ................................................................................................................................. 132制約事項 ................................................................................................................................ 134VPC ドメインのアクセスポリシーについて ................................................................................. 134VPC ドメインのテスト ............................................................................................................ 135前提条件 ................................................................................................................................ 136VPC を作成する ...................................................................................................................... 137VPC サブネットで IP アドレスをリザーブする ............................................................................ 138VPC アクセス用のサービスにリンクされたロール ........................................................................ 139パブリックアクセスから VPC アクセスに移行する ....................................................................... 139Amazon VPC ドキュメント ...................................................................................................... 139

ベストプラクティス ......................................................................................................................... 141

API バージョン 2015-01-01v

Page 6: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド

Amazon ES ドメインのサイジング ............................................................................................ 141ストレージ要件の計算 ...................................................................................................... 142シャード数の選択 ............................................................................................................ 143インスタンスタイプとテストの選択 ................................................................................... 143

専用マスターノード ................................................................................................................. 144推奨 CloudWatch アラーム ....................................................................................................... 147

UltraWarm ストレージ (プレビュー) ................................................................................................... 149パブリックプレビューの制限 ..................................................................................................... 149UltraWarm ストレージ要件の計算 .............................................................................................. 150UltraWarm 価格設定 ................................................................................................................ 150UltraWarm ストレージを使用したドメインの作成 ......................................................................... 150

CLI コマンドの例 ............................................................................................................ 150設定 API リクエストの例 .................................................................................................. 151

UltraWarm ストレージへのインデックスの移行 ............................................................................ 151ホットインデックスとウォームインデックスのリスト表示 ............................................................. 154スナップショットからのウォームインデックスの復元 ................................................................... 154

ペタバイト規模 ............................................................................................................................... 156Curator を使用したデータの更新 ....................................................................................................... 158

サンプルコード ....................................................................................................................... 158Basic Settings ......................................................................................................................... 161トリガ ................................................................................................................................... 161アクセス許可 .......................................................................................................................... 161

トラブルシューティング ................................................................................................................... 163Kibana にアクセスできない ...................................................................................................... 163VPC ドメインにアクセスできない ............................................................................................. 163読み取り専用状態のクラスター ................................................................................................. 163赤のクラスター状態 ................................................................................................................. 164

処理の継続的な高負荷からの復旧 ...................................................................................... 165黄色のクラスター状態 .............................................................................................................. 166ClusterBlockException .............................................................................................................. 166

使用可能なストレージ領域の不足 ...................................................................................... 167メモリ不足によるディスクのブロック ................................................................................ 167

JVM OutOfMemoryError ........................................................................................................... 167障害が発生したクラスターノード .............................................................................................. 168インデックスが閉じない ........................................................................................................... 168ノードに SSH 接続できない ..................................................................................................... 168「オブジェクトのストレージクラスで有効ではない」スナップショットエラー ................................. 169無効なホストヘッダー .............................................................................................................. 169アップグレード後はダウングレードできない ............................................................................... 169すべてのリージョンのドメインの概要が必要 ............................................................................... 169Kibana 使用時のブラウザエラー ................................................................................................ 170VPC アクセス選択後の許可されていない操作 .............................................................................. 170VPC ドメイン作成後、読み込みでスタックする ........................................................................... 170Alpine Linux から接続できない .................................................................................................. 171SDK を使用する場合の証明書のエラー ....................................................................................... 171

全般的なリファレンス ...................................................................................................................... 172サポートされるインスタンスタイプ ........................................................................................... 172Elasticsearch バージョン別の機能 ............................................................................................. 173サポートされている Elasticsearch オペレーション ....................................................................... 174

API の重要な相違点 ......................................................................................................... 174バージョン 7.1 ................................................................................................................ 175バージョン 6.8 ................................................................................................................ 176バージョン 6.7 ................................................................................................................ 177バージョン 6.5 ................................................................................................................ 178バージョン 6.4 ................................................................................................................ 179バージョン 6.3 ................................................................................................................ 180バージョン 6.2 ................................................................................................................ 181

API バージョン 2015-01-01vi

Page 7: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド

バージョン 6.0 ................................................................................................................ 181バージョン 5.6 ................................................................................................................ 182バージョン 5.5 ................................................................................................................ 183バージョン 5.3 ................................................................................................................ 184バージョン 5.1 ................................................................................................................ 185バージョン 2.3 ................................................................................................................ 186バージョン 1.5 ................................................................................................................ 186

サポートされるプラグイン ........................................................................................................ 186出力プラグイン ............................................................................................................... 190

サポートされている他のリソース .............................................................................................. 191AWS SDK の使用 ........................................................................................................................... 192

Java ...................................................................................................................................... 192Amazon ES 設定 API リファレンス ................................................................................................... 196

アクション ............................................................................................................................. 196AddTags ........................................................................................................................ 197CreateElasticsearchDomain .............................................................................................. 198DeleteElasticsearchDomain ............................................................................................... 201DeleteElasticsearchServiceRole ......................................................................................... 202DescribeElasticsearchDomain ........................................................................................... 203DescribeElasticsearchDomainConfig ................................................................................... 203DescribeElasticsearchDomains .......................................................................................... 204DescribeElasticsearchInstanceTypeLimits ............................................................................ 205DescribeReservedElasticsearchInstanceOfferings ................................................................. 206DescribeReservedElasticsearchInstances ............................................................................ 207GetCompatibleElasticsearchVersions .................................................................................. 208GetUpgradeHistory .......................................................................................................... 209GetUpgradeStatus ........................................................................................................... 211ListDomainNames ........................................................................................................... 211ListElasticsearchInstanceTypeDetails .................................................................................. 212ListElasticsearchInstanceTypes (廃止) ................................................................................ 213ListElasticsearchVersions ................................................................................................. 214ListTags ......................................................................................................................... 215PurchaseReservedElasticsearchInstanceOffering .................................................................. 216RemoveTags .................................................................................................................. 217StartElasticsearchServiceSoftwareUpdate ........................................................................... 218StopElasticsearchServiceSoftwareUpdate ............................................................................ 219UpdateElasticsearchDomainConfig ..................................................................................... 220UpgradeElasticsearchDomain ............................................................................................ 222

データ型 ................................................................................................................................ 223AdvancedOptions ............................................................................................................ 223ARN .............................................................................................................................. 224CognitoOptions ............................................................................................................... 225CreateElasticsearchDomainRequest ................................................................................... 225DomainEndpointOptions ................................................................................................... 226DomainID ....................................................................................................................... 226DomainName .................................................................................................................. 226DomainNameList ............................................................................................................. 226EBSOptions .................................................................................................................... 227ElasticsearchClusterConfig ................................................................................................ 227ElasticsearchDomainConfig ............................................................................................... 228ElasticsearchDomainStatus ............................................................................................... 229ElasticsearchDomainStatusList .......................................................................................... 231EncryptionAtRestOptions .................................................................................................. 231EndpointsMap ................................................................................................................. 231LogPublishingOptions ....................................................................................................... 231NodeToNodeEncryptionOptions ......................................................................................... 232OptionState .................................................................................................................... 232

API バージョン 2015-01-01vii

Page 8: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド

OptionStatus ................................................................................................................... 233ServiceSoftwareOptions .................................................................................................... 233ServiceURL .................................................................................................................... 233SnapshotOptions ............................................................................................................. 234Tag ............................................................................................................................... 234TagKey .......................................................................................................................... 234TagList .......................................................................................................................... 234TagValue ....................................................................................................................... 235VPCDerivedInfo .............................................................................................................. 235VPCOptions .................................................................................................................... 235ZoneAwarenessConfig ..................................................................................................... 236

エラー ................................................................................................................................... 236制限 .............................................................................................................................................. 237

クラスターとインスタンスの制限 .............................................................................................. 237UltraWarm ストレージの制限 .................................................................................................... 237EBS ボリュームサイズの制限 ................................................................................................... 238ネットワークの制限 ................................................................................................................. 240Java プロセス制限 .................................................................................................................. 242ドメインポリシーの制限 ........................................................................................................... 242

リザーブドインスタンス ................................................................................................................... 243リザーブドインスタンスの購入 (コンソール) ............................................................................... 243リザーブドインスタンスを購入する (AWS CLI) ........................................................................... 244リザーブドインスタンスを購入する (AWS SDK) .......................................................................... 245コストを確認する .................................................................................................................... 246

チュートリアル: 検索アプリケーションの作成 ..................................................................................... 247ステップ 1: インデックスサンプルデータ ................................................................................... 247ステップ 2: API を作成する ...................................................................................................... 248ステップ 3: Lambda 関数を作成する .......................................................................................... 249ステップ 4: ドメインアクセスポリシーを変更する ....................................................................... 250ステップ 5: ウェブアプリケーションをテストする ....................................................................... 250次のステップ .......................................................................................................................... 252

チュートリアル: サポートコールの視覚化 ........................................................................................... 253ステップ 1: 前提条件を設定する ................................................................................................ 254ステップ 2: サンプルコードをコピーする ................................................................................... 254(オプション) ステップ 3: サンプルデータを追加する .................................................................... 257ステップ 4: データを分析し、視覚化する ................................................................................... 258ステップ 5: リソースのクリーンアップと次のステップ ................................................................. 262

サービスにリンクされたロールの使用 ................................................................................................ 263Amazon ES のサービスにリンクされたロールのアクセス許可 ........................................................ 263のサービスにリンクされたロールの作成Amazon ES ..................................................................... 264Amazon ES のサービスにリンクされたロールの編集 .................................................................... 264Amazon ES のサービスにリンクされたロールの削除 .................................................................... 264

サービスにリンクされたロールのクリーンアップ ................................................................. 264サービスにリンクされたロールの手動削除 .......................................................................... 265

ドキュメント履歴 ............................................................................................................................ 266リリースノート ....................................................................................................................... 266以前の更新 ............................................................................................................................. 269

AWS の用語集 ................................................................................................................................ 272

API バージョン 2015-01-01viii

Page 9: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドAmazon Elasticsearch Service の機能

Amazon Elasticsearch Service とはAmazon Elasticsearch Service (Amazon ES) は、AWS クラウドの Elasticsearch クラスターを、簡単にデプロイ、運用、スケールするマネージド型サービスです。Elasticsearch はログ分析、リアルタイムのアプリケーションモニタリング、クリックストリーム分析などのユースケース向けの、人気の高いオープンソースの検索および分析エンジンです。Amazon ES を使用すると、Elasticsearch の API に直接アクセスできるため、既存のコードとアプリケーションがこのサービスとシームレスに連携します。

Amazon ES は、Elasticsearch クラスターのすべてのリソースをプロビジョンして、クラスターを起動します。また、障害が発生した Elasticsearch ノードを自動的に検出して置き換え、自己管理型インフラストラクチャに関連するオーバーヘッドを減らします。また、単一の API 呼び出しを使用するか、コンソールで数回クリックするだけで、クラスターを簡単にスケーリングできます。

Amazon ES の使用を開始するには、ドメインを作成します。Amazon ES ドメインは、Elasticsearch クラスターと同義です。ドメインは、指定した設定、インスタンスタイプ、インスタンス数、およびストレージリソースを含むクラスターです。

Amazon ES コンソールを使用すると、ドメインを数分でセットアップして設定できます。プログラムによるアクセスを希望する場合、AWS CLI や AWS SDK を使用できます。

トピック• Amazon Elasticsearch Service の機能 (p. 1)• サポートされる Elasticsearch バージョン (p. 2)• Amazon Elasticsearch Service の料金表 (p. 2)• Amazon Elasticsearch Service の使用開始 (p. 3)• 関連サービス (p. 3)

Amazon Elasticsearch Service の機能Amazon ES は、以下の特徴を含みます。

Scale

• インスタンスタイプと呼ばれる、CPU、メモリ、ストレージ容量の多数の設定• 最大 3 PB のアタッチ済みストレージ• 読み取り専用データ用のコストパフォーマンスに優れた UltraWarm (p. 149) ストレージ

セキュリティ

• AWS Identity and Access Management (IAM) アクセスコントロール• Amazon VPC および VPC セキュリティグループと簡単に統合• 保管時のデータの暗号化およびノード間の暗号化• Kibana の Amazon Cognito 認証

安定性

• リージョンおよびアベイラビリティーゾーンと呼ばれる、リソース用の複数の地理的場所• マルチ AZ と呼ばれる、同じ AWS リージョン内の 2 つまたは 3 つのアベイラビリティーゾーンにまた

がるノード割り当て• クラスター管理タスクをオフロードする専用マスターノード

API バージョン 2015-01-011

Page 10: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドサポートされる Elasticsearch バージョン

• Amazon ES ドメインをバックアップおよび復元する自動スナップショット

人気のあるサービスとの統合

• Kibana を使用したデータの可視化• Amazon ES ドメインメトリクスのモニタリングとアラームの設定のための Amazon CloudWatch との統

合• Amazon ES ドメインへの設定 API 呼び出しを監査するための AWS CloudTrail との統合• Amazon ES にストリーミングデータをロードするための Amazon S3、Amazon Kinesis、Amazon

DynamoDB との統合

サポートされる Elasticsearch バージョンAmazon ES は、現在、Elasticsearch の以下のバージョンをサポートしています。

• 7.1• 6.8、6.7、6.5、6.4、6.3、6.2、6.0• 5.6、5.5、5.3、5.1• 2.3• 1.5

Elasticsearch の以前のバージョンと比較して、7.x バージョンおよび 6.x バージョンには、処理速度、安全性、使いやすさを向上するための強力な機能が含まれています。いくつかの重要な部分を以下に示します。

• 高速なインデックス作成パフォーマンス – 新しいバージョンの Elasticsearch は優れたインデックス作成機能を備えており、データ更新のスループットが大幅に向上しています。

• 安全性の向上 – 新しいバージョンの Elasticsearch は、過度に広いクエリや複雑なクエリがクラスターのパフォーマンスと安定性に悪影響を及ぼすことを防ぐのに役立ちます。

• Vega の可視化 – Kibana 6.2 は Vega 可視化言語をサポートしています。これにより、コンテキストに応じた Elasticsearch クエリの実行、複数のデータソースの単一のグラフへの統合、ユーザーのインタラクティブ性のグラフへの追加などが可能になります。

• Java 高レベル REST クライアント – 低レベルクライアントと比べて、このクライアントでは開発エクスペリエンスが簡略化されており、ほとんどの Elasticsearch API がサポートされます。コード例については、「HTTP リクエストの署名 (p. 71)」を参照してください。

詳細については、「the section called “サポートされている Elasticsearch オペレーション” (p. 174)」および「the section called “Elasticsearch バージョン別の機能” (p. 173)」を参照してください。

新しい Elasticsearch プロジェクトを開始する場合、サポートされている最新 Elasticsearch バージョンの選択を強くお勧めします。既存のドメインで以前の Elasticsearch バージョンを使用している場合は、ドメインの維持またはデータの移行を選択できます。詳細については、「Elasticsearch のアップグレード (p. 105)」を参照してください。

Amazon Elasticsearch Service の料金表AWS では、ご利用分のみがお支払いの対象になります。Amazon ES の場合、1 時間ごとの EC2 インスタンスの使用およびインスタンスにアタッチされたすべての EBS ストレージボリュームの累積サイズに対して料金が発生します。スタンダード AWS データ転送料金も適用されます。

API バージョン 2015-01-012

Page 11: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドAmazon Elasticsearch Service の使用開始

ただし、重要なデータ転送例外が存在します。ドメインが複数のアベイラビリティーゾーン (p. 29)を使用する場合、Amazon ES では 2 つのアベイラビリティゾーン間のトラフィックに対して課金されません。シャードの割り当てと再分散中にドメイン内で大量のデータ転送が発生します。Amazon ES では、このトラフィックに対して測定も課金も行いません。

料金の詳細については、「Amazon Elasticsearch Service の料金表」を参照してください。設定変更中に発生する料金については、「the section called “設定変更に関連する料金” (p. 27)」を参照してください。

Amazon Elasticsearch Service の使用開始開始するには、AWS アカウントをまだお持ちでない場合はサインアップします。アカウントのセットアップが終了したら、Amazon Elasticsearch Service の開始方法 (p. 5)チュートリアルを完了します。サービスについて学習中に詳しい情報が必要になった場合は、以下の概要トピックを参照してください。

• ドメインの作成 (p. 10)• ドメインのサイジング (p. 141)• ドメインのアクセスコントロール (p. 50)• 手動 (p. 67)で、または他のサービス (p. 80)からデータをインデックスする• Kibana (p. 111) を使用してデータを検索する

関連サービスAmazon ES は、次のサービスでよく使用されます。

Amazon CloudWatch

ドメインの状態やパフォーマンスをモニタリングできるように、メトリクスは、Amazon ES ドメインから CloudWatch に自動的に送信されます。詳細については、「Amazon CloudWatch を使用した、クラスターメトリクスと統計情報の監視 (コンソール) (p. 34)」を参照してください。

CloudWatch Logs は、他の方向に進むこともできます。分析のために Amazon ES にデータをストリーミングするように CloudWatch Logs を設定できます。詳細については、「the section called“Amazon CloudWatch から Amazon ES にストリーミングデータをロードする” (p. 91)」を参照してください。

AWS CloudTrail

AWS CloudTrail を使用して、Amazon ES 設定 API 呼び出しとアカウントの関連するイベントの履歴を取得します。詳細については、「Amazon Elasticsearch Service のログ記録とモニタリング (p. 62)」を参照してください。

Amazon Kinesis

Kinesis は、大規模なストリーミングデータをリアルタイムで処理するマネージドサービスです。詳細については、「the section called “Amazon Kinesis Data Streams から Amazon ES にストリーミングデータをロードする” (p. 85)」および「the section called “Amazon Kinesis Data Firehose からAmazon ES にストリーミングデータをロードする” (p. 90)」を参照してください。

Amazon S3

Amazon Simple Storage Service (Amazon S3) は、インターネット用のストレージです。このガイドでは、Amazon S3 と統合するための Lambda サンプルコードが提供されています。詳細については、「the section called “Amazon S3 から Amazon ES にストリーミングデータをロードする” (p. 80)」を参照してください。

API バージョン 2015-01-013

Page 12: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド関連サービス

AWSIAM

AWS Identity and Access Management (IAM) は、Amazon ES ドメインへのアクセスの管理に使用できるウェブサービスです。詳細については、「the section called “Identity and AccessManagement” (p. 50)」を参照してください。

AWS Lambda

AWS Lambda はサーバーをプロビジョニングしたり管理しなくてもコードを実行できるコンピューティングサービスです。このガイドでは、DynamoDB、Amazon S3、Kinesis からデータをストリーミングする Lambda サンプルコードが提供されています。詳細については、「Amazon ES にストリーミングデータをロードする (p. 80)」を参照してください。

Amazon DynamoDB

Amazon DynamoDB は、完全に管理された NoSQL データベースサービスで、高速かつ予測可能なパフォーマンスとシームレスな拡張性を提供します。Amazon ES へのデータのストリーミングの詳細については、「the section called “Amazon DynamoDB から Amazon ES にストリーミングデータをロードする” (p. 87)」を参照してください。

API バージョン 2015-01-014

Page 13: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドステップ 1: Amazon ES ドメインを作成する

Amazon Elasticsearch Service の使用開始

このチュートリアルでは、Amazon Elasticsearch Service (Amazon ES) を使用してテストドメインを作成および設定する方法を示します。Amazon ES ドメインは、Elasticsearch クラスターと同義です。ドメインは、指定した設定、インスタンスタイプ、インスタンス数、およびストレージリソースを含むクラスターです。

このチュートリアルでは、ドメインを準備してすぐに実行するための基本的な手順を説明します。詳細については、このガイドの「Amazon ES ドメインの作成と設定 (p. 10)」とその他のトピックを参照してください。

以下のステップは、Amazon ES コンソール、AWS CLI、または AWS SDK を使用して完了できます。

1. Amazon ES ドメインを作成する (p. 5)2. インデックス作成のためにデータを Amazon ES ドメインにアップロードする (p. 7)3. Amazon ES ドメインでドキュメントを検索する (p. 8)4. Amazon ES ドメインを削除する (p. 9)

AWS CLI のインストールおよびセットアップの詳細については、『AWS Command Line Interface ユーザーガイド』を参照してください。

ステップ 1: Amazon ES ドメインを作成するImportant

このプロセスは、簡潔なチュートリアルでテストドメインを設定します。本番稼働用ドメインの作成には使用できません。同じプロセスの包括的なバージョンについては、「Amazon ES ドメインの作成と設定 (p. 10)」を参照してください。

Amazon ES ドメインは、Elasticsearch クラスターと同義です。ドメインは、指定した設定、インスタンスタイプ、インスタンス数、およびストレージリソースを含むクラスターです。 コンソール、AWS CLI、または AWS SDK を使用して Amazon ES ドメインを作成できます。

Amazon ES ドメイン (コンソール) を作成するには

1. https://aws.amazon.com にアクセスし、[Sign In to the Console] を選択します。2. [分析] で、[Elasticsearch Service] を選択します。3. [Create a new domain (新しいドメインの作成)] を選択します。4. [Create Elasticsearch domain (Elasticsearch ドメインの作成)] ページの [Deployment type (デプロイタ

イプ)] で、[Development and testing (開発とテスト)] を選択します。5. [Version (バージョン)] で、ドメインの Elasticsearch バージョンを選択します。サポートされてい

る最新バージョンの選択をお勧めします。詳細については、「the section called “サポートされるElasticsearch バージョン” (p. 2)」を参照してください。

6. [Next (次へ)] を選択します。7. ドメインの名前を入力します。この入門チュートリアルでは、チュートリアルの後半にある例で、ド

メイン名 movies を使用します。8. [Instance type (インスタンスタイプ)] で、Amazon ES ドメインのインスタンスタイプを選択し

ます。このチュートリアルには、テスト用に最適な小規模で安価なインスタンスタイプであるt2.small.elasticsearch をおすすめします。

API バージョン 2015-01-015

Page 14: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドステップ 1: Amazon ES ドメインを作成する

9. [Instance count (インスタンス数)] で、必要なインスタンスの数を選択します。このチュートリアルでは、デフォルト値の 1 を使用します。

10. [Storage type (ストレージタイプ)] で [EBS] を選択します。

a. [EBS volume type (EBS ボリュームタイプ)] で、汎用 (SSD) を選択します。詳細については、「Amazon EBS ボリュームの種類」を参照してください。

b. [EBS volume size (EBS ボリュームサイズ)] に、各データノードの外部ストレージのサイズ (GiB)を入力します。このチュートリアルでは、デフォルト値の 10 を使用します。

11. 現時点では、Dedicated master nodes (専用マスターノード)、Snapshot configuration (スナップショット設定)、Optional Elasticsearch cluster settings (オプションの Elasticsearch クラスター設定) セクションは無視できます。

12. [Next (次へ)] を選択します。13. このチュートリアルでは、分かりやすいように IP ベースのアクセスポリシーを使用することをお勧め

します。[Network configuration (ネットワーク設定)] で、[Public access (パブリックアクセス)] を選択します。

14. 現時点では、Amazon Cognito 認証は無視できます。15. [Access policy (アクセスポリシー)] で、[Type (タイプ)] に [IPv4 address (IPv4 アドレス)] を選択し、

[Enter Principal (プリンシパルの入力)] フィールドにパブリック IP アドレスを入力します。ほとんどの検索エンジンで「私の IP は何ですか?」と検索すると、IP アドレスを見つけることができます。

16. [Select Action (アクションの選択)] で、[Allow (許可)] を選択します。17. [Encryption (暗号化)] で、すべてのデフォルト値を保持します。18. [Next] を選択します。19. [Review (レビュー)] ページで、ドメイン設定を確認し、[Confirm (確認)] を選択します。

Note

新しいドメインの初期化には最大 10 分かかります。ドメインが初期化されると、データをアップロードしてドメインに変更を加えることができます。

Amazon ES ドメイン (AWS CLI) を作成するには

• Amazon ES ドメインを作成するには、次のコマンドを実行します。

このコマンドは movies という名前のドメインを Elasticsearch バージョン 6.0 を使用して作成します。t2.small.elasticsearch インスタンスタイプの 1 つのインスタンスが指定されます。このインスタンスタイプでは EBS ストレージが必要であるため、10 GiB のボリュームを指定しています。最後に、このコマンドは単一の IP アドレスにドメインへのアクセスを制限する IP ベースのアクセスポリシーを適用します。

コマンドで your_ip_address をお使いのパブリック IP アドレスに置き換えます。この IP アドレスは、Google で、「私の IP アドレスは何ですか」を検索して確認できます。

aws es create-elasticsearch-domain --domain-name movies --elasticsearch-version 6.0 --elasticsearch-cluster-config InstanceType=t2.small.elasticsearch,InstanceCount=1 --ebs-options EBSEnabled=true,VolumeType=standard,VolumeSize=10 --access-policies '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":["es:*"],"Condition":{"IpAddress":{"aws:SourceIp":["your_ip_address"]}}}]}'

Note

新しいドメインの初期化には最大 10 分かかります。ドメインが初期化されると、データをアップロードしてドメインに変更を加えることができます。

API バージョン 2015-01-016

Page 15: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドステップ 2: インデックス作成のためにデータをアップロードする

新しいドメインのステータスのクエリを実行するには、次のコマンドを使用します。

aws es describe-elasticsearch-domain --domain movies

Amazon ES ドメイン (AWS SDK) を作成するには

AWS SDK では (Android および iOS SDK を除く)、CreateElasticsearchDomain アクションも含めて、Amazon ES 設定 API リファレンス (p. 196)で定義されたすべてのアクションがサポートされています。AWS SDK のインストールと使用の詳細については、「AWS ソフトウェア開発キット」を参照してください。

ステップ 2: インデックス作成のためにデータをAmazon ES ドメインにアップロードする

Important

このプロセスは、少量のテストデータをアップロードするための簡潔なチュートリアルです。詳細については、「データのインデックス作成 (p. 67)」を参照してください。

インデックス作成のために Amazon Elasticsearch Service ドメインにデータをアップロードするには、コマンドラインから Elasticsearch インデックスおよびバルク API を使用します。

• 単一の Elasticsearch ドキュメントを追加または更新するには、index API を使用します。• 同じ JSON ファイルに記述されている複数の Elasticsearch ドキュメントを追加または更新するに

は、bulk API を使用します。

次の例のリクエストでは、簡潔にするため、および便宜上、一般的な HTTP クライアントである curl を使用しています。curl などのクライアントは、アクセスポリシーが IAM ユーザーあるいはロールを指定している場合に、必要なリクエスト署名を実行できません。このステップの手順を正常に実行するには、ステップ 1 (p. 5) で設定したように、認証されていないアクセスを許可する IP アドレスベースのアクセスポリシーを使用する必要があります。

Windows に curl をインストールしてコマンドプロンプトから使用できますが、Cygwin または WindowsSubsystem for Linux などのツールをお勧めします。macOS およびほとんどの Linux ディストリビューションでは、curl がプレインストールされています。

単一のドキュメントを Amazon ES ドメインにアップロードするには

• 単一のドキュメントを movies ドメインに追加するには、次のコマンドを実行します。

curl -XPUT elasticsearch_domain_endpoint/movies/_doc/1 -d '{"director": "Burton, Tim", "genre": ["Comedy","Sci-Fi"], "year": 1996, "actor": ["Jack Nicholson","Pierce Brosnan","Sarah Jessica Parker"], "title": "Mars Attacks!"}' -H 'Content-Type: application/json'

このコマンドの詳細および Amazon ES への署名付きリクエストを作成する方法の詳細については、「データのインデックス作成 (p. 67)」を参照してください。

複数のドキュメントを含む JSON ファイルを Amazon ES ドメインにアップロードするには

1. bulk_movies.json という名前のファイルを作成します。以下のコンテンツをコピーしてそこに貼り付けます。末尾の改行も追加します。

API バージョン 2015-01-017

Page 16: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドステップ 3: Amazon ES ドメインでドキュメントを検索する

{ "index" : { "_index": "movies", "_type" : "_doc", "_id" : "2" } }{"director": "Frankenheimer, John", "genre": ["Drama", "Mystery", "Thriller"], "year": 1962, "actor": ["Lansbury, Angela", "Sinatra, Frank", "Leigh, Janet", "Harvey, Laurence", "Silva, Henry", "Frees, Paul", "Gregory, James", "Bissell, Whit", "McGiver, John", "Parrish, Leslie", "Edwards, James", "Flowers, Bess", "Dhiegh, Khigh", "Payne, Julie", "Kleeb, Helen", "Gray, Joe", "Nalder, Reggie", "Stevens, Bert", "Masters, Michael", "Lowell, Tom"], "title": "The Manchurian Candidate"}{ "index" : { "_index": "movies", "_type" : "_doc", "_id" : "3" } }{"director": "Baird, Stuart", "genre": ["Action", "Crime", "Thriller"], "year": 1998, "actor": ["Downey Jr., Robert", "Jones, Tommy Lee", "Snipes, Wesley", "Pantoliano, Joe", "Jacob, Ir\u00e8ne", "Nelligan, Kate", "Roebuck, Daniel", "Malahide, Patrick", "Richardson, LaTanya", "Wood, Tom", "Kosik, Thomas", "Stellate, Nick", "Minkoff, Robert", "Brown, Spitfire", "Foster, Reese", "Spielbauer, Bruce", "Mukherji, Kevin", "Cray, Ed", "Fordham, David", "Jett, Charlie"], "title": "U.S. Marshals"}{ "index" : { "_index": "movies", "_type" : "_doc", "_id" : "4" } }{"director": "Ray, Nicholas", "genre": ["Drama", "Romance"], "year": 1955, "actor": ["Hopper, Dennis", "Wood, Natalie", "Dean, James", "Mineo, Sal", "Backus, Jim", "Platt, Edward", "Ray, Nicholas", "Hopper, William", "Allen, Corey", "Birch, Paul", "Hudson, Rochelle", "Doran, Ann", "Hicks, Chuck", "Leigh, Nelson", "Williams, Robert", "Wessel, Dick", "Bryar, Paul", "Sessions, Almira", "McMahon, David", "Peters Jr., House"], "title": "Rebel Without a Cause"}

2. このファイルを movies ドメインにアップロードするには、次のコマンドを実行します。

curl -XPOST elasticsearch_domain_endpoint/_bulk --data-binary @bulk_movies.json -H 'Content-Type: application/json'

bulk ファイルの形式については、「データのインデックス作成 (p. 67)」を参照してください。Note

Amazon ES では、Amazon ES クラスターと自己管理型 Elasticsearch クラスターの両方で作成された手動スナップショットからのデータの移行がサポートされています。自己管理型Elasticsearch クラスターからのスナップショットの復元は、データを Amazon ES に移行する一般的な方法です。詳細については、「the section called “スナップショットの復元” (p. 103)」を参照してください。

ステップ 3: Amazon ES ドメインでドキュメントを検索する

Amazon Elasticsearch Service ドメインでドキュメントを検索するには、Elasticsearch 検索 API を使用します。または、Kibana (p. 111) を使用してドメインのドキュメントを検索することもできます。

コマンドラインからドキュメントを検索するには

• movies ドメインで mars という単語を検索するには、次のコマンドを実行します。

curl -XGET 'elasticsearch_domain_endpoint/movies/_search?q=mars'

前のページでバルクデータを使用している場合は、代わりに rebel を検索してください。

Kibana を使用して Amazon ES ドメインからドキュメントを検索するには

1. ブラウザーを Amazon ES ドメインの Kibana プラグインにポイントします。Amazon ES コンソールのドメインダッシュボードで Kibana エンドポイントを見つけます。URL はこの形式に従います。

API バージョン 2015-01-018

Page 17: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドステップ 4: Amazon ES ドメインを削除する

https://domain.region.es.amazonaws.com/_plugin/kibana/

2. Kibana を使用するには、少なくとも 1 つのインデックスパターンを設定する必要があります。Kibana は、どのインデックスを分析するかを特定するパターンを使用します。このチュートリアルでは、movies と入力し、[Create (作成)] を選択します。

3. [Index Patterns (インデックスパターン)] ページには、actor や director などのさまざまなドキュメントフィールドが表示されます。ここでは、[Discover (検出)] を選択してデータを検索します。

4. 検索バーに mars と入力して [Enter] キーを押します。mars attacks というフレーズを検索するときに、類似スコア (_score) がどれだけ増加するかに注目してください。

ステップ 4: Amazon ES ドメインを削除するこのチュートリアルの movies ドメインはテスト用のため、チュートリアルを終了したら、料金が発生しないようにこれを削除してください。

Amazon ES ドメイン (コンソール) を削除するには

1. Amazon Elasticsearch Service コンソールにサインインします。2. ナビゲーションペインの [My domains (マイドメイン)] で、movies ドメインを選択します。3. [Actions (アクション)]、[Delete domain (ドメインの削除)] の順に選択します。4. [Delete the domain (ドメインを削除する)] チェックボックスをオンにし、[Delete (削除)] を選択しま

す。

Amazon ES ドメインを削除するには (AWS CLI)

• movies ドメインを削除するには、次のコマンドを実行します。

aws es delete-elasticsearch-domain --domain-name movies

Note

ドメインを削除すると、有料の Amazon ES リソースがすべて削除されます。ただし、作成したドメインの手動スナップショットは削除されません。今後 Amazon ES ドメインを再作成する必要が生じる可能性がある場合は、スナップショットを保存することを検討してください。ドメインを再作成する予定がない場合は、手動で作成したスナップショットを安全に削除できます。

Amazon ES ドメインを削除するには (AWS SDK)

AWS SDK では (Android および iOS SDK を除く)、DeleteElasticsearchDomain アクションも含めて、Amazon ES 設定 API リファレンス (p. 196)で定義されたすべてのアクションがサポートされています。AWS SDK のインストールと使用の詳細については、「AWS ソフトウェア開発キット」を参照してください。

API バージョン 2015-01-019

Page 18: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドAmazon ES ドメインの作成

Amazon Elasticsearch Service ドメインの作成と設定

この章では、Amazon Elasticsearch Service (Amazon ES) ドメインを作成して設定する方法について説明します。Amazon ES ドメインは、Elasticsearch クラスターと同義です。ドメインは、指定した設定、インスタンスタイプ、インスタンス数、およびストレージリソースを含むクラスターです。

開始方法 (p. 5)チュートリアルの簡単な手順とは異なり、この章ではすべてのオプションについて説明し、関連するリファレンス情報を提供します。Amazon ES コンソール、AWS Command Line Interface (AWSCLI)、または AWS SDK の手順を使用することで、各手順を完了できます。

トピック• Amazon ES ドメインの作成 (p. 10)• Amazon ES ドメインの設定 (p. 14)• EBS ベースのストレージの設定 (p. 15)• VPC アクセス設定の変更 (p. 17)• Kibana の Amazon Cognito 認証の設定 (p. 18)• アクセス ポリシーの設定 (p. 18)• 詳細オプションの設定 (p. 20)• ログの設定 (p. 21)

Amazon ES ドメインの作成このセクションでは、Amazon ES コンソールを使用するか、AWS CLI で create-elasticsearch-domain コマンドを使用して Amazon ES ドメインを作成する方法について説明します。

Amazon ES ドメイン (コンソール) の作成次の手順に従って、コンソールを使用することで Amazon ES ドメインを作成します。

Amazon ES ドメイン (コンソール) を作成するには

1. https://aws.amazon.com にアクセスし、[Sign In to the Console] を選択します。2. [分析] で、[Elasticsearch Service] を選択します。3. [Create a new domain (新しいドメインの作成)] を選択します。4. [デプロイタイプの選択] で、ドメインの目的に最も一致するオプションを選択します。

• [本番稼働用] ドメインでは、マルチ AZ と専用マスターノードが使用されます。可用性を高めるために使用します。

• [開発およびテスト] ドメインでは、単一のアベイラビリティーゾーンが使用されます。• [カスタム] ドメインでは、すべての設定オプションから選択できます。• [UltraWarm プレビュー] ドメインを使用すると、UltraWarm ストレージ (プレビュー) (p. 149) を

有効にできます。

Important

デプロイタイプが異なると、後続のページのオプションが異なります。これらの手順には、すべてのオプション (カスタムデプロイタイプ) が含まれます。

API バージョン 2015-01-0110

Page 19: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドAmazon ES ドメイン (コンソール) の作成

5. [Elasticsearch のバージョン] では、最新バージョンの選択をお勧めします。詳細については、「thesection called “サポートされる Elasticsearch バージョン” (p. 2)」を参照してください。

6. [Next] を選択します。7. [Elasticsearch ドメイン名] に、ドメイン名を入力します。名前は次の基準を満たしている必要があり

ます。

• アカウントおよびリージョンに固有• 先頭が小文字• 3 ~ 28 文字• 小文字の a ~ z、0 ~ 9 の数字、ハイフン (-) のみ含まれる

8. [アベイラビリティーゾーン] で、[1-AZ]、[2-AZ]、または [3-AZ] を選択します。詳細については、「the section called “マルチ AZ ドメインの設定” (p. 29)」を参照してください。

9. [インスタンスタイプ] で、データノードのインスタンスタイプを選択します。詳細については、「サポートされるインスタンスタイプ (p. 172)」を参照してください。

Note

すべてのアベイラビリティーゾーンですべてのインスタンスタイプがサポートされているわけではありません。[3-AZ] を選択した場合、R5 や I3 など、現行世代のインスタンスタイプの選択が推奨されます。

10. [Number of nodes (ノードの数)] で、データノードの数を選択します。

最大値については、「the section called “クラスターとインスタンスの制限” (p. 237)」を参照してください。単一ノードのクラスターは、開発とテスト用に適切ですが、本稼働のワークロードには使用しないでください。ガイダンスについては、「the section called “Amazon ES ドメインのサイジング” (p. 141)」および「the section called “マルチ AZ ドメインの設定” (p. 29)」を参照してください。

11. [Data nodes storage type (データノードストレージタイプ)] で、[Instance (インスタンス)] (デフォルト) または [EBS] を選択します。

特に大きなドメインを作成する際のガイダンスについては、「ペタバイト規模 (p. 156)」を参照してください。[EBS] を選択した場合、以下のオプションが表示されます。

a. [EBS volume type (EBS ボリュームタイプ)] で、EBS ボリュームタイプを選択します。

EBS ボリュームタイプに [Provisioned IOPS (SSD) (プロビジョンド IOPS (SSD))] を選択した場合、[Provisioned IOPS (プロビジョンド IOPS)] に必要なベースライン IOPS パフォーマンスを入力します。詳細については、Amazon EC2 のドキュメントの「Amazon EBS ボリューム」を参照してください。

b. [EBS storage size per node (ノードごとの EBS ストレージサイズ)] に、各データノードにアタッチする EBS ボリュームのサイズを入力します。

[EBS volume size (EBS ボリュームサイズ)] はノードあたりのサイズです。Amazon ES ドメインの合計クラスターサイズは、データノードの数を EBS ボリュームサイズで乗算して計算できます。EBS ボリュームの最小サイズと最大サイズは、指定された EBS ボリュームタイプとそれがアタッチされるインスタンスタイプの両方によって異なります。詳細については、「EBS ボリュームサイズの制限 (p. 238)」を参照してください。

12. (オプション) 専用マスターノード (p. 144)を有効または無効にします。専用マスターノードは、クラスターの安定性を高めます。また、インスタンス数が 10 を超えるドメインに必要です。本番稼働用ドメインには、3 つの専用マスターノードをお勧めします。

Note

専用マスターノードおよびデータノードの異なるインスタンスタイプを選択できます。たとえば、データノードの汎用またはストレージ最適化インスタンスを選択できますが、専用マスターノードのコンピューティング最適化インスタンスは選択できません。API バージョン 2015-01-01

11

Page 20: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドAmazon ES ドメイン (コンソール) の作成

13. (オプション) UltraWarm storage (UltraWarm ストレージ) (p. 149) をプレビューするには、[EnableUltraWarm data nodes (UltraWarm データノードを有効にする)] を選択します。各インスタンスタイプには、アドレス可能なストレージの最大容量 (p. 237)があります。この量に、アドレス可能なウォームストレージの合計のウォームデータノードの数を乗算します。

14. (オプション) Elasticsearch 5.3 以降を実行しているドメインの場合、[Automated snapshot start hour(自動スナップショット開始時刻)] は実行されません。自動化されたスナップショットの詳細については、「インデックススナップショットの使用 (p. 97)」を参照してください。

15. (オプション) [オプションの Elasticsearch クラスター設定] を選択します。これらのオプションの概要については、「the section called “詳細オプションの設定” (p. 20)」を参照してください。

16. [Next] を選択します。17. [Network configuration (ネットワーク設定)] セクションで、[VPC access (VPC アクセス)] あるい

は [Public access (パブリックアクセス)] のどちらかを選択します。[パブリックアクセス] を選択した場合は、次のステップに進みます。[VPC access (VPC アクセス)] を選択する場合、前提条件 (p. 136)を満たしていることを確認してから、次の操作を行います。

a. [VPC] では、使用する VPC の ID を選択します。

Note

VPC とドメインが同じ AWS リージョンに存在している必要があり、テナントが[Default (デフォルト)] に設定されている VPC を選択する必要があります。Amazon ES は専有テナントを使用する VPC をまだサポートしていません。

b. [Subnet (サブネット)] では、1 個のサブネットを選択します。マルチ AZ を有効にした場合は、2個または 3 個のサブネットを選択する必要があります。Amazon ES は VPC エンドポイントとElastic Network Interfaces を複数のサブネットに配置します。

Note

1 個のサブネット (または複数のサブネット) のネットワークインターフェースにで十分な IP アドレスをリザーブする必要があります。詳細については、「VPC サブネットでIP アドレスをリザーブする (p. 138)」を参照してください。

c. [Security groups (セキュリティグループ)] で、Amazon ES ドメインにアクセスするために必要なVPC セキュリティグループを選択します。詳細については、「VPC サポート (p. 132)」を参照してください。

d. [IAM role (IAM ロール)] は、デフォルトロールのままにしておきます。Amazon ES では、この事前定義されたロール (サービスにリンクされたロールとも呼ばれる) を使用して VPC にアクセスし、VPC のサブネットに VPC エンドポイントとネットワークインターフェースを配置します。詳細については、「VPC アクセス用のサービスにリンクされたロール (p. 139)」を参照してください。

18. (オプション) ログインページで Kibana を保護する場合は、[Amazon Cognito で認証を有効にする] を選択します。

• Kibana 認証に使用する Amazon Cognito ユーザープールと ID プールを選択します。これらのリソースの作成のガイダンスについては、「Kibana の認証 (p. 117)」を参照してください。

19. [Domain access policy (ドメインアクセスポリシー)] で、目的の ARN または IP アドレスを追加するか、ドロップダウンリストから事前設定されたポリシーを選択します。詳細については、「thesection called “Identity and Access Management” (p. 50)」および「the section called “VPC ドメインのアクセスポリシーについて” (p. 134)」を参照してください。

Note

ステップ 17 で [VPC access (VPC アクセス)] を選択した場合、IP ベースのポリシーは禁止されます。代わりに、どの IP アドレスがドメインにアクセスできるかを制御するセキュリティグループを使用できます。詳細については、「the section called “VPC ドメインのアクセスポリシーについて” (p. 134)」を参照してください。

API バージョン 2015-01-0112

Page 21: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドAmazon ES ドメインの作成 (AWS CLI)

20. (オプション) ドメインへのすべてのリクエストが HTTPS 経由で到着することを要求するには、[Require HTTPS for all traffic to the domain (ドメインへのすべてのトラフィックに HTTPS が必要)]チェックボックスをオンにします。

21. (オプション) ノード間の暗号化を有効にするには、[ノード間の暗号化] チェックボックスをオンにします。詳細については、「the section called “ノード間の暗号化” (p. 49)」を参照してください。

22. (オプション) 保管時のデータの暗号化を有効にするには、[保管時のデータの暗号化の有効化] チェックボックスをオンにします。

ユーザーに代わって Amazon ES に KMS 暗号化キーを作成させる (あるいは、すでに作成されている場合) には、[(デフォルト) aws/es] を選択します。そうでない場合は、[KMS master key (KMS マスターキー)] メニューから独自の KMS 暗号化キーを選択します。詳細については、「the section called“保管時の暗号化” (p. 47)」を参照してください。

23. [Next (次へ)] を選択します。24. [Review (レビュー)] ページで、ドメイン設定を確認し、[Confirm (確認)] を選択します。

Amazon ES ドメインの作成 (AWS CLI)コンソールを使用して Amazon ES ドメインを作成する代わりに、AWS CLI を使用できます。構文については、「AWS CLI コマンドリファレンス」の「Amazon Elasticsearch Service」を参照してください。

コマンド例この最初の例は、以下の Amazon ES ドメイン設定を示しています。

• Elasticsearch バージョン 5.5 を使用して、mylogs という名前の Amazon ES ドメインを作成します。• m4.large.elasticsearch インスタンスタイプの 2 つのインスタンスをドメインに追加する• 各データノードのストレージに 100 GiB 磁気ディスクの EBS ボリュームを使用する• 単一の IP アドレス 192.0.2.0/32 からのみ匿名アクセスを許可する

aws es create-elasticsearch-domain --domain-name mylogs --elasticsearch-version 5.5 --elasticsearch-cluster-config InstanceType=m4.large.elasticsearch,InstanceCount=2 --ebs-options EBSEnabled=true,VolumeType=standard,VolumeSize=100 --access-policies '{"Version": "2012-10-17", "Statement": [{"Action": "es:*", "Principal":"*","Effect": "Allow", "Condition": {"IpAddress":{"aws:SourceIp":["192.0.2.0/32"]}}}]}'

次の例は、以下の Amazon ES ドメイン設定を示しています。

• Elasticsearch バージョン 5.5 を使用して、mylogs という名前の Amazon ES ドメインを作成します。• m4.large.elasticsearch インスタンスタイプの 6 つのインスタンスをドメインに追加する• 各データノードのストレージに 100 GiB 汎用 (SSD) EBS ボリュームを使用する• サービスへのアクセスを、ユーザーの AWS アカウント ID 555555555555 によって識別される単一の

ユーザーに制限する• 3 つのアベイラビリティーゾーンへのインスタンスの分散

aws es create-elasticsearch-domain --domain-name mylogs --elasticsearch-version 5.5 --elasticsearch-cluster-config InstanceType=m4.large.elasticsearch,InstanceCount=6,ZoneAwarenessEnabled=true,ZoneAwarenessConfig={AvailabilityZoneCount=3} --ebs-options EBSEnabled=true,VolumeType=gp2,VolumeSize=100 --access-policies '{"Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::555555555555:root" }, "Action":"es:*", "Resource": "arn:aws:es:us-east-1:555555555555:domain/mylogs/*" } ] }'

API バージョン 2015-01-0113

Page 22: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドAmazon ES (AWS SDK) ドメインの作成

次の例は、以下の Amazon ES ドメイン設定を示しています。

• Elasticsearch バージョン 5.5 を使用して、mylogs という名前の Amazon ES ドメインを作成します。• m4.xlarge.elasticsearch インスタンスタイプの 10 個のインスタンスをドメインに追加する• 専用マスターノードとして機能する m4.large.elasticsearch インスタンスタイプの 3 つのインス

タンスをドメインに追加する• ストレージに 100 GiB プロビジョンド IOPS EBS ボリュームを使用し、各データノードに 1000 IOPS

のベースラインパフォーマンスを設定する• アクセスを単一のユーザーと単一のサブリソース _search API に制限する

aws es create-elasticsearch-domain --domain-name mylogs --elasticsearch-version 5.5 --elasticsearch-cluster-config InstanceType=m4.xlarge.elasticsearch,InstanceCount=10,DedicatedMasterEnabled=true,DedicatedMasterType=m4.large.elasticsearch,DedicatedMasterCount=3 --ebs-options EBSEnabled=true,VolumeType=io1,VolumeSize=100,Iops=1000 --access-policies '{"Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::555555555555:root" }, "Action": "es:*", "Resource": "arn:aws:es:us-east-1:555555555555:domain/mylogs/_search" } ] }'

Note

Amazon ES ドメインを作成する際に、同じ名前のドメインが既に存在しても、CLI からエラーは報告されません。その代わりに、既存ドメインの詳細が返されます。

Amazon ES (AWS SDK) ドメインの作成AWS SDK では (Android および iOS SDK を除く)、CreateElasticsearchDomain も含めて、「Amazon ES の設定 API リファレンス (p. 196)」で定義されたすべてのアクションがサポートされています。サンプルコードについては、「AWS SDK の使用 (p. 192)」を参照してください。AWS SDK のインストールと使用の詳細については、「AWS Software Development Kits」を参照してください。

Amazon ES ドメインの設定増大するトラフィックとデータの要求に対応するには、次のいずれかの変更で Amazon ES ドメイン設定を更新できます。

• インスタンス数を変更する• インスタンスタイプを変更する• 専用マスターノードを有効または無効にする• マルチ AZ を有効または無効にする• ストレージ設定を行う• VPC サブネットとセキュリティグループを変更する• 詳細オプションを設定する

Amazon ES ドメイン (コンソール) の設定次の手順に従って、コンソールを使用することにより Amazon ES の設定を更新します。

Amazon ES ドメイン (コンソール) を設定するには

1. https://aws.amazon.com にアクセスし、[Sign In to the Console] を選択します。

API バージョン 2015-01-0114

Page 23: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドAmazon ES ドメインの設定 (AWS CLI)

2. [分析] で、[Elasticsearch Service] を選択します。3. ナビゲーションペインの [My domains (マイドメイン)] で、更新するドメインを選択します。4. [Edit domain (ドメインの編集)] を選択します。5. [Edit domain (ドメインの編集)] ページで、ドメインの設定を更新し、[Submit (送信)] を選択します。

Amazon ES ドメインの設定 (AWS CLI)AWS CLI を使用して Amazon ES クラスターを設定するには、elasticsearch-cluster-config オプションを使用します。構文については、「AWS CLI コマンドリファレンス」の「Amazon ElasticsearchService」を参照してください。

Amazon ES (AWS SDK) ドメインの設定AWS SDK では (Android および iOS SDK を除く)、UpdateElasticsearchDomainConfig も含めて、「Amazon ES の設定 API リファレンス (p. 196)」で定義されたすべてのアクションがサポートされています。サンプルコードについては、「AWS SDK の使用 (p. 192)」を参照してください。AWS SDK のインストールと使用の詳細については、「AWS Software Development Kits」を参照してください。

EBS ベースのストレージの設定Amazon EBS ボリュームは、単一のインスタンスにアタッチできるブロックレベルのストレージデバイスです。Amazon Elasticsearch Service は、次の EBS ボリュームタイプをサポートしています。

• 汎用 (SSD)• プロビジョンド IOPS (SSD)• マグネティック

Note

EBS ボリュームをプロビジョンド IOPS から非プロビジョンド EBS ボリュームタイプに変更するときは、IOPS 値を 0 に設定します。

Warning

現在のところ、EBS ボリュームにアタッチされているデータノードに障害が発生した場合、EBSボリュームでも障害が発生します。

EBS ベースのストレージの設定 (コンソール)次の手順に従って、コンソールを使用することで EBS ベースのストレージを有効にします。

EBS ベースのストレージを有効にするには (コンソール)

1. https://aws.amazon.com にアクセスし、[Sign In to the Console] を選択します。2. [分析] で、[Elasticsearch Service] を選択します。3. ナビゲーションペインの [My domains (マイドメイン)] で、設定するドメインを選択します。4. [Edit domain (ドメインの編集)] を選択します。5. [Storage type (ストレージタイプ)] で [EBS] を選択します。

API バージョン 2015-01-0115

Page 24: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドEBS ベースのストレージの設定 (AWS CLI)

6. [EBS volume type (EBS ボリュームタイプ)] で、EBS ボリュームタイプを選択します。

EBS ボリュームタイプに [Provisioned IOPS (SSD) (プロビジョンド IOPS (SSD))] を選択した場合、[Provisioned IOPS (プロビジョンド IOPS)] に必要なベースライン IOPS パフォーマンスを入力します。

7. [EBS volume size (EBS ボリュームサイズ)] に、EBS ボリュームに必要なサイズを入力します。

[EBS volume size (EBS ボリュームサイズ)] はノードあたりのサイズです。Amazon ES ドメインの合計クラスターサイズは、(データノードの数) * (EBS ボリュームサイズ) という式を使用して計算できます。EBS ボリュームの最小サイズと最大サイズは、指定された EBS ボリュームタイプとそれがアタッチされるインスタンスタイプの両方によって異なります。詳細については、「EBS ボリュームサイズの制限 (p. 238)」を参照してください。

8. [Submit] を選択します。

Note

プロビジョンド IOPS EBS ボリュームの IOPS 値は、ボリュームの最大ストレージの 30 倍以下に設定します。たとえば、ボリュームの最大サイズが 100 GiB の場合、3,000 を超える IOPS 値を割り当てることはできません。

詳細については、Amazon EC2 のドキュメントの「Amazon EBS ボリューム」を参照してください。

EBS ベースのストレージの設定 (AWS CLI)AWS CLI を使用して EBS ベースのストレージを設定するには、--ebs-options オプションを使用します。create-elasticsearch-domain コマンドと update-elasticsearch-domain-config コマンドの両方で次の構文が使用されます。

構文

--ebs-options EBSEnabled=<value>,VolumeType=<value>,VolumeSize=<value>,IOPS=<value>

パラメータ 有効な値 説明

EBSEnabled true または false インスタンスにより提供されるストレージではなく、ストレージの EBS ボリュームを使用するかどうかを指定します。デフォルト値は false です。

VolumeType 次のいずれかです。

• gp2 (汎用 SSD)• io1 (プロビジョンド

IOPS SSD)• standard (マグネ

ティック)

Amazon ES ドメインで使用する EBS ボリュームタイプ。

VolumeSize 整数 各データノードの EBS ボリュームのサイズを GiB で指定します。EBS ボリュームの最小サイズと最大サイズは、指定された EBS ボリュームタイプとそれがアタッチされるインスタンスタイプの両方によって異なります。各インスタンスタイプの最小サイズと最大 EBS サイズを示す表については、「サービスの制限」を参照してください。

API バージョン 2015-01-0116

Page 25: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドEBS ベースのストレージの設定 (AWS SDK)

パラメータ 有効な値 説明

IOPS 整数 EBS ボリュームのベースライン I/O パフォーマンスを指定します。このパラメータは、プロビジョンド IOPS(SSD) ボリュームによってのみ使用されます。最小値は1,000 です。最大の値は 16,000 です。

Note

プロビジョンド IOPS EBS ボリュームの IOPS 値は、ボリュームの最大ストレージの 30 倍を超える値に設定しないことをお勧めします。たとえば、ボリュームの最大サイズが 100 GiB の場合、3,000 を超える IOPS 値を割り当てないでください。各ボリュームタイプのユースケースなどの詳細については、Amazon EC2 のドキュメントの「Amazon EBS ボリュームの種類」を参照してください。

次の例では、10 GiB の汎用 EBS ボリュームを使用して、Elasticsearch バージョン 5.5 の mylogs という名前のドメインを作成します。

aws es create-elasticsearch-domain --domain-name=mylogs --elasticsearch-version 5.5 --ebs-options EBSEnabled=true,VolumeType=gp2,VolumeSize=10

ただし、検索インデックスのサイズが大きくなり、さらに大きい EBS ボリュームが必要になる可能性があります。たとえば、ベースライン I/O パフォーマンスが 3,000 IOPS の 100 GiB のプロビジョンド IOPSボリュームを選択できます。次の例では、それらの変更でドメイン設定を更新します。

aws es update-elasticsearch-domain-config --domain-name=mylogs --ebs-options EBSEnabled=true,VolumeType=io1,VolumeSize=100,IOPS=3000

EBS ベースのストレージの設定 (AWS SDK)AWS SDK では (Android および iOS SDK を除く)、UpdateElasticsearchDomainConfig の --ebs-options パラメータも含めて、Amazon ES 設定 API リファレンス (p. 196)で定義されたすべてのアクションがサポートされています。AWS SDK のインストールと使用の詳細については、「AWS SoftwareDevelopment Kits」を参照してください。

VPC アクセス設定の変更ドメインを VPC 内に存在するように設定した場合、Amazon ES コンソールを使用して設定を変更できます。パブリックドメインを VPC ドメインに移行するには、「the section called “パブリックアクセスからVPC アクセスに移行する” (p. 139)」を参照してください。

VPC アクセスの設定 (コンソール)次の手順に従って、コンソールを使用して VPC アクセスを設定します。

VPC アクセスを設定するには (コンソール)

1. https://aws.amazon.com にアクセスし、[Sign In to the Console] を選択します。2. [分析] で、[Elasticsearch Service] を選択します。3. ナビゲーションペインの [My domains (マイドメイン)] で、設定するドメインを選択します。

API バージョン 2015-01-0117

Page 26: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドKibana の Amazon Cognito 認証の設定

4. [Edit domain (ドメインの編集)] を選択します。5. [Network configuration (ネットワークの構成)] セクションの [Subnets (サブネット)] で 1 個のサブネッ

トを選択します。マルチ AZ を有効にした場合、2 つまたは 3 つのサブネットを選択する必要があります。サブネットは、同じリージョン内の異なるアベイラビリティーゾーンに存在している必要があります。詳細については、「VPC サポート (p. 132)」を参照してください。

Note

1 個のサブネット (または複数のサブネット) のネットワークインターフェースにで十分な IPアドレスをリザーブする必要があります。詳細については、「the section called “VPC サブネットで IP アドレスをリザーブする” (p. 138)」を参照してください。

6. [Security groups (セキュリティグループ)] で、ドメインにアクセスするために必要なセキュリティグループを追加します。

7. [Submit] を選択します。

Kibana の Amazon Cognito 認証の設定ドメインを作成したら、Kibana の Amazon Cognito 認証を有効または無効にできます。ユーザープールと ID プールを変更することもできます。詳細については、「Kibana の認証 (p. 117)」を参照してください。

アクセス ポリシーの設定Amazon Elasticsearch Service には、Amazon ES ドメインへのアクセスを設定するいくつかの方法が用意されています。詳細については、「the section called “Identity and Access Management” (p. 50)」を参照してください。

コンソールは、ドメインの特定のニーズに対応してカスタマイズできる事前定義のアクセスポリシーを提供します。ほかの Amazon ES ドメインからアクセスポリシーをインポートすることもできます。上記のアクセスポリシーが VPC アクセスを操作する方法についての詳細は、「the section called “VPC ドメインのアクセスポリシーについて” (p. 134)」を参照してください。

アクセスポリシーの設定 (コンソール)次の手順に従って、コンソールを使用してアクセスポリシーを設定します。

アクセスポリシーを設定するには (コンソール)

1. https://aws.amazon.com にアクセスし、[Sign In to the Console] を選択します。2. [分析] で、[Elasticsearch Service] を選択します。3. ナビゲーションペインの [My domains (マイドメイン)] で、更新するドメインを選択します。4. [Modify access policy (アクセスポリシーの変更)] を選択します。5. アクセスポリシーを編集します。

または、[Select a template (テンプレートを選択)] ドロップダウンリストからいずれかのポリシーテンプレートを選択し、必要に応じてドメイン用に編集することもできます。

事前設定されたアクセスポリシー 説明

[1 つ以上の AWS アカウントまたはIAM ユーザーにアクセスを許可、または拒否する]

1 つ以上の AWS アカウントあるいは IAM ユーザーまたはロールにアクセスを許可、または拒否します。

API バージョン 2015-01-0118

Page 27: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドアクセス ポリシーの設定 (AWS CLI)

事前設定されたアクセスポリシー 説明

[Allow access to the domain fromspecific IP(s) (特定の IP からのドメインへのアクセスを許可)]

このポリシーは、特定の IP アドレスまたは IP アドレスの範囲への匿名アクセスを制限するために使用されます。

Note

ドメインで VPC アクセスを有効にした場合、この事前定義のポリシーは利用できません。代わりに、どの IP アドレスがドメインにアクセスできるかを制御するセキュリティグループを使用できます。詳細については、「the sectioncalled “VPC ドメインのアクセスポリシーについて” (p. 134)」を参照してください。

[Deny access to the domain (ドメインへのアクセスを拒否する)]

このポリシーでは、Amazon ES コンソールを通じたアクセス、またはドメインを作成した AWS アカウントの所有者によるアクセスのみ許可されます。

[Copy access policy from anotherdomain (別のドメインからアクセスポリシーをコピー)]

このテンプレートは、他のドメインから既存のアクセスポリシーをインポートする際に役立ちます。

[Allow open access to the domain (ドメインへのオープンアクセスを許可)]

このポリシーは、パブリックエンドポイントのドメインには推奨されません。このポリシーは、ドメインのインデックスを誰もが削除、変更あるいはアクセスする許可を付与します。このポリシーは、テスト専用に用意されたものです。これらの設定を使用するドメインに、機密データをロードしないでください。

6. [Submit] を選択します。

アクセス ポリシーの設定 (AWS CLI)AWS CLI を使用してアクセスポリシーを設定するには、--access-policies オプションを使用します。create-elasticsearch-domain コマンドと update-elasticsearch-domain-config コマンドの両方で次の構文が使用されます。

構文

--access-policies=<value>

パラメータ 有効な値 説明

--access-policies

JSON Amazon ES ドメインのアクセスポリシーを指定します。

次のリソースベースポリシーの例では、サービスへのアクセスが、Principal ポリシーエレメントにおいてユーザーの AWS アカウント ID 555555555555 により識別される単一のユーザーに制限されます。このユーザーには index1 へのアクセスが許可されますが、ドメインの他のインデックスにはアクセスできません。

aws es update-elasticsearch-domain-config --domain-name mylogs --access-policies '{"Version": "2012-10-17", "Statement": [ { "Effect": "Allow","Principal": {"AWS":

API バージョン 2015-01-0119

Page 28: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドアクセスポリシーの設定 (AWS SDK)

"arn:aws:iam::123456789012:root" },"Action":"es:*","Resource":"arn:aws:es:us-east-1:555555555555:domain/index1/*" } ] }'

Tip

AWS CLI を使用してアクセスポリシーを設定する場合、複数のオンラインツールの 1 つを使用して JSON ポリシーステートメントを小さくできます。

アクセスポリシーの設定 (AWS SDK)AWS SDK では (Android および iOS SDK を除く)、UpdateElasticsearchDomainConfig の --access-policies パラメータも含めて、Amazon ES 設定 API リファレンス (p. 196)で定義されたすべてのアクションがサポートされています。AWS SDK のインストールと使用の詳細については、「AWSSoftware Development Kits」を参照してください。

詳細オプションの設定詳細オプションを使用して、次のように設定します。

rest.action.multi.allow_explicit_index

HTTP リクエストボディ中で、インデックスへの明示参照を許可するかどうかを指定します。このプロパティを false に設定すると、ユーザーがサブリソースのアクセスコントロールをバイパスできなくなります。デフォルトでは、値は true に設定されます。詳細については、「the section called “詳細オプションと API に関する考慮事項” (p. 59)」を参照してください。

indices.fielddata.cache.size

フィールドデータに割り当てられる Java ヒープスペースの割合を指定します。デフォルトでは、この設定は unbounded です。

Note

多くのお客様が、ローテーションするインデックスのクエリを毎日実行しています。indices.fielddata.cache.size を使用してベンチマークテストを始めることをお勧めします。このとき、ほとんどのユースケースでは JVM ヒープを 40% に設定してください。ただし、非常に大きいインデックスがある場合、さらに大きいフィールドデータキャッシュが必要になることがあります。

indices.query.bool.max_clause_count

Lucene のブールクエリで許可される句の最大数を指定します。デフォルト値は 1,024 です。クエリに含まれる句の数が最大数を超えていると、TooManyClauses エラーが発生します。詳細については、Lucene のドキュメントを参照してください。

詳細オプションの設定 (コンソール)詳細オプションを設定するには (コンソール)

1. https://aws.amazon.com にアクセスし、[Sign In to the Console] を選択します。2. [分析] で、[Elasticsearch Service] を選択します。3. ナビゲーションペインの [My domains (マイドメイン)] で、更新するドメインを選択します。4. [Edit domain (ドメインの編集)] を選択します。5. [Advanced options (詳細オプション)] を選択します。6. 必要なオプションを指定して、[Submit (送信)] を選択します。

API バージョン 2015-01-0120

Page 29: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド詳細オプションの設定 (AWS CLI)

詳細オプションの設定 (AWS CLI)--advanced-options オプションには次の構文を使用します。オプションの構文は、create-elasticsearch-domain コマンドと update-elasticsearch-domain-config コマンドのどちらでも同じです。

構文

--advanced-options rest.action.multi.allow_explicit_index=<true|false>, indices.fielddata.cache.size=<percentage_heap>, indices.query.bool.max_clause_count=<int>

パラメータ 有効な値

rest.action.multi.allow_explicit_index=<true|false>

indices.fielddata.cache.size=<percentage_heap>

--advanced-options

indices.query.bool.max_clause_count=<int>

次の例では、HTTP リクエストボディにおけるインデックスの明示的な参照を無効にします。また、フィールドデータキャッシュを合計 Java ヒープの 40% に制限します。

aws es update-elasticsearch-domain-config --domain-name mylogs --region us-east-1 --advanced-options rest.action.multi.allow_explicit_index=false, indices.fielddata.cache.size=40

詳細オプションの設定 (AWS SDK)AWS SDK では (Android および iOS SDK を除く)、UpdateElasticsearchDomainConfig の --advanced-options パラメータも含めて、Amazon ES 設定 API リファレンス (p. 196)で定義されたすべてのアクションがサポートされています。AWS SDK のインストールと使用の詳細については、「AWSSoftware Development Kits」を参照してください。

ログの設定Amazon ES は、Amazon CloudWatch Logs を使用して、3 種類の Elasticsearch ログ (エラーログ、検索スローログ、インデックススローログ) を公開します。これらのログは、パフォーマンスと安定性の問題のトラブルシューティングに役立ちますが、デフォルトでは無効になっています。有効にすると、標準のCloudWatch 料金が適用されます。

Note

エラーログは、バージョン 5.1 以降の Elasticsearch でのみ利用できます。スローログは、すべてのバージョンの Elasticsearch で利用できます。

ログについては、Elasticsearch は、Apache Log4j 2 とその組み込みログレベル (昇順) のTRACE、DEBUG、INFO、WARN、ERROR、FATAL を使用します。

エラーログを有効にすると、Amazon ES によって、WARN、ERROR、FATAL のログ行が CloudWatch に発行されます。また、Amazon ES は、DEBUG レベルの複数の例外 (以下を含む) も発行します。

API バージョン 2015-01-0121

Page 30: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドログ発行の有効化 (コンソール)

• org.elasticsearch.index.mapper.MapperParsingException

• org.elasticsearch.index.query.QueryShardException

• org.elasticsearch.action.search.SearchPhaseExecutionException

• org.elasticsearch.common.util.concurrent.EsRejectedExecutionException

• java.lang.IllegalArgumentException

以下のように、エラーログは多くの状況でトラブルシューティングに役立ちます。

• Painless スクリプトのコンパイルの問題• 無効なクエリ• インデックス作成の問題• スナップショットの失敗

ログ発行の有効化 (コンソール)CloudWatch へのログの発行を有効にするには、Amazon ES コンソールを使用する方法が最も簡単です。

CloudWatch へのログの発行を有効にするには (コンソール)

1. https://aws.amazon.com にアクセスし、[Sign In to the Console] を選択します。2. [分析] で、[Elasticsearch Service] を選択します。3. ナビゲーションペインの [My domains (マイドメイン)] で、更新するドメインを選択します。4. [Logs (ログ)] タブで、必要なログの [Enable (有効化)] を選択します。5. CloudWatch ロググループを作成するか、既存のロググループを選択します。

Note

複数のログを有効にする場合は、各ログを個別にロググループに発行することをお勧めします。分離することで、ログをスキャンしやすくなります。

6. 適切なアクセス権限を含むアクセスポリシーを選択するか、コンソールに用意された JSON を使用してポリシーを作成します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Resource": "cw_log_group_arn" } ]}

Important

CloudWatch Logs では、リージョンごとに 10 個のリソースポリシーがサポートされます。複数の Amazon ES ドメインでログを有効にする場合は、この制限に達しないように、複数のロググループを含む広範囲のポリシーを作成して再利用します。

API バージョン 2015-01-0122

Page 31: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドログ発行の有効化 (AWS CLI)

7. [Enable] を選択します。

ドメインのステータスが [Active (アクティブ)] から [Processing (処理中)] に変わります。ステータスは、ログの発行が有効になる前に [Active (アクティブ)] に戻る必要があります。このプロセスには最長 30 分かかることがあります。

スローログのいずれかを有効にしている場合は、「the section called “スローログの Elasticsearch ログしきい値の設定” (p. 24)」を参照してください。エラーログのみ有効にしている場合は、追加のステップを行う必要はありません。

ログ発行の有効化 (AWS CLI)ログの発行を有効にする前に、CloudWatch ロググループが必要です。まだロググループがない場合は、次のコマンドを使用して作成できます。

aws logs create-log-group --log-group-name my-log-group

次のコマンドを入力してロググループの ARN を検索し、それを書き留めます。

aws logs describe-log-groups --log-group-name my-log-group

これで、このロググループに書き込むためのアクセス許可を Amazon ES に付与できます。ロググループの末尾に近い位置にロググループの ARN を指定する必要があります。

aws logs put-resource-policy --policy-name my-policy --policy-document '{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com"}, "Action":[ "logs:PutLogEvents"," logs:PutLogEventsBatch","logs:CreateLogStream"],"Resource": "cw_log_group_arn"}]}'

Important

CloudWatch Logs では、リージョンごとに 10 個のリソースポリシーがサポートされます。複数の Amazon ES ドメインでスローログを有効にする場合は、複数のロググループが含まれている適用範囲のより広いポリシーを作成して再利用し、この制限に達しないようにします。

最後に、--log-publishing-options オプションを使用して発行を有効化できます。オプションの構文は、create-elasticsearch-domain コマンドと update-elasticsearch-domain-config コマンドのどちらでも同じです。

パラメータ 有効な値

SEARCH_SLOW_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}

INDEX_SLOW_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}

--log-publishing-options

ES_APPLICATION_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}

Note

複数のログを有効にする場合は、各ログを個別にロググループに発行することをお勧めします。分離することで、ログをスキャンしやすくなります。

API バージョン 2015-01-0123

Page 32: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドログ発行の有効化 (AWS SDK)

次の例では、指定されたドメインに対して検索およびインデックスのスローログの発行を有効にします。

aws es update-elasticsearch-domain-config --domain-name my-domain --log-publishing-options "SEARCH_SLOW_LOGS={CloudWatchLogsLogGroupArn=arn:aws:logs:us-east-1:123456789012:log-group:my-log-group,Enabled=true},INDEX_SLOW_LOGS={CloudWatchLogsLogGroupArn=arn:aws:logs:us-east-1:123456789012:log-group:my-other-log-group,Enabled=true}"

CloudWatch への発行を無効にするには、Enabled=false を使用して同じコマンドを実行します。

スローログのいずれかを有効にしている場合は、「the section called “スローログの Elasticsearch ログしきい値の設定” (p. 24)」を参照してください。エラーログのみ有効にしている場合は、追加のステップを行う必要はありません。

ログ発行の有効化 (AWS SDK)ログの発行を有効にする前に、CloudWatch ロググループを作成してその ARN を取得し、そのロググループに書き込むためのアクセス許可を Amazon ES に付与する必要があります。関連するオペレーションはAmazon CloudWatch Logs API Reference に記載されています。

• CreateLogGroup

• DescribeLogGroup

• PutResourcePolicy

これらのオペレーションには、AWS SDK を使用してアクセスできます。

AWS SDK (Android および iOS SDK を除く) は、Amazon ES 設定 API リファレンス (p. 196)に定義されているすべてのオペレーションをサポートします。これには、--log-publishing-options とCreateElasticsearchDomain の UpdateElasticsearchDomainConfig オプションも含まれます。

スローログのいずれかを有効にしている場合は、「the section called “スローログの Elasticsearch ログしきい値の設定” (p. 24)」を参照してください。エラーログのみ有効にしている場合は、追加のステップを行う必要はありません。

スローログの Elasticsearch ログしきい値の設定Elasticsearch では、デフォルトでスローログが無効になっています。CloudWatch へのスローログの発行を有効にしたら、さらに Elasticsearch インデックスごとにログしきい値を指定する必要があります。これらのしきい値は、ログに記録する内容とログレベルを正確に定義します。

これらの設定は、Elasticsearch REST API を使用して指定します。

PUT elasticsearch_domain_endpoint/index/_settings{ "index.search.slowlog.threshold.query.warn": "5s", "index.search.slowlog.threshold.query.info": "2s"}

スローログの正常な発行をテストするには、極度に低い値から開始してログが CloudWatch に表示されることを確認し、その後、しきい値をより有用なレベルに高めていきます。

ログが表示されない場合は、以下を確認してください。

• CloudWatch ロググループが存在しているかどうか? CloudWatch コンソールを確認します。

API バージョン 2015-01-0124

Page 33: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドログの表示

• ロググループに書き込むためのアクセス許可が Amazon ES にあるかどうか? Amazon ES コンソールを確認します。

• Amazon ES ドメインはロググループに発行するように設定されているかどうか? Amazon ES コンソールを確認するか、AWS CLI describe-elasticsearch-domain-config オプションを使用するか、いずれかの SDK を使用して DescribeElasticsearchDomainConfig を呼び出します。

• Elasticsearch ログしきい値が低くてリクエストが超過していないかどうか? インデックスのしきい値を確認するには、次のコマンドを使用します。

GET elasticsearch_domain_endpoint/index/_settings?pretty

インデックスのスローログを無効にする場合は、変更したしきい値をデフォルト値の -1 に戻します。

Amazon ES コンソールまたは AWS CLI を使用して CloudWatch への発行を無効にしても、Elasticsearchでのログ生成は停止されません。これらのログの発行が停止されるだけです。スローログが不要になった場合は、インデックスの設定を確認してください。

ログの表示CloudWatch でアプリケーションとスローログを表示する方法は、その他の CloudWatch ログを表示する方法と同じです。詳細については、Amazon CloudWatch Logs User Guide の「ログデータの表示」を参照してください。

ログを表示する際の考慮事項は以下のとおりです。

• Amazon ES は、各行の最初の 255,000 文字のみを CloudWatch に発行します。残りのコンテンツは切り捨てられます。

• CloudWatch では、ログの内容を識別しやすいようにログストリーム名のサフィックスとして -index-slow-logs、-search-slow-logs、および -es-application-logs が使用されます。

API バージョン 2015-01-0125

Page 34: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド設定変更について

Amazon Elasticsearch Service ドメインの管理

Amazon Elasticsearch Service (Amazon ES) ドメイン内のドキュメントサイズが大きくなり、数が増えるため、また、ネットワークトラフィックが増大するため、Elasticsearch クラスターの設定を更新する必要が出てきます。ドメインを再設定する時期を把握するには、ドメインメトリクスを監視する必要があります。ドメインに対するデータ関連の API 呼び出しを監査する、またはドメインにタグを割り当てる必要がある場合もあります。ここでは、これらのタスクや、ドメインの管理に関連する他のタスクを実行する方法を説明します。

トピック• 設定変更について (p. 26)• 設定変更に関連する料金 (p. 27)• サービスソフトウェア更新 (p. 28)• マルチ AZ ドメインの設定 (p. 29)• ヘルスダッシュボードの解釈 (p. 33)• Amazon CloudWatch を使用した、クラスターメトリクスと統計情報の監視 (コンソール) (p. 34)• Amazon Elasticsearch Service ドメインのタグ付け (p. 43)

設定変更についてAmazon ES では、ドメインの更新時に Blue/Green デプロイプロセスが使用されます。Blue/Green は通常、2 つの本稼働環境 (ライブとアイドル) に使用して、ソフトウェアの変更時に両者間で切り替える方法を指します。Amazon ES の場合は、ドメインの更新用に新しい環境を作成し、これらの更新の完了後に新しい環境にユーザーをルーティングする方法を指します。この方法では、新しい環境へのデプロイに失敗しても、ダウンタイムを最小限に抑えることができ、元の環境を維持することができます。

次のオペレーションにより、Blue/Green デプロイが発生します。

• インスタンスタイプを変更する• ドメインに専用マスターノードがない場合、データインスタンス数の変更• 専用マスターノードを有効または無効にする• 専用マスターノード数を変更する• マルチ AZ の有効化または無効化• ストレージタイプ、ボリュームタイプ、ボリュームサイズを変更する• 別の VPC のサブネットを選択する• VPC セキュリティグループの追加または削除• Kibana の Amazon Cognito 認証を有効または無効にする• 別の Amazon Cognito ユーザープールまたは ID プールを選択する• 詳細設定の変更• エラーログまたはスローログの CloudWatch への公開を有効または無効にする• Elasticsearch の新しいバージョンへのアップグレード• [Require HTTPS (HTTPS が必要)] の有効化または無効化

API バージョン 2015-01-0126

Page 35: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド設定変更に関連する料金

ほとんどの場合、次のオペレーションにより、Blue/Green デプロイは発生しません。

• アクセスポリシーの変更• 自動スナップショットの時間の変更• ドメインに専用マスターノードがある場合、データインスタンス数の変更

いくつかの例外があります。たとえば、3 つのアベイラビリティーゾーンサポートを起動してからドメインを再設定していない場合、専用マスターノードをアベイラビリティーゾーン間に再配布するために、Amazon ES によって一回限りの Blue/Green デプロイが実行されることがあります。

設定の変更を開始すると、ドメインの状態が Processing に変化します。特定のサービスソフトウェア更新 (p. 28)中、ステータスは Active のままです。どちらの場合も、クラスターの状態と AmazonCloudWatch メトリクスを調べると、ドメイン更新中はクラスター内のノード数が一時的に増加 — しばしば倍増 — していることを確認できます。次の図では、設定の変更中にノード数が 11 から 22 に倍増し、更新が完了すると 11 に戻っていることがわかります。

この一時的な増加により、管理対象のノード数がかなり増えるため、クラスターの専用マスターノード (p. 144)への負荷が高くなります。専用マスターノードでは、Blue/Green デプロイに関連するオーバーヘッドを処理するための十分な容量を維持することが重要です。

Important

設定の変更およびサービスのメンテナンス中に、追加料金は発生しません。課金対象となるのは、クラスター用にリクエストしたノード数のみです。詳細については、「the section called “設定変更に関連する料金” (p. 27)」を参照してください。

専用マスターノードに過度な負荷がかかることを防ぐには、Amazon CloudWatch メトリクスを使用して使用率を監視 (p. 34)できます。推奨される最大値については、「the section called “推奨 CloudWatchアラーム” (p. 147)」を参照してください。

設定変更に関連する料金ドメインの設定を変更すると、「the section called “設定変更について” (p. 26)」で説明されているように、Amazon ES で新しいクラスターが作成されます。古いものから新しいものへの移行中、以下の料金が発生します。

• インスタンスタイプを変更した場合、両方のクラスター (最初の 1 時間) が課金されます。最初の 1 時間の後は、新しいクラスターに対してのみ料金が発生します。

例: 3 つの m3.xlarge インスタンスから 4 つの m4.large インスタンスに設定を変更した場合。最初の 1 時間は、両方のクラスターに課金されます (3 * m3.xlarge + 4 * m4.large)。最初の 1 時間の後は、新しいクラスターに対してのみ料金が発生します (4 * m4.large)。

• インスタンスタイプを変更しない場合は、最大のクラスターに対してのみ課金されます (最初の 1 時間)。最初の 1 時間の後は、新しいクラスターに対してのみ料金が発生します。

例: 6 つの m3.xlarge インスタンスから 3 つの m3.xlarge インスタンスに設定を変更した場合。最初の 1 時間は、最大のクラスターに課金されます (6 * m3.xlarge)。最初の 1 時間の後は、新しいクラスターに対してのみ料金が発生します (3 * m3.xlarge)。

API バージョン 2015-01-0127

Page 36: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドサービスソフトウェア更新

サービスソフトウェア更新Note

サービスソフトウェア更新は、Elasticsearch バージョンのアップグレードとは異なります。最新バージョンの Elasticsearch へのアップグレードについては、「Elasticsearch のアップグレード (p. 105)」を参照してください。

Amazon ES では、機能追加やドメイン強化を行うシステムソフトウェア更新を定期的にリリースしています。更新がリリースされているかどうかを簡単に確認するには、コンソールを使用します。サービスソフトウェア更新の履歴については、「the section called “リリースノート” (p. 266)」を参照してください。

新しいサービスソフトウェアが利用可能になると、ドメインへの更新をリクエストして、新しい機能を迅速に利用できます。また、トラフィックの少ない時間帯に更新を開始することもできます。

更新には、必須のものや、オプションのものがあります。必要な更新に関するアクションを実行しない場合、サービスソフトウェアは特定の期間 (通常 2 週間) が経過すると自動的に更新されます。次の表に示されているいずれかの状態にある場合、ドメインはサービスソフトウェア更新の対象外である可能性があります。

州/地域 説明

処理中のドメイン ドメインは、設定変更中です。オペレーション完了後、更新の適格性を確認します。

赤のクラスター状態 クラスター内の 1 つ以上のインデックスは赤です。トラブルシューティングステップについては、「the section called “赤のクラスター状態” (p. 164)」を参照してください。

高いエラー率 Elasticsearch クラスターはリクエストの処理を試みましたが、大量の 5xxエラーを返しています。この問題は通常、同時読み取りまたは書き込みリクエストが多すぎることで起こります。クラスターへのトラフィックを減らすか、ドメインのスケーリングを検討してください。

スプリットブレイン スプリットブレインとは、Elasticsearch クラスターに 1 つ以上のマスターノードがあり、決して独自に再結合することのない 2 つのクラスターに分割されているという意味です。専用マスターノード (p. 144)の推奨値を使用することで、スプリットブレインを回避できます。スプレッドブレインからの復旧方法については、AWS サポート にお問い合わせください。

Amazon Cognito 統合の問題

お使いのドメインでは Kibana の認証 (p. 117)が使用されています。Amazon ES で 1 つ以上の Amazon Cognito リソースが見つかりません。この問題は通常、Amazon Cognito ユーザープールがない場合に発生します。この問題を修正するには、見つからないリソースを再作成し、そのリソースを使用するように Amazon ES ドメインを設定します。

その他の Amazon ESサービスの問題

Amazon ES 自体の問題により、ドメインが更新対象外として表示される可能性があります。前の条件がドメインに当てはまらず、問題が 1 日以上続く場合は、AWS サポート にお問い合わせください。

サービスのソフトウェア更新をリクエストするには (コンソール)

1. https://aws.amazon.com にアクセスし、[Sign In to the Console] を選択します。2. [分析] で、[Elasticsearch Service] を選択します。3. ナビゲーションペインの [My domains (マイドメイン)] で、更新するドメインを選択します。

API バージョン 2015-01-0128

Page 37: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドマルチ AZ ドメインの設定

4. [サービスソフトウェアリリース] で、ドキュメントリンクを使用して、現在のバージョンと最新のバージョンを比較します。次に、[更新] を選択します。

サービスのソフトウェア更新をリクエストするには (AWS CLI および AWS SDK)

次のコマンドを使用して、更新が利用できるかどうかを確認後、アップグレードの適格性を確認して、更新をリクエストします。

• describe-elasticsearch-domain (DescribeElasticsearchDomain)• start-elasticsearch-service-software-update

(StartElasticsearchServiceSoftwareUpdate)

詳細については、「AWS CLI Command Reference」および「Amazon ES 設定 API リファレンス (p. 196)」を参照してください。

Tip

更新をリクエストした後、それをキャンセルできるわずかな時間がある場合があります。コンソール または stop-elasticsearch-service-software-update(StopElasticsearchServiceSoftwareUpdate) コマンドを使用します。

マルチ AZ ドメインの設定それぞれの AWS リージョンは地理別に分類された地域でありアベイラビリティーゾーンと呼ばれる複数の独立したロケーションを持っています。サービス中断が発生した場合にデータの損失を防ぎ、クラスターのダウンタイムを最小限に抑えるため、同じリージョン内の 2 つまたは 3 つのアベイラビリティーゾーン間にノードを分散できます。これは、マルチ AZ と呼ばれる設定です。

実稼働ワークロードを実行するドメインの場合、次の設定をお勧めします。

• Amazon ES により 3 つのアベイラビリティーゾーンをサポートするリージョンを選択します。• 米国東部 (バージニア北部、オハイオ)• 米国西部 (オレゴン)• 欧州 (フランクフルト、アイルランド、ロンドン、パリ)• アジアパシフィック (シンガポール、シドニー、東京)• 中国 (寧夏)

• 3 つのゾーン間にドメインをデプロイします。• 専用マスターノードおよびデータノードに現行世代のインスタンスタイプを選択します。• 3 つの専用マスターノードと少なくとも 3 つのデータノードを使用します。• クラスター内のインデックスごとに少なくとも 1 つのレプリカを作成します。

このセクションの残りの部分では、これらの推奨事項について説明し、そのコンテキストを示します。

シャード分散マルチ AZ を有効にする場合は、クラスターの各インデックスに少なくとも 1 つのレプリカを作成する必要があります。レプリカがないと、Amazon ES はデータのコピーを他のアベイラビリティーゾーンに分散できないため、マルチ AZ の意味がほとんどなくなります。さいわい、すべてのインデックスのデフォルト設定で、レプリカの数は 1 つです。次の図が示すように、Amazon ES はプライマリおよびレプリカシャードを分散し、どのレプリカシャードも、対応するプライマリシャードと同じゾーンに存在しないようにします。

API バージョン 2015-01-0129

Page 38: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドシャード分散

シャードをアベイラビリティーゾーンごとに分散することに加えて、Amazon ES はノードごとにシャードを分散します。それでも、特定のドメイン設定ではシャード数が不均等にある場合があります。次のドメインを考えます。

• データノード x 5• プライマリシャード x 5• レプリカ x 2• アベイラビリティーゾーン x 3

この状況では、次の図に示すように、Amazon ES はゾーン間でプライマリシャードとレプリカシャードを分散するために 1 つのノードをオーバーロードする必要があります。

API バージョン 2015-01-0130

Page 39: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド専用マスターノード分散

個々のノードに負荷がかかってパフォーマンスが低下する可能性があるこのような状況を回避するため、インデックスあたりのレプリカが複数になる予定の場合は 3 の倍数のインスタンス数を選択することをお勧めします。

専用マスターノード分散ドメインを設定するときに 2 つのアベイラビリティーゾーンを選択した場合でも、Amazon ES は 3 つのアベイラビリティーゾーン間に専用マスターノード (p. 144)を自動的に分散します。この分散により、ゾーンでサービス中断が発生した場合にクラスターのダウンタイムを防ぐことができます。推奨される 3つの専用マスターノードを使用していて、1 つのアベイラビリティーゾーンがダウンした場合でも、クラスターには専用マスターノードのクォーラム (2) が残り、新しいマスターを選択できます。この設定は以下の図のようになります。

API バージョン 2015-01-0131

Page 40: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドアベイラビリティーゾーンの中断

この自動分散にはいくつかの重要な例外があります。

• 3 つのアベイラビリティーゾーンで使用できない旧世代のインスタンスタイプを選択した場合、以下のシナリオが適用されます。• ドメインに 3 つのアベイラビリティーゾーンを選択した場合、Amazon ES はエラーをスローしま

す。異なるインスタンスタイプを選択し、もう一度試します。• ドメインに 2 つのアベイラビリティーゾーンを選択した場合、Amazon ES は 2 つのゾーン間に専用

マスターノードを分散します。• すべての AWS リージョンに 3 つのアベイラビリティーゾーンがあるわけではありません。それらの

リージョンでは、2 つのゾーンのみを使用するようにドメインを設定できます (Amazon ES は 2 つのゾーン間にのみ専用マスターノードを分散できます)。3 つのアベイラビリティーゾーンをサポートするリージョンのリストについては、「the section called “マルチ AZ ドメインの設定” (p. 29)」を参照してください。

アベイラビリティーゾーンの中断アベイラビリティーゾーンの中断が発生することはほとんどありませんが、起こり得ます。以下の表に、各種マルチ AZ 設定と中断時の動作を示します。

リージョン内のアベイラビリティーゾーン数

選択したアベイラビリティーゾーンの数

専用マスターノードの数

1 つのアベイラビリティーゾーンで中断が発生した場合の動作

2 以上 2 0 ダウンタイム。クラスターのデータノードの半分が失われます。マスターを選択する前に残りのアベイラビリティーゾーンで少なくとも 1 つを置き換える必要があります。

2 2 3 ダウンタイムの可能性は五分五分です。AmazonES は、2 つの専門マスターノードを 1 つのアベイラビリティーゾーンに、もう 1 つを他のアベイラビリティーゾーンに分散します。

API バージョン 2015-01-0132

Page 41: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドヘルスダッシュボードの解釈

リージョン内のアベイラビリティーゾーン数

選択したアベイラビリティーゾーンの数

専用マスターノードの数

1 つのアベイラビリティーゾーンで中断が発生した場合の動作

• 専用マスターノードが 1 つのアベイラビリティーゾーンで中断が発生した場合、残りのアベイラビリティーゾーン内の 2 つの専用マスターノードがマスターを選択できます。

• 専用マスターノードが 2 つのアベイラビリティーゾーンで中断が発生した場合、残りのアベイラビリティーゾーンが専用マスターノードを追加してマスターを選択できるようになるまでクラスターは使用できません。

3 以上 2 3 ダウンタイムはありません。Amazon ES は、専用マスターノードを 3 つのアベイラビリティーゾーン間で自動的に分散するため、残りの 2 つの専用マスターノードがマスターを選択できます。

3 以上 3 0 ダウンタイムなし。データノードの約 3 分の 2 が引き続きマスターを選択できます。

3 以上 3 3 ダウンタイムなし。残りの 2 つの専用マスターノードがマスターを選択できます。

原因に関係なくあらゆる設定において、ノードの障害が発生すると、欠落したノードを置き換えるためにAmazon ES が自動的に新しいノードを設定する間、クラスターの残りのデータノードで非常に大きな負荷がかかる期間が発生する可能性があります。

たとえば、3 ゾーン設定でアベイラビリティーゾーンが中断した場合、3 分の 2 に相当するデータノードがクラスターへのリクエストを処理する必要があります。これらのリクエストを処理するとき、残りのノードはオンラインになる新しいノードにもシャードをレプリケートするため、さらにパフォーマンスに影響が及びます。ワークロードにとって可用性が重要な場合、クラスターにリソースを追加してこの問題を緩和することを検討してください。

ヘルスダッシュボードの解釈Amazon ES コンソールの [Instance health (インスタンスのヘルス)] タブは、箱ひげ図を使用してElasticsearch ノードごとの正常性に一目でわかる可視性を提供します。

API バージョン 2015-01-0133

Page 42: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドAmazon CloudWatch を使用した、クラス

ターメトリクスと統計情報の監視 (コンソール)

• それぞれの色付きの箱は、指定した期間におけるノードの値範囲を示しています。• 青色の箱は他のノードと同じ値を示します。赤色の箱は異常値を示します。• 各箱の白線は、ノードの現在値を示します。• 各拍の両脇にある「ひげ」は、期間におけるすべてのノードの最大値と最小値を示します。

Amazon CloudWatch を使用した、クラスターメトリクスと統計情報の監視 (コンソール)

Amazon ES ドメインは、1 分ごとにパフォーマンスメトリクスを Amazon CloudWatch に送信します。汎用または磁気 EBS ボリュームを使用する場合は、EBS ボリュームのメトリックスは 5 分ごとのみに更新されます。これらのメトリクスを表示するには、Amazon Elasticsearch Service コンソールで、[クラスターの状態] タブおよび [インスタンスの状態] タブを使用します。このメトリクスには、追加料金はかかりません。

ドメインの設定を変更すると、[クラスターの状態] タブと [インスタンスの状態] タブの各インスタンスのリストが正しい数に戻る前に、しばらくの間 2 倍のサイズになる場合があります。この動作の説明については、「the section called “設定変更について” (p. 26)」を参照してください。

Amazon ES メトリクスは、これらのカテゴリに分類されます。

• the section called “クラスターメトリクス” (p. 34)• the section called “専用マスターノードメトリクス” (p. 37)• the section called “EBS ボリュームメトリクス” (p. 38)• the section called “インスタンスメトリクス” (p. 39)

Note

サービスは、メトリクスを 2 週間アーカイブし、その後破棄します。

クラスターメトリクスAWS/ES 名前空間には、次のクラスターのメトリクスが含まれます。

メトリクス 説明

ClusterStatus.green すべてのインデックスのシャードがクラスターのノードに割り当てられることを示します。

関連する統計: Minimum、Maximum

ClusterStatus.yellow すべてのインデックスのプライマリシャードがクラスターのノードに割り当てられていることを示しますが、少なくとも 1 つのインデックスのレプリカシャードは割り当てられていません。レプリカを割り当てることができる 2 番目のノードがないため、単一ノードクラスターがこのクラスター状態に常に初期化します。緑のクラスター状態を取得するためにノード数を増やすか、Elasticsearch API を使用してnumber_of_replicas を設定し、インデックス用に 0 にすることができます。詳細については、「Amazon Elasticsearch Service ドメインの設定」を参照してください。

関連する統計: Minimum、Maximum

API バージョン 2015-01-0134

Page 43: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドクラスターメトリクス

メトリクス 説明

ClusterStatus.red 少なくとも 1 つのインデックスのプライマリとレプリカの両方のシャードが、クラスターのノードに割り当てられないことを示します。復旧するには、インデックスを削除するかスナップショットを復元します。次に、EBS ベースのストレージを追加するか、より大きなインスタンスタイプを使用するか、インスタンスを追加します。詳細については、「赤のクラスター状態」を参照してください。

関連する統計: Minimum、Maximum

Nodes Amazon ES クラスターのノード数 (例: 専用マスターノード)。

関連する統計: Minimum、Maximum、Average

SearchableDocuments クラスター内のすべてのインデックスで検索可能なドキュメントの合計数。

関連する統計: Minimum、Maximum、Average

DeletedDocuments クラスター内のすべてのインデックスで削除対象としてマークされたドキュメントの合計数。これらのドキュメントは検索結果に表示されなくなっていますが、セグメントマージ中にディスクから削除されたドキュメントのみが Elasticsearch によって削除されます。このメトリクスは、削除リクエスト後に増加し、セグメントマージ後に減少します。

関連する統計: Minimum、Maximum、Average

CPUUtilization クラスター内のデータノードで使用する CPU リソースの最大パーセンテージ。このメトリクスは、個別のノードでも利用できます。

関連する統計: Maximum、Average

FreeStorageSpace クラスター内のノードの空き容量。Sum は、クラスターの合計空き容量を示しますが、正確な値を取得するには期間を 1 分のままにしておく必要があります。Minimum、Maximum、および Average は、個々のノードの空き容量を示します。このメトリクスは、個別のノードでも利用できます。メトリクスが 0 に達すると、Amazon ES はClusterBlockException をスローします。復旧するには、インデックスを削除する、より大きなインスタンスを追加する、既存のインスタンスに EBS ベースのストレージを追加する、のいずれかを実行する必要があります。詳細については、「空きストレージ領域の不足からの復旧」を参照してください。

Amazon ES コンソールには、この値が GiB 単位で表示されます。Amazon CloudWatch コンソールには、この値が MiB 単位で表示されます。

Note

FreeStorageSpace は、Elasticsearch _cluster/statsAPI が提供する値より常に低くなります。Amazon ES は、内部オペレーションのために、各インスタンスの記憶域の一定割合を予約します。

関連する統計: Minimum、Maximum、Average、Sum

API バージョン 2015-01-0135

Page 44: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドクラスターメトリクス

メトリクス 説明

ClusterUsedSpace クラスターの合計使用領域。正確な値を取得するには、期間を 1 分のままにしておく必要があります。

Amazon ES コンソールには、この値が GiB 単位で表示されます。Amazon CloudWatch コンソールには、この値が MiB 単位で表示されます。

関連する統計: Minimum、Maximum

ClusterIndexWritesBlockedクラスターで、着信する書き込みリクエストを受け入れるか、ブロックするかを指定します。値 0 では、クラスターでリクエストを受け入れます。値 1 ではリクエストをブロックします。

クラスターでリクエストをブロックする原因としては、多くの要素が考えられます。代表的なものとしては、FreeStorageSpace が少なすぎる、JVMMemoryPressure が高すぎる、CPUUtilization が高すぎるなどがあります。この問題を軽減するには、ディスク容量の追加やクラスターのスケーリングを検討します。

関連する統計: Maximum

Note

このメトリクスは、Amazon CloudWatch コンソールでは表示できますが、Amazon ES コンソールでは表示できません。

JVMMemoryPressure クラスター内のすべてのデータノードで使用する Java ヒープの最大パーセンテージ。

関連する統計: Maximum

AutomatedSnapshotFailure クラスターの失敗した自動スナップショットの数。1 の値は、自動スナップショットが過去 36 時間、ドメイン用に取られなかったことを示します。

関連する統計: Minimum、Maximum

CPUCreditBalance クラスター内の、データノードに使用できる残りの CPU クレジット。CPU クレジットは、フル CPU パフォーマンスを 1分間実現します。詳細については、Amazon EC2 開発者ガイドの「CPU クレジット」を参照してください。このメトリクスは、t2.micro.elasticsearch、t2.small.elasticsearch、t2.medium.elasticsearchの各インスタンスタイプで使用できます。

関連する統計: Minimum

KibanaHealthyNodes Kibana のヘルスチェック。値 1 は正常な動作を示します。値 0 はKibana がアクセス不可であることを示します。通常、Kibana の状態はクラスターの状態を反映しています。

関連する統計: Minimum

Note

このメトリクスは、Amazon CloudWatch コンソールでは表示できますが、Amazon ES コンソールでは表示できません。

API バージョン 2015-01-0136

Page 45: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド専用マスターノードメトリクス

メトリクス 説明

KMSKeyError 値 1 は、保管時のデータを暗号化するために使用される KMS カスタマーマスターが無効になっていることを示します。通常のオペレーションにドメインを復元するには、キーを再度有効にします。コンソールでは、保管時のデータを暗号化するドメインに対してのみこのメトリクスが表示されます。

関連する統計: Minimum、Maximum

KMSKeyInaccessible 値 1 は、保管時のデータを暗号化するために使用される KMS カスタマーマスターが削除されたか、Amazon ES への権限が取り消し済みであることを示します。この状態にあるドメインを復元することはできません。ただし、手動のスナップショットがある場合は、それを使用してドメインのデータを新しいドメインに移行できます。コンソールでは、保管時のデータを暗号化するドメインに対してのみこのメトリクスが表示されます。

関連する統計: Minimum、Maximum

InvalidHostHeaderRequestsElasticsearch クラスターに対する HTTP リクエストのうち、ホストヘッダーが無効な (または欠落している) ものの数。有効なリクエストには、ドメインホスト名がホストヘッダー値として必要です。AmazonES は、制限的なアクセスポリシーを持たないパブリックアクセスドメインの不正なリクエストを拒否します。すべてのドメインに制限付きアクセスポリシーを適用することをお勧めします。

このメトリクスで大きな値が表示される場合は、Elasticsearch クライアントのリクエストにドメインホスト名が含まれていることを確認します (ない場合は、IP アドレスなど)。

関連する統計: Sum

ElasticsearchRequests Elasticsearch クラスターに対するリクエストの数。

関連する統計: Sum

2xx, 3xx, 4xx, 5xx 特定の HTTP レスポンスコード (2xx、3xx、4xx、5xx) の発生につながった、ドメインへのリクエストの数。

関連する統計: Sum

専用マスターノードメトリクスAWS/ES 名前空間には専用マスターノードの次のメトリクスが含まれます。

メトリクス 説明

MasterCPUUtilization 専用マスターノードが使用する CPU リソースの最大パーセンテージ。このメトリクスが 60 パーセントに達する場合、インスタンスタイプのサイズを増やすことをお勧めします。

関連する統計: Average

MasterFreeStorageSpace このメトリクスは関係ないため無視できます。このサービスはデータノードとしてマスターノードを使用しません。

API バージョン 2015-01-0137

Page 46: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドEBS ボリュームメトリクス

メトリクス 説明

MasterJVMMemoryPressure クラスター内のすべての専用マスターノードで使用する Java ヒープの最大パーセンテージ。このメトリクスが 85 パーセントに達する場合、より大規模なインスタンスタイプに移行することをお勧めします。

関連する統計: Maximum

MasterCPUCreditBalance クラスター内の専用マスターノードで使用できる、残りの CPU クレジット。CPU クレジットは、フル CPU パフォーマンスを 1 分間実現します。詳細については、Linuxインスタンス用 Amazon EC2 ユーザーガイド の「CPUクレジット」を参照してください。このメトリクスは、t2.micro.elasticsearch、t2.small.elasticsearch、t2.medium.elasticsearchの各インスタンスタイプで使用できます。

関連する統計: Minimum

MasterReachableFromNode MasterNotDiscovered 例外のヘルスチェック。値 1 は正常な動作を示します。値 0 は、/_cluster/health/ の動作が正常ではないことを示します。

動作が正常でないとは、マスターノードが停止しているか、到達不可能であることを意味します。通常、これらの原因はネットワーク接続または AWS 依存関係の問題です。

関連する統計: Minimum

Note

このメトリクスは、Amazon CloudWatch コンソールでは表示できますが、Amazon ES コンソールでは表示できません。

MasterSysMemoryUtilization使用中のマスターノードのメモリの割合。

関連する統計: Maximum

EBS ボリュームメトリクスAWS/ES 名前空間には、次の EBS ボリュームのメトリクスが含まれます。

メトリクス 説明

ReadLatency EBS ボリュームでの読み取り操作のレイテンシー (秒単位)。

関連する統計: Minimum、Maximum、Average

WriteLatency EBS ボリュームでの書き込み操作のレイテンシー (秒単位)。

関連する統計: Minimum、Maximum、Average

ReadThroughput EBS ボリュームでの読み取り操作のスループット (バイト/秒単位)。

関連する統計: Minimum、Maximum、Average

WriteThroughput EBS ボリュームでの書き込み操作のスループット (バイト/秒単位)。

関連する統計: Minimum、Maximum、Average

API バージョン 2015-01-0138

Page 47: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドインスタンスメトリクス

メトリクス 説明

DiskQueueDepth EBS ボリュームに対する保留中の入出力 (I/O) リクエストの数。

関連する統計: Minimum、Maximum、Average

ReadIOPS EBS ボリュームでの読み取り操作の入出力 (I/O) 操作数 (1 秒あたり)。

関連する統計: Minimum、Maximum、Average

WriteIOPS EBS ボリュームでの書き込み操作の入出力 (I/O) 操作数 (1 秒あたり)。

関連する統計: Minimum、Maximum、Average

インスタンスメトリクスAWS/ES 名前空間には、ドメイン内のインスタンスごとに以下のメトリクスが含まれています。また、Amazon ES では、これらのインスタンスメトリクスを集約することで、クラスター全体の正常性に関する洞察が得られます。この動作を確認するには、コンソールで統計 [データサンプル] を使用します。以下のテーブルの各メトリクスには、ノードとクラスターに関連する統計を含みます。

Important

Elasticsearch のバージョンが異なる場合、_index API への呼び出しの処理にも異なるスレッドプールが使用されます。Elasticsearch 1.5 および 2.3 は、インデックス作成スレッドプールを使用します。Elasticsearch 5.x、6.0、および 6.2 はバルクスレッドプールを使用します。6.3 以降では書き込みスレッドプールを使用します。現在、Amazon ES ではバルクスレッドプールと書き込みスレッドプールのメトリクスは提供されていません。

メトリクス 説明

IndexingLatency インデックス作成オペレーションを完了するためにシャードで必要な平均時間 (ミリ秒)。

関連するノードの統計: Average

関連するクラスターの統計: Average、Maximum

IndexingRate 1 分あたりのインデックス作成オペレーションの数。2 つのドキュメントを追加し、2 つのカウントを 4 つのオペレーションとして更新する _bulk APIへの 1 回の呼び出し。これは 1 つ以上のノードに分散する可能性があります。そのインデックスに 1 つ以上のレプリカがある場合、クラスター内の他のノードにも合計 4 つのインデックス作成オペレーションが記録されます。ドキュメントの削除はこのメトリクスに対してカウントされません。

関連するノードの統計: Average

関連するクラスターの統計: Average、Maximum、Sum

SearchLatency 検索オペレーションを完了するためにシャードで必要な平均時間 (ミリ秒)。

関連するノードの統計: Average

関連するクラスターの統計: Average、Maximum

SearchRate ノードのすべてのシャードに対する 1 分あたりの検索リクエストの総数。_search API への 1 回の呼び出しに対して、さまざまなシャードから結果が返される可能性があります。これらのシャードのうちの 5 つが 1 つの

API バージョン 2015-01-0139

Page 48: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドインスタンスメトリクス

メトリクス 説明ノードにある場合、クライアントが 1 つのリクエストしか行っていない場合でも、ノードはこのメトリクスについて 5 を報告します。

関連するノードの統計: Average

関連するクラスターの統計: Average、Maximum、Sum

SysMemoryUtilizationインスタンスが使用中のメモリの割合。

関連するノードの統計: Minimum、Maximum、Average

関連するクラスターの統計: Minimum、Maximum、Average

JVMGCYoungCollectionCount「新世代」ガベージコレクションが実行された回数。実行数が大量になり、かつ増え続けることは、通常のクラスター操作の一部です。

関連するノードの統計: Maximum

関連するクラスターの統計: Sum、Maximum、Average

JVMGCYoungCollectionTimeクラスターで「新世代」ガベージコレクションの実行にかかった時間 (ミリ秒)。

関連するノードの統計: Maximum

関連するクラスターの統計: Sum、Maximum、Average

JVMGCOldCollectionCount「旧世代」ガベージコレクションが実行された回数。十分なリソースがあるクラスターでは、この回数は少ないままですが、まれに増加します。

関連するノードの統計: Maximum

関連するクラスターの統計: Sum、Maximum、Average

JVMGCOldCollectionTimeクラスターで「旧世代」ガベージコレクションの実行にかかった時間 (ミリ秒)。

関連するノードの統計: Maximum

関連するクラスターの統計: Sum、Maximum、Average

ThreadpoolForce_mergeQueue強制マージスレッドプールでキューに入っているタスクの数。キューのサイズが一貫して大きい場合は、クラスターのスケーリングを検討してください。

関連するノードの統計: Maximum

関連するクラスターの統計: Sum、Maximum、Average

ThreadpoolForce_mergeRejected強制マージスレッドプールで拒否されたタスクの数。この数が増え続ける場合は、クラスターのスケーリングを検討してください。

関連するノードの統計: Maximum

関連するクラスターの統計: Sum

API バージョン 2015-01-0140

Page 49: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドインスタンスメトリクス

メトリクス 説明

ThreadpoolForce_mergeThreads強制マージスレッドプールのサイズ。

関連するノードの統計: Maximum

関連するクラスターの統計: Average、Sum

ThreadpoolIndexQueueインデックス作成スレッドプールでキューに入っているタスクの数。キューのサイズが一貫して大きい場合は、クラスターのスケーリングを検討してください。インデックスキューの最大サイズは 200 です。

関連するノードの統計: Maximum

関連するクラスターの統計: Sum、Maximum、Average

ThreadpoolIndexRejectedインデックス作成スレッドプールで拒否されたタスクの数。この数が増え続ける場合は、クラスターのスケーリングを検討してください。

関連するノードの統計: Maximum

関連するクラスターの統計: Sum

ThreadpoolIndexThreadsインデックス作成スレッドプールのサイズ。

関連するノードの統計: Maximum

関連するクラスターの統計: Average、Sum

ThreadpoolSearchQueue検索スレッドプールでキューに入っているタスクの数。キューのサイズが一貫して大きい場合は、クラスターのスケーリングを検討してください。検索キューの最大サイズは 1,000 です。

関連するノードの統計: Maximum

関連するクラスターの統計: Sum、Maximum、Average

ThreadpoolSearchRejected検索スレッドプールで拒否されたタスクの数。この数が増え続ける場合は、クラスターのスケーリングを検討してください。

関連するノードの統計: Maximum

関連するクラスターの統計: Sum

ThreadpoolSearchThreads検索スレッドプールのサイズ。

関連するノードの統計: Maximum

関連するクラスターの統計: Average、Sum

ThreadpoolBulkQueue バルクスレッドプールでキューに入っているタスクの数。キューのサイズが一貫して大きい場合は、クラスターのスケーリングを検討してください。

関連するノードの統計: Maximum

関連するクラスターの統計: Sum、Maximum、Average

API バージョン 2015-01-0141

Page 50: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドUltraWarm メトリクス

メトリクス 説明

ThreadpoolBulkRejectedバルクスレッドプールで拒否されたタスクの数。この数が増え続ける場合は、クラスターのスケーリングを検討してください。

関連するノードの統計: Maximum

関連するクラスターの統計: Sum

ThreadpoolBulkThreadsバルクスレッドプールのサイズ。

関連するノードの統計: Maximum

関連するクラスターの統計: Average、Sum

ThreadpoolWriteThreads書き込みスレッドプールのサイズ。

関連するノードの統計: Maximum

関連するクラスターの統計: Average、Sum

ThreadpoolWriteRejected書き込みスレッドプールで拒否されたタスクの数。

関連するノードの統計: Maximum

関連するクラスターの統計: Average、Sum

ThreadpoolWriteQueue書き込みスレッドプールでキューに入っているタスクの数。

関連するノードの統計: Maximum

関連するクラスターの統計: Average、Sum

UltraWarm メトリクスAWS/ES 名前空間には、UltraWarm ノードの次のメトリクスが含まれます。

メトリクス 説明

WarmCPUUtilization UltraWarm ノードによる最大 CPU 使用率。

関連する統計: Maximum

WarmJVMMemoryPressureUltraWarm ノードで使用する Java ヒープの最大割合。

関連する統計: Maximum

WarmStorageSpaceUtilizationクラスターで使用中のウォームストレージスペースの合計容量。

関連する統計: Sum

WarmSysMemoryUtilization使用中のウォームノードのメモリの割合。

関連する統計: Maximum

API バージョン 2015-01-0142

Page 51: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドAmazon Elasticsearch Service ドメインのタグ付け

Amazon Elasticsearch Service ドメインのタグ付けAmazon ES タグを使用して、Amazon ES ドメインにメタデータを追加できます。AWS は、タグに意味論的意味を適用しません。タグは単なる文字列として解釈されます。タグには、次の要件があります。

タグ要素 説明

タグキー タグキーは、必須のタグ名です。タグキーは添付される Amazon ES ドメインで一意にする必要があります。タグキーと値の基本的な制限の一覧については、「ユーザー定義タグの制限」を参照してください。

タグ値 タグ値は、タグの省略可能な文字列値です。タグ値は null を指定できます。また、タグセット内で一意である必要はありません。例えば、project/Trinity と cost-center/Trinity のタグセット内に 1 つのキーと値のペアを使用できます。タグキーと値の基本的な制限の一覧については、「ユーザー定義タグの制限」を参照してください。

各 Amazon ES ドメインには、その Amazon ES ドメインに割り当てられているすべてのタグを格納するタグセットがあります。AWS は、Amazon ES ドメインにタグを自動的に設定しません。タグセットには、最大 50 個のタグを格納でき、空にすることもできます。Amazon ES ドメインに追加したタグのキーがそのリソースの既存のタグのキーと同じ場合、既存の値は新しい値によって上書きされます。

これらのタグを使用して、類似のリソースの費用をグループ化することで、コストを追跡できます。Amazon ES ドメインタグは、Amazon ES ドメインを定義して関連付ける名前と値のペアです。その名前はキーと呼ばれます。タグを使用して、Amazon ES ドメインに任意の情報を割り当てることができます。たとえば、タグキーを使用してカテゴリを定義し、タグ値をそのカテゴリのアイテムにすることができます。具体的には、「project」というタグキーと「Salix」というタグ値を定義して、Amazon ESドメインが Salix プロジェクトに割り当てられていることを示すことができます。また、タグキーとしてenvironment=test や environment=production などを使用して、Amazon ES ドメインがテスト用なのか本稼働用なのかを示すこともできます。Amazon ES ドメインに関連付けられているメタデータの追跡が簡単になるように、一貫した一連のタグキーを使用することをお勧めします。

タグを使用して AWS 請求書を整理し、自分のコスト構造を反映することもできます。そのためには、サインアップして、タグキー値が含まれた AWS アカウントの請求書を取得する必要があります。その後、同じタグキー値を持つリソースに従って請求情報を整理し、結合したリソースのコストを確認します。たとえば、複数の Amazon ES ドメインにキーと値のペアをタグ付けし、請求情報を整理して複数のサービスにおける各ドメインの合計コストを確認できます。詳細については、AWS 請求情報とコスト管理の「コスト配分タグの使用」を参照してください。

Note

タグは承認用にキャッシュに格納されます。そのため、Amazon ES ドメインに対するタグの追加や更新には数分かかることがあります。

タグの操作 (コンソール)以下の手順を使用してリソースタグを作成します。

タグを作成するには (コンソール)

1. https://aws.amazon.com にアクセスし、[Sign In to the Console] を選択します。2. [分析] で、[Elasticsearch Service] を選択します。3. ナビゲーションペインで、Amazon ES ドメインを選択します。4. ドメインダッシュボードで、[Manage tags (タグの管理)] を選択します。5. [Key] 列にタグキーを入力します。

API バージョン 2015-01-0143

Page 52: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドタグの操作 (AWS CLI)

6. (オプション) [Value] 列にタグ値を入力します。7. [Submit] を選択します。

タグを削除するには (コンソール)

以下の手順を使用してリソースタグを削除します。

1. https://aws.amazon.com にアクセスし、[Sign In to the Console] を選択します。2. [分析] で、[Elasticsearch Service] を選択します。3. ナビゲーションペインで、Amazon ES ドメインを選択します。4. ドメインダッシュボードで、[Manage tags (タグの管理)] を選択します。5. 削除するタグの横にある [Remove (削除)] を選択します。6. [Submit] を選択します。

コンソールを使用したタグの操作の詳細については、AWS マネジメントコンソールの入門ガイドの「タグエディタの使用」を参照してください。

タグの操作 (AWS CLI)AWS CLI で --add-tags コマンドを使用して、リソースタグを作成することができます。

構文

add-tags --arn=<domain_arn> --tag-list Key=<key>,Value=<value>

パラメータ 説明

--arn タグが添付される Amazon ES ドメインの Amazon リソースネーム。

--tag-list スペースで区切られたキーと値のペアの以下の形式のセット:Key=<key>,Value=<value>

次の例では、ログ ドメイン用に 2 つのタグを作成します。

aws es add-tags --arn arn:aws:es:us-east-1:379931976431:domain/logs --tag-list Key=service,Value=Elasticsearch Key=instances,Value=m3.2xlarge

remove-tags コマンドを使用して Amazon ES ドメインからタグを削除できます。

構文

remove-tags --arn=<domain_arn> --tag-keys Key=<key>,Value=<value>

パラメータ 説明

--arn タグが添付される Amazon ES ドメインの Amazon リソースネーム(ARN)。

--tag-keys Amazon ES ドメインから削除するスペース区切りのタグ値のセット。

API バージョン 2015-01-0144

Page 53: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドタグの操作 (AWS SDK)

次の例は、ログドメインから前述の例で作成した 2 つのタグを削除します。

aws es remove-tags --arn arn:aws:es:us-east-1:379931976431:domain/logs --tag-keys service instances

list-tags コマンドで Amazon ES ドメインの既存のタグを表示できます。

構文

list-tags --arn=<domain_arn>

パラメータ 説明

--arn タグが添付される Amazon ES ドメインの Amazon リソースネーム(ARN)。

次の例は、ログドメインのすべてのリソースタグをリスト表示します。

aws es list-tags --arn arn:aws:es:us-east-1:379931976431:domain/logs

タグの操作 (AWS SDK)AWS SDK では (Android および iOS SDK を除く)、AddTags、ListTags、RemoveTags オペレーションを含む、Amazon ES 設定 API リファレンス (p. 196)で定義されたすべてのアクションがサポートされています。AWS SDK のインストールと使用の詳細については、「AWS Software Development Kits」を参照してください。

API バージョン 2015-01-0145

Page 54: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドデータ保護

Amazon Elasticsearch Service でのセキュリティ

AWS では、クラウドのセキュリティが最優先事項です。AWS のお客様は、セキュリティを最も重視する組織の要件を満たすように構築されたデータセンターとネットワークアーキテクチャから利点を得られます。

セキュリティは、AWS とお客様の間の共有責任です。共有責任モデルでは、これをクラウドのセキュリティおよびクラウド内のセキュリティとして説明しています。

• クラウドのセキュリティ – AWS は、AWS クラウド内で AWS サービスを実行するインフラストラクチャを保護する責任を担います。また、AWS は、使用するサービスを安全に提供します。AWS コンプライアンスプログラムの一環として、サードパーティーの監査が定期的にセキュリティの有効性をテストおよび検証しています。Amazon Elasticsearch Service に適用するコンプライアンスプログラムの詳細については、「コンプライアンスプログラムによる AWS 対象範囲内のサービス」を参照してください。

• クラウド内のセキュリティ – お客様の責任はお客様が使用する AWS のサービスによって決まります。また、お客様は、お客様のデータの機密性、企業の要件、および適用可能な法律および規制などの他の要因についても責任を担います。

このドキュメントは、Amazon ES を使用する際に共有責任モデルを適用する方法を理解するのに役立ちます。以下のトピックでは、セキュリティおよびコンプライアンスの目的を達成するために Amazon ES を設定する方法を示します。また、Amazon ES リソースのモニタリングや保護に役立つ他の AWS サービスの使用方法についても説明します。

トピック• Amazon Elasticsearch Service でのデータ保護 (p. 46)• Amazon Elasticsearch Service の Identity and Access Management (p. 50)• Amazon Elasticsearch Service のログ記録とモニタリング (p. 62)• Amazon Elasticsearch Service のコンプライアンス検証 (p. 64)• Amazon Elasticsearch Service の耐障害性 (p. 65)• Amazon Elasticsearch Service のインフラストラクチャセキュリティ (p. 65)

Amazon Elasticsearch Service でのデータ保護Amazon Elasticsearch Service は、データ保護の規制やガイドラインを含む AWS 責任共有モデルに準拠しています。AWS は、AWS のすべてのサービスを実行するグローバルなインフラストラクチャを保護する責任を担います。AWS では、カスタマーコンテンツと個人データを処理するためのセキュリティ設定管理など、このインフラストラクチャでホストされているデータの制御が維持されます。AWS のお客様とAPN パートナーは、データ管理者またはデータ処理者として行動し、AWS クラウドに配置する個人データすべてに対して責任を負います。

データ保護目的の場合、AWS アカウント認証情報を保護して IAM (AWS Identity and AccessManagement) で個々のユーザーアカウントをセットアップし、そのユーザーに各自の職務を果たすために必要なアクセス許可のみが付与されるようにすることをお勧めします。また、以下の方法でデータを保護することをお勧めします。

API バージョン 2015-01-0146

Page 55: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド保管時の暗号化

• 各アカウントで多要素認証 (MFA) を使用します。• SSL/TLS を使用して AWS リソースと通信します。ドメインを作成するときに、[Require HTTPS

(HTTPS が必要)] を選択します。• AWS CloudTrail で API とユーザーアクティビティログをセットアップします。• AWS 暗号化ソリューションを、AWS サービス内のすべてのデフォルトのセキュリティ管理と一緒に使

用します。• Amazon Macie などの高度なマネージドセキュリティサービスを使用します。これにより、Amazon S3

に保存される個人データの検出と保護が支援されます。

顧客のアカウント番号などの機密の識別情報は、ドメイン名、インデックス名、ドキュメントタイプ、ドキュメント IDなどに配置しないことを強くお勧めします。Elasticsearch はこれらの名前を UniformResource Identifier (URI) 内で使用します。サーバーおよびアプリケーションは、HTTP リクエストを頻繁に記録します。このため、URI に機密情報が含まれている場合、不要なデータ漏えいにつながる可能性があります。

データ保護の詳細については、AWS セキュリティブログのブログ投稿「AWS の責任共有モデルとGDPR」を参照してください。

トピック• Amazon Elasticsearch Service の保管時のデータの暗号化 (p. 47)• Amazon Elasticsearch Service のノード間の暗号化 (p. 49)

Amazon Elasticsearch Service の保管時のデータの暗号化Amazon ES ドメインでは、保管時のデータの暗号化という、データへの不正アクセスを防止するのに役立つセキュリティ機能が提供されます。この機能は、AWS Key Management Service (AWS KMS) を使用して暗号化キーを保存および管理し、256 ビットキーを使用した Advanced Encryption Standard アルゴリズム (AES-256) を使用して暗号化を実行します。有効にすると、この機能によりドメインの次の要素が暗号化されます。

• インデックス• Elasticsearch ログ• スワップファイル• アプリケーションディレクトリのその他すべてのデータ• 自動スナップショット

以下は、保管時のデータの暗号化を有効にするときに暗号化されませんが、追加のステップを行って保護することができます。

• 手動スナップショット : 現在、KMS マスターキーを使用して手動スナップショットを暗号化することはできません。ただし、S3 で管理されたキーによるサーバー側の暗号化を使用してスナップショットリポジトリとして使用しているバケットを暗号化できます。手順については、「the section called “手動スナップショットレポジトリの登録” (p. 99)」を参照してください。

• スローログおよびエラーログ: スローログを発行 (p. 21)して暗号化する必要がある場合、Amazon ESドメインと同じ AWS KMS マスターキーを使用してその CloudWatch Logs ロググループを暗号化できます。詳細については、『Amazon CloudWatch Logs User Guide』の、「AWS KMS を使用したCloudWatch ログでのログデータの暗号化」を参照してください。

AWS KMS マスターキーを作成する方法については、AWS Key Management Service Developer Guide の「キーの作成」を参照してください。

API バージョン 2015-01-0147

Page 56: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド保管時の暗号化

保管時のデータの暗号化の有効化デフォルトでは、ドメインの保管時のデータは暗号化されず、既存のドメインでこの機能を使用するように設定することはできません。この機能を有効にするには、別のドメインを作成 (p. 10)してデータを移行する必要があります。保管時のデータの暗号化には Elasticsearch 5.1 以降が必要です。

Amazon ES コンソールを使用して保管時のデータを暗号化するドメインを作成するためには、次のようなID ベースのポリシーなど、AWS KMS への読み取り専用アクセス権限を持っている必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:List*", "kms:Describe*" ], "Resource": "*" } ]}

[(Default) aws/es ((デフォルト) aws/es)] 以外のキーを使用する場合、キーの許可を作成するアクセス許可も必要です。通常、これらのアクセス許可は、キーの作成時に指定するリソースベースのポリシーの形式になります。

キーを Amazon ES 固有にする場合、キーポリシーに kms:ViaService 条件を追加できます。

"Condition": { "StringEquals": { "kms:ViaService": "es.us-west-1.amazonaws.com" }, "Bool": { "kms:GrantIsForAWSResource": "true" }}

詳細については、AWS Key Management Service Developer Guide の「AWS KMS でのキーポリシーの使用」を参照してください。

Warning

ドメインの暗号化に使用したキーを削除すると、そのドメインにアクセスできなくなります。Amazon ES チームはデータを復元することはできません。AWS KMS でマスターキーが削除されるのは 7 日以上の待機期間が経過した後に限られるため、Amazon ES チームはドメインにそのリスクがあることを検出した場合はその旨を連絡する場合があります。

保管時のデータの暗号化の無効化保管時のデータを暗号化するようにドメインを設定した後、設定を無効にすることはできません。代わりに、既存のドメインの手動スナップショット (p. 97)を作成し、別のドメインを作成 (p. 10)してからデータを移行して、古いドメインを削除することができます。

保管時のデータを暗号化するドメインのモニタリング保管時のデータを暗号化するドメインには、KMSKeyError と KMSKeyInaccessible の 2 つの追加のメトリクスがあります。これらのメトリクスは、ドメインの暗号化キーに問題が発生した場合にのみ表示さ

API バージョン 2015-01-0148

Page 57: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドノード間の暗号化

れます。これらのメトリクスの詳細については、「the section called “クラスターメトリクス” (p. 34)」を参照してください。Amazon ES コンソールまたは Amazon CloudWatch コンソールのいずれかを使用して表示できます。

Tip

各メトリクスは、ドメインの重大な問題を表しているため、両方の CloudWatch アラームを作成することをお勧めします。詳細については、「the section called “推奨 CloudWatch アラーム” (p. 147)」を参照してください。

その他の考慮事項• 自動キーローテーションは AWS KMS マスターキーのプロパティを保持するため、このローテーション

は Elasticsearch データにアクセスする能力には影響しません。暗号化された Amazon ES ドメインは、新しいマスターキーの作成と古いキーのすべてのレファレンスの更新を含むマスターキーローテーションをサポートしません。詳細については、AWS Key Management Service Developer Guide の「カスタマーマスターキーをローテーションする」を参照してください。

• 特定のインスタンスタイプは、保管時のデータの暗号化をサポートしていません。詳細については、「the section called “サポートされるインスタンスタイプ” (p. 172)」を参照してください。

• Kibana は保管時データを暗号化するドメインで引き続き動作します。• 保管時のデータを暗号化するドメインでは、自動スナップショット用に別のリポジトリ名を使用しま

す。詳細については、「the section called “スナップショットの復元” (p. 103)」を参照してください。• Amazon ES ドメインの暗号化には 2 つの権限が必要であり、各暗号化キーにはプリンシパルあたり 500

個の権限という制限があります。この制限は、単一のキーを使用して暗号化できる Amazon ES ドメインの最大数が 250 個であることを意味します。現在、Amazon ES でサポートされているドメインは(リージョンごとに) アカウントあたり最大 100 個であるため、権限に関するこの制限による影響はありません。アカウントごとのドメイン数の制限が引き上げられると、権限に関する制限による影響が生じる可能性があります。

現時点で 250 個を超えるドメインを暗号化する必要がある場合は、追加のキーを作成してください。キーはグローバルではなくリージョン単位であるため、複数の AWS リージョンで運用している場合は、現在でも複数のキーが必要です。

Amazon Elasticsearch Service のノード間の暗号化ノード間の暗号化では、Amazon ES のデフォルトの機能の上に追加のセキュリティ層を提供します。

各 Amazon ES ドメインは、—ドメインが VPC アクセスを使用しているかどうかにかかわらず—専用のVPC 内に存在します。このアーキテクチャにより、潜在的な攻撃者から Elasticsearch ノード間のトラフィックを傍受し、安全なクラスターが維持されます。ただし、デフォルトでは、VPC 内のトラフィックは暗号化されません。ノード間の暗号化により、VPC 内のすべての通信で TLS 1.2 暗号化が有効になります。

HTTPS 経由でデータを Amazon ES に送信する場合、ノード間の暗号化を使用すると、Elasticsearch がクラスター全体に分散 (および再分散) する際、データは暗号化された状態で維持されます。HTTP 経由で暗号化されていないデータが到着するあ場合、Amazon ES はそれがクラスターに到達した後で暗号化します。コンソール、AWS CLI、または設定 API を使用して、ドメインへのすべてのトラフィックが HTTPS経由で到達するように要求できます。

ノード間の暗号化を有効にするデフォルトでは、ドメインはノード間の暗号化を使用せず、既存のドメインをこの機能を使用するように設定することはできません。この機能を有効にするには、別のドメインを作成 (p. 10)してデータを移行する (p. 108)必要があります。ノード間の暗号化には Elasticsearch 6.0 以降が必要になります。

API バージョン 2015-01-0149

Page 58: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドIdentity and Access Management

ノード間の暗号化を無効にするノード間の暗号化を使用するようにドメインを設定した後、設定を無効にすることはできません。代わりに、暗号化されたドメインの手動スナップショット (p. 97)を作成し、別のドメインを作成 (p. 10)してからデータを移行して、古いドメインを削除することができます。

その他の考慮事項• Kibana は、ノード間の暗号化を使用するドメインで引き続き動作します。

Amazon Elasticsearch Service の Identity andAccess Management

Amazon Elasticsearch Service には、ドメインへのアクセスを制御するいくつかの方法が用意されています。このセクションでは、さまざまなポリシータイプ、それぞれがやり取りする方法。独自のカスタムポリシーを作成する方法を説明します。

Important

VPC は Amazon ES のアクセス制御にいくつかの追加考慮事項の導入をサポートしています・詳細については、「the section called “VPC ドメインのアクセスポリシーについて” (p. 134)」を参照してください。

ポリシーのタイプAmazon ES はアクセスポリシーの 3 つのタイプをサポートしています。

• the section called “リソースベースのポリシー” (p. 50)• the section called “アイデンティティベースのポリシー” (p. 52)• the section called “IP ベースのポリシー” (p. 53)

リソースベースのポリシードメインにリソースベースのポリシーをアタッチします。これらのポリシーは、ドメインのサブリソースでどのアクションをプリンシパルとして実行できるかを指定します。サブリソースには、Elasticsearchインデックスおよび API が含まれます。

Principal 要素は、アクセスを許可するアカウント、ユーザー、またはロールを指定します。Resource 要素は、これらのプリンシパルがアクセスできるサブリソースを指定します。次のリソースベースのポリシーは、test-user に es:* へのフルアクセス (test-domain) を付与します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/test-user" ] }, "Action": [ "es:*"

API バージョン 2015-01-0150

Page 59: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドポリシーのタイプ

], "Resource": "arn:aws:es:us-west-1:987654321098:domain/test-domain/*" } ]}

このポリシーには、2 つの重要な考慮事項が適用されます。

• これらの権限はこのドメインのみに適用されます。追加のポリシーを作成しない限り、test-user は他のドメインにアクセスできず、Amazon ES ダッシュボードでリスト表示することもできません。

• /* 要素の末尾 Resource はとても重要です。フルアクセスがあるにも関わらず、test-user はドメインのサブリソースのみでこのアクションを実行でき、ドメインの設定では実行できません。

たとえば、test-user はインデックス (GET https://search-test-domain.us-west-1.es.amazonaws.com/test-index) に対してリクエストを行うことができますが、ドメインの設定を更新できません (POST https://es.us-west-1.amazonaws.com/2015-01-01/es/domain/test-domain/config)。2 つのエンドポイント間の違いに注目してください。設定API (p. 196) へのアクセスには、ID ベースのポリシー (p. 52)が必要です。

test-user をさらに制限するには、次のポリシーを適用することができます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/test-user" ] }, "Action": [ "es:ESHttpGet" ], "Resource": "arn:aws:es:us-west-1:987654321098:domain/test-domain/test-index/_search" } ]}

これで、test-user は 1 つのオペレーションのみを実行できます。test-index における検索です。ドメインのその他すべてのインデックスはアクセス不可となり、es:ESHttpPut あるいは es:ESHttpPostアクションを使用する許可なしでは、test-user はドキュメントを追加あるいは変更できません。

次に、パワーユーザーのロールを設定することができます。このポリシーは、インデックスのすべてのURI に対する HTTP GET メソッドおよび PUT メソッドに power-user-role へのアクセスを付与します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:role/power-user-role" ] }, "Action": [ "es:ESHttpGet", "es:ESHttpPut"

API バージョン 2015-01-0151

Page 60: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドポリシーのタイプ

], "Resource": "arn:aws:es:us-west-1:987654321098:domain/test-domain/test-index/*" } ]}

使用できるすべてのアクションの詳細については、「the section called “ポリシーエレメントのレファレンス” (p. 55)」を参照してください。

アイデンティティベースのポリシーAmazon ES でドメインにアタッチするリソースベースのポリシーとは異なり、アイデンティティベースのポリシーは AWS Identity and Access Management (IAM) サービスを使用してユーザーやロールにアタッチします。リソースベースのポリシー (p. 50)と同様に、アイデンティティベースのポリシーは、サービスに誰がアクセスできるか、どのアクションキーを実行できるか、そして該当する場合には、これらのアクションを実行できるリソースを指定します。

これらを実行する実際の義務はないため、アイデンティティベースのポリシーはより一般的になる傾向があります。これにより、多くの場合、ユーザーが実行できる設定 API アクションのみ管理されます。これらのポリシーが完了したら、Amazon ES でリソースベースのポリシーを使用してユーザーにElasticsearch インデックスおよび API へのアクセスを提供できます。

アイデンティティベースのポリシーはユーザーあるいはロール (プリンシパル) にアタッチされるため、JSON はプリンシパルを指定しません。次のポリシーは、Describe および List で始まるアクションへのアクセスを付与します。このアクションの組み合わせはドメインの設定への読み取り専用のアクセスを提供しますが、ドメイン自体に保存されたデータへのアクセスは提供しません。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "es:Describe*", "es:List*" ], "Effect": "Allow", "Resource": "*" } ]}

管理者には、Amazon ES およびすべてのドメインに保存された全データへのフルアクセス権がある場合があります。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "es:*" ], "Effect": "Allow", "Resource": "*" } ]}

リソースベースのポリシーとアイデンティティベースのポリシーの違いについての詳細は、IAM ユーザーガイド の「IAM ポリシー」を参照してください。

API バージョン 2015-01-0152

Page 61: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドAmazon ES リクエストの作成と署名

Note

AWS 管理の AmazonESReadOnlyAccess ポリシーが適用されたユーザーは、コンソールでクラスターのヘルスステータスを確認できません。これらのユーザーがヘルスステータスを確認できるようにするには、アクセスポリシーに "es:ESHttpGet" アクションを追加し、これをユーザーのアカウントまたはロールにアタッチします。

IP ベースのポリシーIP ベースのポリシーは、1 つ以上の IP アドレスあるいは CIDR ブロックにドメインへのアクセスを制限します。技術的には、IP ベースのポリシーは異なるタイプのポリシーではありません。代わりに、これらのポリシーは、匿名のプリンシパルを指定し、特別な Condition 要素を含む、リソースベースのポリシーです。

IP ベースのポリシーの最大の特徴は、Amazon ES ドメインに署名なしのリクエストを許可することにあり、これで curl や the section called “Kibana” (p. 111) などのクライアントの使用が可能となり、またプロキシサーバーを介してドメインにアクセスできるようになります。詳細については、「the sectioncalled “プロキシを使用した Kibana から Amazon ES へのアクセス” (p. 111)」を参照してください。

Note

ドメインで VPC アクセスを有効にすると、IP ベースのポリシーを設定することはできません。代わりに、どの IP アドレスがドメインにアクセスできるかを制御するセキュリティグループを使用できます。詳細については、「the section called “VPC ドメインのアクセスポリシーについて” (p. 134)」を参照してください。

次のポリシーは、指定された IP 範囲からのすべてのリクエストが test-domain にアクセスする許可を付与します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "es:*" ], "Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/24" ] } }, "Resource": "arn:aws:es:us-west-1:987654321098:domain/test-domain/*" } ]}

Amazon ES リクエストの作成と署名完全にオープンなリソースベースのポリシーを設定する場合、Amazon ES 設定 API へのすべてのリクエストは署名付きである必要があります。ポリシーが IAM ユーザーまたはロールを指定する場合、Elasticsearch API へのリクエストも署名されている必要があります。署名メソッドは API によって異なります。

API バージョン 2015-01-0153

Page 62: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド複数のポリシーが衝突する場合

• Amazon ES 設定 API 呼び出しを行うには、AWS SDK のいずれかを使用することが推奨されます。SDK を使用するほうが、独自のリクエストを作成し署名するよりも、プロセスが簡素化し、大幅な時間の節約ができます。API エンドポイント設定には次の形式を使用します。

es.region.amazonaws.com/2015-01-01/

たとえば、次のリクエストは、movies ドメインの設定を変更しますが、自分で署名する必要があります (お勧めしません)。

POST https://es.us-east-1.amazonaws.com/2015-01-01/es/domain/movies/config{ "ElasticsearchClusterConfig": { "InstanceType": "c5.xlarge.elasticsearch" }}

Boto 3 などのいずれかの SDK を使用する場合、SDK はリクエスト署名を自動的に処理します。

import boto3

client = boto3.client('es')response = client.update_elasticsearch_domain_config( DomainName='movies', ElasticsearchClusterConfig={ 'InstanceType': 'c5.xlarge.elasticsearch' })

Java コードの例については、「AWS SDK の使用 (p. 192)」を参照してください。• ElasticsearchAPI への呼び出しを行うには、独自リクエストに署名する必要があります。各種言語のサ

ンプルコードについては、「HTTP リクエストの署名 (p. 71)」を参照してください。ElasticsearchAPI は、次の形式を使用します。

domain.region.es.amazonaws.com

たとえば、次のリクエストは、thor の、movies インデックスを検索します。

GET https://search-my-domain.us-east-1.es.amazonaws.com/movies/_search?q=thor

Amazon ES は、AWS 署名バージョン 4 を使用した認証をサポートします。詳細については、「署名バージョン 4 の署名プロセス」を参照してください。

Note

このサービスは、署名バージョン 4 で署名された HTTP POST リクエストの URL で渡されるパラメータを無視します。

複数のポリシーが衝突する場合複数のポリシーが同意しない、あるいはユーザーを明示的に指定しない場合、困難が生じます。IAM ユーザーガイド の「IAM の詳細を理解します」では、ポリシーの評価ロジックの適切な概要が説明されています。

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

API バージョン 2015-01-0154

Page 63: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドポリシーエレメントのレファレンス

• 明示的な拒否はすべての許可に優先します。

たとえば、リソースベースのポリシーがドメインにアクセスを許可しているが、アイデンティティベースのポリシーはアクセスを拒否するため、アクセスは拒否されます。アイデンティティベースのポリシーとリソースベースのポリシーによってユーザーがアクセス許可を持つべきかを指定いない場合、アクセスは許可されます。すべての結果の概要における交差するポリシーの図を以下で参照してください。

  リソースベースのポリシーで許可

リソースベースのポリシーで拒否

リソースベースのポリシーで許可あるいは拒否されない

Allowed in Identity-based Policy

許可 拒否 許可

Denied in Identity-basedPolicy

拒否 拒否 拒否

Neither Allowed norDenied in Identity-basedPolicy

許可 拒否 拒否

ポリシーエレメントのレファレンスAmazon ES では、「IAM ポリシーエレメントの参照」のほとんどのポリシー要素がサポートされています(NotPrincipal は除く)。次の表は、最も一般的なエレメントを示しています。

JSON ポリシーエレメント

概要

Version ポリシー言語の最新バージョンは 2012-10-17 です。すべてのアクセスポリシーでこの値を指定する必要があります。

Effect このエレメントは、指定されたアクションへのアクセスをステートメントが許可するか拒否するかを指定します。有効な値は Allow または Deny です。

Principal この要素は、リソースへのアクセスを許可する AWS アカウント、あるいはIAM ユーザーまたはロールを指定し、いくつかの形式を取ることができます。

• AWS アカウント: "Principal":{"AWS": ["123456789012"]} または"Principal":{"AWS": ["arn:aws:iam::123456789012:root"]}

• IAM ユーザー: "Principal":{"AWS":["arn:aws:iam::123456789012:user/test-user"]}

• IAM ロール: "Principal":{"AWS":["arn:aws:iam::123456789012:role/test-role"]}

* ワイルドカードを指定すると、ドメインへの匿名アクセスを有効にします。これは、IP ベース条件を追加しない限り、推奨されません。

Action Amazon ES では、HTTP メソッドとして次のアクションを使用します。

• es:ESHttpDelete

• es:ESHttpGet

• es:ESHttpHead

API バージョン 2015-01-0155

Page 64: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドポリシーエレメントのレファレンス

JSON ポリシーエレメント

概要

• es:ESHttpPost

• es:ESHttpPut

Amazon ES では、設定 API (p. 196) として次のアクションを使用します。

• es:AddTags

• es:CreateElasticsearchDomain

• es:DeleteElasticsearchDomain

• es:DeleteElasticsearchServiceRole

• es:DescribeElasticsearchDomain

• es:DescribeElasticsearchDomainConfig

• es:DescribeElasticsearchDomains

• es:DescribeElasticsearchInstanceTypeLimits

• es:DescribeReservedElasticsearchInstanceOfferings

• es:DescribeReservedElasticsearchInstances

• es:ListDomainNames

• es:ListElasticsearchInstanceTypeDetails

• es:ListElasticsearchInstanceTypes

• es:ListElasticsearchVersions

• es:ListTags

• es:PurchaseReservedElasticsearchInstanceOffering

• es:RemoveTags

• es:UpdateElasticsearchDomainConfig

Tip

ワイルドカードを使用してアクションのサブネットを指定できます("Action":"es:*" や "Action":"es:Describe*" など)。

特定の es: アクションは、リソースレベルの許可をサポートします。たとえば、すべてのドメインを削除する許可を付与せずに、1 つの特定のドメインのみ削除する許可をユーザーに付与することができます。その他のアクションはサービス自体に適用されます。たとえば、es:ListDomainNames は単一ドメインのコンテキストでは意味を成しませんが、それでもワイルドカードを必要とします。

Important

リソースベースのポリシーは、リソースレベルのアクセス権限とは異なっています。リソースベースのポリシー (p. 50) は、ドメインにアタッチする完全な JSON ポリシーです。リソースレベルのアクセス許可は、特定のドメインあるいはサブリソースにアクションを制限します。実際には、リソースレベルのアクセス許可はリソース、あるいはアイデンティティベースのポリシーのオプションの一部として捉えることができます。

次のアイデンティティベースのポリシー (p. 52)はすべての es: アクションを一覧表示し、ドメインのサブリソース (test-domain/*)、ドメインの設

API バージョン 2015-01-0156

Page 65: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドポリシーエレメントのレファレンス

JSON ポリシーエレメント

概要

定 (test-domain)、あるいはサービスのみ (*) に適用されるかによってアクションをグループ化します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "es:ESHttpDelete", "es:ESHttpGet", "es:ESHttpHead", "es:ESHttpPost", "es:ESHttpPut" ], "Resource": "arn:aws:es:us-west-1:987654321098:domain/test-domain/*" }, { "Effect": "Allow", "Action": [ "es:CreateElasticsearchDomain", "es:DeleteElasticsearchDomain", "es:DescribeElasticsearchDomain", "es:DescribeElasticsearchDomainConfig", "es:DescribeElasticsearchDomains", "es:UpdateElasticsearchDomainConfig" ], "Resource": "arn:aws:es:us-west-1:987654321098:domain/test-domain" }, { "Effect": "Allow", "Action": [ "es:AddTags", "es:DeleteElasticsearchServiceRole", "es:DescribeElasticsearchInstanceTypeLimits", "es:DescribeReservedElasticsearchInstanceOfferings", "es:DescribeReservedElasticsearchInstances", "es:ListDomainNames", "es:ListElasticsearchInstanceTypeDetails", "es:ListElasticsearchInstanceTypes", "es:ListElasticsearchVersions", "es:ListTags", "es:PurchaseReservedElasticsearchInstanceOffering", "es:RemoveTags" ], "Resource": "*" } ]}

Note

es:CreateElasticsearchDomain へのリソースレベルのアクセス権限は直観的ではなく見えることがあります—つまり、すでに存在するドメインを作成するアクセス権限をなぜユーザーに付与するのでしょう—ワイルドカードの使用でドメインに簡単な命名スキームを適用できます ("Resource": "arn:aws:es:us-west-1:987654321098:domain/my-team-name-*" など)。

API バージョン 2015-01-0157

Page 66: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドポリシーエレメントのレファレンス

JSON ポリシーエレメント

概要

もちろん、次のように、制限がより緩和されたリソース要素のアクションを含めることもできます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "es:ESHttpGet", "es:DescribeElasticsearchDomain" ], "Resource": "*" } ]}

アクションとリソースのペアリングについての詳細は、テーブルのResource 要素を参照してください。

Condition Amazon ES では、IAM ユーザーガイド の「使用できるグローバル条件キー」に記載されているほとんどの条件がサポートされています。重要な例外として、aws:SecureTransport キーは、Amazon ES でサポートされていません。

IP ベースのポリシー (p. 53)を設定する場合、次に示すように、IP アドレスまたは CIDR ブロックを条件として指定します。

"Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/32" ] }}

API バージョン 2015-01-0158

Page 67: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド詳細オプションと API に関する考慮事項

JSON ポリシーエレメント

概要

Resource Amazon ES は、3 つの基本的な方法で Resource 要素を使用します。

• es:ListDomainNames や フルアクセスを許可するといった、Amazon ES自体に適用されるアクションには、次の構文を使用します。

"Resource": "*"

• es:DescribeElasticsearchDomain のように、ドメインの設定に関連するアクションには、次の構文を使用します。

"Resource": "arn:aws:es:region:aws-account-id:domain/domain-name"

• es:ESHttpGet のように、ドメインのサブリソースを適用するアクションには、次の構文を使用します。

"Resource": "arn:aws:es:region:aws-account-id:domain/domain-name/*"

ワイルドカードを使用する必要はありません。Amazon ES は、各Elasticsearch index インデックスまたは API に異なるアクセスポリシーを定義します。たとえば、test-index インデックスへのユーザーのアクセス許可を制限できます。

"Resource": "arn:aws:es:region:aws-account-id:domain/domain-name/test-index"

test-index へのフルアクセスの代わりに、検索 API のみにポリシーを制限することもできます。

"Resource": "arn:aws:es:region:aws-account-id:domain/domain-name/test-index/_search"

個々のドキュメントへのアクセスを制御することもできます。

"Resource": "arn:aws:es:region:aws-account-id:domain/domain-name/test-index/test-type/1"

基本的に、Elasticsearch がサブリソースをエンドポイントとして表現する場合、そのアクセスを制御できます。

どのアクションがリソースレベルのアクセス権限をサポートするかの詳細については、このテーブルの Action 要素を参照してください。

詳細オプションと API に関する考慮事項Amazon ES にはいくつかの詳細オプションがあり、その 1 つにはアクセスコントロールが関連します(rest.action.multi.allow_explicit_index)。デフォルト設定の true では、特定の状況下でユーザーがサブリソースへのアクセス権限を回避することが許可されます。

API バージョン 2015-01-0159

Page 68: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド詳細オプションと API に関する考慮事項

たとえば、次のリソースベースのポリシーを考えます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/test-user" ] }, "Action": [ "es:ESHttp*" ], "Resource": [ "arn:aws:es:us-west-1:987654321098:domain/test-domain/test-index/*", "arn:aws:es:us-west-1:987654321098:domain/test-domain/_bulk" ] }, { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/test-user" ] }, "Action": [ "es:ESHttpGet" ], "Resource": "arn:aws:es:us-west-1:987654321098:domain/test-domain/restricted-index/*" } ]}

このポリシーは、test-user に test-index および Elasticsearch バルク API へのフルアクセスを付与します。また、GET への restricted-index リクエストを許可します。

次のインデックスリクエストは、見てわかるように、アクセス権限エラーによって失敗します。

PUT https://search-test-domain.us-west-1.es.amazonaws.com/restricted-index/movie/1{ "title": "Your Name", "director": "Makoto Shinkai", "year": "2016"}

インデックス API とは異なり、バルク API では、単一の呼び出しで多くのドキュメントの作成、更新、削除を実行できます。多くの場合、これらのオペレーションはリクエスト URL ではなく、リクエストの本文で指定します。Amazon ES が URL を使用してドメインサブリソースへのアクセスを制御するため、test-user は、結果的にバルク API を使用して restricted-index に変更を加えることができます。ユーザーにはインデックスで POST アクセス権限が欠如していますが、次のリクエストは成功します。

POST https://search-test-domain.us-west-1.es.amazonaws.com/_bulk{ "index" : { "_index": "restricted-index", "_type" : "movie", "_id" : "1" } }{ "title": "Your Name", "director": "Makoto Shinkai", "year": "2016" }

このような状況では、アクセスポリシーはその目的達成に失敗します。ユーザーがこれらの制限を回避することを防ぐためには、rest.action.multi.allow_explicit_index を false に変更できます。こ

API バージョン 2015-01-0160

Page 69: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドアクセス ポリシーの設定

の値が false の場合、リクエストボディでインデックス名を指定するバルク、mget、および msearch APIへのすべての呼び出し動作は停止します。つまり、_bulk への呼び出しは機能しなくなりますが、test-index/_bulk への呼び出しは動作します。この 2 番目のエンドポイントにはインデックス名が含まれるため、リクエストボディにそれを指定する必要はありません。

Kibana (p. 111) は mget および msearch に大きく依存しています。そのため、この変更後には正常に動作しないことが予想されます。部分的な解決策としては、rest.action.multi.allow_explicit_index を true のまま残して、特定のユーザーが 1 つ以上の API にアクセスすることを拒否します。

この設定の変更については、「the section called “詳細オプションの設定” (p. 20)」を参照してください。

同様に、以下のリソースベースのポリシーには 2 つの小さな問題があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/test-user" }, "Action": "es:ESHttp*", "Resource": "arn:aws:es:us-west-1:987654321098:domain/test-domain/*" }, { "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:user/test-user" }, "Action": "es:*", "Resource": "arn:aws:es:us-west-1:987654321098:domain/test-domain/restricted-index/*" } ]}

• 明示的な拒否にも関わらず、test-user が GET https://search-test-domain.us-west-1.es.amazonaws.com/_all/_search や GET https://search-test-domain.us-west-1.es.amazonaws.com/*/_search などの呼び出しを実行して、restricted-index のドキュメントにアクセスできることです。

• Resource エレメントレファレンス restricted-index/* により、test-user はインデックスのドキュメントに直接アクセスする権限がありません。しかし、ユーザーにはインデックス全体を削除する権限があります。アクセスと削除を防ぐには、このポリシーで restricted-index* を指定する必要があります。

広範囲な許可と一部の拒否を混合するよりは、最小限の権限の原則を守り、タスクを実行するために必要なアクセス権限のみを付与することが最も安全なアプローチです。

アクセス ポリシーの設定• リソースの作成あるいは変更、そして Amazon ES の IP ベースのポリシーに関する説明は、「the

section called “アクセス ポリシーの設定” (p. 18)」を参照してください。• IAM でアイデンティティベースのポリシーを作成または変更する方法については、IAM ユーザーガイド

の「IAM ポリシーの作成」を参照してください。

API バージョン 2015-01-0161

Page 70: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド追加のサンプルポリシー

追加のサンプルポリシーこの章には多くのサンプルポリシーが含まれていますが、AWS アクセスコントロールは複雑なテーマであり、例を使用することが一番の理解方法です。詳細については、IAM ユーザーガイド の「ポリシーの例」を参照してください。

Amazon Elasticsearch Service のログ記録とモニタリング

Amazon Elasticsearch Service は、ユーザー、ロール、または Amazon ES の AWS サービスによって実行されるアクションを記録するサービス AWS CloudTrail と統合されています。CloudTrail では、イベントとして Amazon ES に対するすべての設定 API 呼び出しをキャプチャします。

Note

CloudTrail は、CreateElasticsearchDomain や GetUpgradeStatus などの設定API (p. 196) 呼び出しのみをキャプチャします。CloudTrail は _search や _bulk などの Elasticsearch API (p. 174) はキャプチャしません。

キャプチャされる呼び出しには、Amazon ES コンソール、AWS CLI、または AWS SDK からの呼び出しが含まれます。証跡を作成する場合は、Amazon ES のイベントなど、Amazon S3 バケットへのCloudTrail イベントの継続的な配信を有効にすることができます。証跡を設定しない場合でも、CloudTrailコンソールの [イベント履歴] で最新のイベントを表示できます。CloudTrail によって収集された情報を使用して、リクエストの作成元の IP アドレス、リクエストの実行者、リクエストの実行日時などの詳細を調べて、Amazon ES に対してどのようなリクエストが行われたかを判断できます。

CloudTrail の詳細については、「AWS CloudTrail User Guide」を参照してください。

CloudTrail 内の Amazon Elasticsearch Service 情報CloudTrail は、アカウント作成時に AWS アカウントで有効になります。Amazon ES でアクティビティが発生すると、そのアクティビティは [Event history (イベント履歴)] の AWS の他のサービスのイベントとともに CloudTrail イベントに記録されます。最近のイベントは、AWS アカウントで表示、検索、ダウンロードできます。詳細については、「CloudTrail イベント履歴でのイベントの表示」を参照してください。

Amazon ES のイベントなど、AWS アカウントのイベントの継続的な記録については、証跡を作成します。証跡により、CloudTrail はログファイルを Amazon S3 バケットに配信できます。デフォルトでは、コンソールで証跡を作成するときに、証跡がすべての AWS リージョンに適用されます。証跡では、AWSパーティションのすべてのリージョンからのイベントがログに記録され、指定した Amazon S3 バケットにログファイルが配信されます。さらに、より詳細な分析と CloudTrail ログで収集されたデータに基づいた行動のためにその他の AWS サービスを設定できます。詳細については、以下を参照してください。

• 証跡を作成するための概要• CloudTrail でサポートされるサービスと統合• CloudTrail の Amazon SNS 通知の設定• 「複数のリージョンから CloudTrail ログファイルを受け取る」と「複数のアカウントから CloudTrail ロ

グファイルを受け取る」

すべての Amazon ES 設定 API アクションは CloudTrail が記録し、Amazon ES 設定 API リファレンス (p. 196) に文書化されます。

API バージョン 2015-01-0162

Page 71: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドAmazon Elasticsearch Service ログファイルエントリの概要

各イベントまたはログエントリには、リクエストの生成者に関する情報が含まれます。この ID 情報は以下のことを確認するのに役立ちます。

• リクエストが、ルートと AWS Identity and Access Management (IAM) ユーザー認証情報のどちらを使用して送信されたか

• リクエストが、ロールとフェデレーティッドユーザーのどちらの一時的なセキュリティ認証情報を使用して送信されたか

• リクエストが、別の AWS サービスによって送信されたかどうか

詳細については、「CloudTrail userIdentity 要素」を参照してください。

Amazon Elasticsearch Service ログファイルエントリの概要証跡は、指定した Amazon S3 バケットにイベントをログファイルとして配信できる設定です。CloudTrailログファイルには、1 つ以上のログエントリが含まれます。イベントは任意の送信元からの単一のリクエストを表し、リクエストされたアクション、アクションの日時、リクエストのパラメータなどに関する情報が含まれます。CloudTrail ログファイルは、パブリック API 呼び出しの順序付けられたスタックトレースではないため、特定の順序では表示されません。

以下の例は、CreateElasticsearchDomain オペレーションを表す CloudTrail ログエントリを示しています。

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::123456789012:user/test-user", "accountId": "123456789012", "accessKeyId": "access-key", "userName": "test-user", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-08-21T21:59:11Z" } }, "invokedBy": "signin.amazonaws.com" }, "eventTime": "2018-08-21T22:00:05Z", "eventSource": "es.amazonaws.com", "eventName": "CreateElasticsearchDomain", "awsRegion": "us-west-1", "sourceIPAddress": "123.123.123.123", "userAgent": "signin.amazonaws.com", "requestParameters": { "elasticsearchVersion": "6.3", "elasticsearchClusterConfig": { "instanceType": "m4.large.elasticsearch", "instanceCount": 1 }, "snapshotOptions": { "automatedSnapshotStartHour": 0 }, "domainName": "test-domain", "encryptionAtRestOptions": {}, "eBSOptions": { "eBSEnabled": true,

API バージョン 2015-01-0163

Page 72: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドコンプライアンス検証

"volumeSize": 10, "volumeType": "gp2" }, "accessPolicies": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"123456789012\"]},\"Action\":[\"es:*\"],\"Resource\":\"arn:aws:es:us-west-1:123456789012:domain/test-domain/*\"}]}", "advancedOptions": { "rest.action.multi.allow_explicit_index": "true" } }, "responseElements": { "domainStatus": { "created": true, "elasticsearchClusterConfig": { "zoneAwarenessEnabled": false, "instanceType": "m4.large.elasticsearch", "dedicatedMasterEnabled": false, "instanceCount": 1 }, "cognitoOptions": { "enabled": false }, "encryptionAtRestOptions": { "enabled": false }, "advancedOptions": { "rest.action.multi.allow_explicit_index": "true" }, "upgradeProcessing": false, "snapshotOptions": { "automatedSnapshotStartHour": 0 }, "eBSOptions": { "eBSEnabled": true, "volumeSize": 10, "volumeType": "gp2" }, "elasticsearchVersion": "6.3", "processing": true, "aRN": "arn:aws:es:us-west-1:123456789012:domain/test-domain", "domainId": "123456789012/test-domain", "deleted": false, "domainName": "test-domain", "accessPolicies": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::123456789012:root\"},\"Action\":\"es:*\",\"Resource\":\"arn:aws:es:us-west-1:123456789012:domain/test-domain/*\"}]}" } }, "requestID": "12345678-1234-1234-1234-987654321098", "eventID": "87654321-4321-4321-4321-987654321098", "eventType": "AwsApiCall", "recipientAccountId": "123456789012"}

Amazon Elasticsearch Service のコンプライアンス検証

サードパーティーの監査者は、複数の AWS コンプライアンスプログラムの一環として AmazonElasticsearch Service のセキュリティとコンプライアンスを評価します。これには、SOC、PCI、HIPAAが含まれます。

API バージョン 2015-01-0164

Page 73: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド弾力

特定のコンプライアンスプログラムの範囲内の AWS サービスのリストについては、「コンプライアンスプログラムによる AWS 対象範囲内のサービス」を参照してください。一般的な情報については、「AWSコンプライアンスプログラム」を参照してください。

サードパーティーの監査レポートをダウンロードするには、AWS Artifact を使用します。詳細については、「AWS Artifact のレポートのダウンロード」を参照してください。

Amazon ES を使用する際のお客様のコンプライアンス責任は、お客様のデータの機密性や貴社のコンプライアンス目的、適用可能な法律および規制によって決定されます。AWS では、コンプライアンスに役立つ以下のリソースを提供しています。

• セキュリティおよびコンプライアンスのクイックスタートガイド – これらのデプロイメントガイドでは、アーキテクチャ上の考慮事項について説明し、セキュリティとコンプライアンスに重点を置いたベースライン環境を AWS にデプロイするための手順を説明します。

• HIPAA のセキュリティとコンプライアンスに関するホワイトペーパーを作成する – このホワイトペーパーでは、企業が AWS を使用して HIPAA 準拠のアプリケーションを作成する方法について説明します。

• AWS コンプライアンスのリソース – このワークブックとガイドのコレクションは、お客様の業界や場所に適用される場合があります。

• AWS Config – この AWS サービスでは、自社プラクティス、業界ガイドライン、および規制に対するリソースの設定の準拠状態を評価します。

• AWS Security Hub – この AWS サービスでは、AWS 内のセキュリティ状態を包括的に表示しており、セキュリティ業界の標準およびベストプラクティスへの準拠を確認するのに役立ちます。

Amazon Elasticsearch Service の耐障害性AWS のグローバルインフラストラクチャは AWS リージョンとアベイラビリティーゾーンを中心として構築されます。AWS リージョンには、低レイテンシー、高いスループット、そして高度の冗長ネットワークで接続されている複数の物理的に独立・隔離されたアベイラビリティーゾーンがあります。アベイラビリティーゾーンでは、アベイラビリティーゾーン間で中断することなく自動的にフェイルオーバーするアプリケーションとデータベースを設計および運用することができます。アベイラビリティーゾーンは、従来の単一または複数のデータセンターインフラストラクチャよりも可用性、耐障害性、および拡張性が優れています。

AWS リージョンとアベイラビリティーゾーンの詳細については、「AWS グローバルインフラストラクチャ」を参照してください。

Amazon ES では、AWS グローバルインフラストラクチャに加えて、データの耐障害性とバックアップのニーズに対応できるように複数の機能を提供しています。

• マルチ AZ ドメインとレプリカシャード (p. 29)• 自動スナップショットと手動スナップショット (p. 97)

Amazon Elasticsearch Service のインフラストラクチャセキュリティ

マネージド型サービスとして、Amazon Elasticsearch Service は、ホワイトペーパー「Amazon WebServices: AWS セキュリティプロセスの概要」に記載されているAWS グローバルネットワークセキュリティの手順で保護されています。

AWS 公開された API 呼び出しを使用し、ネットワークを介して Amazon ES 設定 API にアクセスできます。クライアントで Transport Layer Security (TLS) 1.0 以降がサポートされている必要があります。TLS

API バージョン 2015-01-0165

Page 74: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドインフラストラクチャセキュリティ

1.2 以降が推奨されています。また、Ephemeral Diffie-Hellman (DHE) や Elliptic Curve Ephemeral Diffie-Hellman (ECDHE) などの Perfect Forward Secrecy (PFS) を使用した暗号スイートもクライアントでサポートされている必要があります。これらのモードは、Java 7 以降など、最近のほとんどのシステムでサポートされています。

また、設定 API に対するリクエストは、アクセスキー ID と、IAM プリンシパルに関連付けられているシークレットのアクセスキーを使用して署名する必要があります。または、AWS Security Token Service(AWS STS) を使用して、一時的なセキュリティ認証情報を生成し、リクエストに署名することもできます。

ドメイン設定に応じて、Elasticsearch API へのリクエストに署名する必要があることもあります。詳細については、「the section called “Amazon ES リクエストの作成と署名” (p. 53)」を参照してください。

Amazon ES は、パブリックアクセスドメインをサポートしており、インターネットに接続された任意のデバイスからリクエストを受信できます。また、パブリックインターネットから分離されている VPC アクセスドメイン (p. 132)もサポートしています。

API バージョン 2015-01-0166

Page 75: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドインデックス作成の概要

Amazon Elasticsearch Service でのデータのインデックス作成の概要

Elasticsearch では REST API を使用するため、ドキュメントのインデックス作成にはさまざまな方法があります。curl などの標準クライアントを使用することも、HTTP リクエストの送信が可能な任意のプログラミング言語を使用することもできます。やり取りのプロセスをさらに単純化するため、Elasticsearch には多くのプログラミング言語に対応するクライアントが用意されています。上級ユーザーは、直接「HTTPリクエストの署名 (p. 71)」に進むことができます。

新しいデータの到着が徐々に増加する場合 (小規模ビジネスからの顧客注文など) は、到着するドキュメントのインデックス作成に _index API を使用できます。データフローがそれほど頻繁ではない場合 (マーケティングウェブサイトに対する週 1 回の更新など) は、ファイルを生成して _bulk API に送信することもできます。ドキュメント数が多い場合は、リクエストをまとめて _bulk API を使用すると、優れたパフォーマンスを実現できます。ただし、ドキュメントのサイズが非常に大きい場合は、_index API を使用して、個々のドキュメントにインデックスを作成する必要があります。

他の AWS サービスからのデータの統合については、「Amazon ES にストリーミングデータをロードする (p. 80)」を参照してください。

インデックス作成の概要データを検索するには、データにインデックスを作成する必要があります。インデックス作成は、データを高速に取得できるように検索エンジンがデータを整理する方法です。その結果として生成される構造体がインデックスと呼ばれています。

Elasticsearch のデータの基本単位は JSON ドキュメントです。Elasticsearch は、インデックス内で、一意の ID を使用して各ドキュメントを識別します。

_index API に対するリクエストは次のようになります。

PUT elasticsearch_domain/index/_doc/id{ "A JSON": "document" }

_bulk API に対するリクエストは少し異なっており、インデックスや ID をバルクデータ内で指定する必要があります。

POST elasticsearch_domain/_bulk{ "index": { "_index" : "index", "_id" : "id" } }{ "A JSON": "document" }

バルクデータは特定の形式に従う必要があり、最終行を含めてすべての行末には改行文字 (\n) が必要になります。以下に基本的な形式を示します。

action_and_metadata\noptional_document\naction_and_metadata\noptional_document\n...

簡単なサンプルファイルについては、「the section called “ステップ 2: インデックス作成のためにデータをアップロードする” (p. 7)」を参照してください。

API バージョン 2015-01-0167

Page 76: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドインデックス作成の概要

Elasticsearch では、まだ存在しないインデックスにドキュメントを追加すると、インデックスの自動作成が行われます。また、リクエスト内で ID を指定しなかった場合は、ID の自動生成が行われます。このシンプルな例では、自動的に movies インデックスを作成し、ドキュメントにインデックスを付け、一意のIDを割り当てます。

POST elasticsearch_domain/movies/_doc{"title": "Spirited Away"}

Important

ID の自動生成では、PUT ではなく、POST メソッドを使用します。

ドキュメントが存在することを確認するには、次の検索を実行できます。

GET elasticsearch_domain/movies/_search?pretty

レスポンスの内容は次のようになります。

"hits" : { "total" : 1,  "max_score" : 1.0,  "hits" : [  {    "_index" : "movies",      "_type" : "_doc",      "_id" : "AV4WaTnYxBoJaZkSFeX9",      "_score" : 1.0,      "_source" : {        "title" : "Spirited Away"      }    }  ]}

ID の自動生成には明らかな欠点があります。コードのインデックス作成ではドキュメント ID が指定されないため、後でドキュメントを更新することが容易ではありません。7 の ID を指定するには、次のリクエストを使用します。

PUT elasticsearch_domain/movies/_doc/7{"title": "Spirited Away"}

古いバージョンの Elasticsearch では、_doc, を要求するのではなく、ドキュメントタイプの任意の名前をサポートします。一部の古いバージョンは、インデックスごとに複数のドキュメントタイプもサポートしています。選択する Elasticsearch のバージョンに関係なく、すべてのインデックスに対して、 _doc の1 種類を使用することをお勧めします。

新しいインデックスの場合、セルフホスト型 Elasticsearch 7.x のデフォルトシャード数は 1 です。Amazon ES 7.x ドメインのデフォルトは、以前の 5 のままです。シャードおよびレプリカにデフォルト以外の設定を指定する場合は、ドキュメントを追加する前にそのインデックスを作成します。

PUT elasticsearch_domain/more-movies{"settings": {"number_of_shards": 6, "number_of_replicas": 2}}

Note

サンプルコードについては、「HTTP リクエストの署名 (p. 71)」を参照してください。

API バージョン 2015-01-0168

Page 77: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドインデックスの命名制限

インデックスの命名制限Elasticsearch インデックスには、以下の命名制限があります。

• すべての文字を小文字にする必要があります。• インデックスの名前を _ または - から始めることはできません。• インデックス名にスペース、カンマ、:、"、*、+、/、\、|、?、#、>、< を含めることはできませ

ん。

インデックス、タイプ、またはドキュメント ID 名に機密情報を含めないでください。Elasticsearchは、これらの名前を Uniform Resource Identifier (URI) で使用します。サーバーおよびアプリケーションは、HTTP リクエストを頻繁に記録します。このため、URI に機密情報が含まれている場合、不要なデータ漏えいにつながる可能性があります。

2018-10-03T23:39:43 198.51.100.14 200 "GET https://elasticsearch_domain/dr-jane-doe/flu-patients-2018/202-555-0100/ HTTP/1.1"

関連する JSON ドキュメントを表示するアクセス許可 (p. 50)がない場合でも、Dr. Doe の患者 (電話番号は 202-555-0100) が 2018 年にインフルエンザにかかったことを、この架空のログ行から推測することが可能です。

レスポンスサイズの削減_index および _bulk API のレスポンスには、多くの情報が含まれています。この情報は、リクエストのトラブルシューティングや、再試行ロジックの実装には役立ちますが、帯域幅を広く使用する場合があります。この例では、32 バイトのドキュメントのインデックスを作成すると、レスポンスは 339 バイト(ヘッダーを含む) になります。

PUT elasticsearch_domain/more-movies/_doc/1{"title": "Back to the Future"}

レスポンス

{ "_index": "more-movies", "_type": "_doc", "_id": "1", "_version": 4, "result": "updated", "_shards": { "total": 2, "successful": 2, "failed": 0 }, "_seq_no": 3, "_primary_term": 1}

このレスポンスサイズは一見小さく見えますが、1 日あたり 1,000,000 ドキュメント — 1 秒あたり約 11.5ドキュメントのインデックス — を作成した場合、339 バイト/1 レスポンスは、1 か月あたり 10.17 GB のダウンロードトラフィックになります。

データ転送コストが懸念される場合は、filter_path パラメータを使用して Elasticsearch レスポンスのサイズを削減できますが、失敗したリクエストの識別や再試行のために必要なフィールドを除外しないよ

API バージョン 2015-01-0169

Page 78: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドレスポンスサイズの削減

うに注意してください。このフィールドはクライアントによって異なります。filter_path パラメータは、すべての Elasticsearch REST API で動作しますが、頻繁に呼び出す API (例: _index、_bulk API) を使用する場合に特に便利です。

PUT elasticsearch_domain/more-movies/_doc/1?filter_path=result,_shards.total{"title": "Back to the Future"}

レスポンス

{ "result": "updated", "_shards": { "total": 2 }}

フィールドを含める代わりに、- プリフィックスを使用してフィールドを除外することができます。filter_path は、ワイルドカードもサポートしています。

POST elasticsearch_domain/_bulk?filter_path=-took,-items.index._*{ "index": { "_index": "more-movies", "_id": "1" } }{"title": "Back to the Future"}{ "index": { "_index": "more-movies", "_id": "2" } }{"title": "Spirited Away"}

レスポンス

{ "errors": false, "items": [ { "index": { "result": "updated", "status": 200 } }, { "index": { "result": "updated", "status": 200 } } ]}

API バージョン 2015-01-0170

Page 79: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドJava

Amazon Elasticsearch Service へのHTTP リクエストの署名

この章では、Elasticsearch クライアントとその他の共通ライブラリを使用して、署名された HTTPリクエストを Amazon Elasticsearch Service に送信する例を示します。これらのコードサンプルは、_index、_bulk、_snapshot などの Elasticsearch API を操作するためのものです。ドメインアクセスポリシーに IAM ユーザーまたはロールが含まれる場合、Elasticsearch API へのリクエストに署名する必要があります。

Important

Amazon ES ドメインの作成、更新、削除などのオペレーションを含む、設定 API を操作する方法の例については、「AWS SDK の使用 (p. 192)」を参照してください。

トピック• Java (p. 71)• Python (p. 73)• Ruby (p. 76)• Node (p. 77)• Go (p. 78)

Java署名付きリクエストを送信する最も簡単な方法は、「AWS リクエスト署名インターセプター」を使用することです。サンプルリポジトリには、利用を開始するためのサンプルが含まれています。または、GitHubで Amazon ES のサンプルプロジェクトをダウンロードすることもできます。

次の例では、Elasticsearch 低レベル Java REST クライアントを使用して、2 つの関連性のないアクション (スナップショットレポジトリの登録とドキュメントのインデックス作成) を実行します。region および host の値を指定する必要があります。

import org.apache.http.HttpEntity;import org.apache.http.HttpHost;import org.apache.http.HttpRequestInterceptor;import org.apache.http.entity.ContentType;import org.apache.http.nio.entity.NStringEntity;import org.elasticsearch.client.Request;import org.elasticsearch.client.Response;import org.elasticsearch.client.RestClient;import com.amazonaws.auth.AWS4Signer;import com.amazonaws.auth.AWSCredentialsProvider;import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;import com.amazonaws.http.AWSRequestSigningApacheInterceptor;import java.io.IOException;

public class AmazonElasticsearchServiceSample {

private static String serviceName = "es"; private static String region = "us-west-1"; private static String aesEndpoint = "https://domain.us-west-1.es.amazonaws.com";

API バージョン 2015-01-0171

Page 80: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドJava

private static String payload = "{ \"type\": \"s3\", \"settings\": { \"bucket\": \"your-bucket\", \"region\": \"us-west-1\", \"role_arn\": \"arn:aws:iam::123456789012:role/TheServiceRole\" } }"; private static String snapshotPath = "/_snapshot/my-snapshot-repo";

private static String sampleDocument = "{" + "\"title\":\"Walk the Line\"," + "\"director\":\"James Mangold\"," + "\"year\":\"2005\"}"; private static String indexingPath = "/my-index/_doc";

static final AWSCredentialsProvider credentialsProvider = new DefaultAWSCredentialsProviderChain();

public static void main(String[] args) throws IOException { RestClient esClient = esClient(serviceName, region);

// Register a snapshot repository HttpEntity entity = new NStringEntity(payload, ContentType.APPLICATION_JSON); Request request = new Request("PUT", snapshotPath); request.setEntity(entity); // request.addParameter(name, value); // optional parameters Response response = esClient.performRequest(request); System.out.println(response.toString()); // Index a document entity = new NStringEntity(sampleDocument, ContentType.APPLICATION_JSON); String id = "1"; request = new Request("PUT", indexingPath + "/" + id); request.setEntity(entity); // Using a String instead of an HttpEntity sets Content-Type to application/json automatically. // request.setJsonEntity(sampleDocument); response = esClient.performRequest(request); System.out.println(response.toString()); }

// Adds the interceptor to the ES REST client public static RestClient esClient(String serviceName, String region) { AWS4Signer signer = new AWS4Signer(); signer.setServiceName(serviceName); signer.setRegionName(region); HttpRequestInterceptor interceptor = new AWSRequestSigningApacheInterceptor(serviceName, signer, credentialsProvider); return RestClient.builder(HttpHost.create(aesEndpoint)).setHttpClientConfigCallback(hacb -> hacb.addInterceptorLast(interceptor)).build(); }}

ほとんど同じ機能とよりシンプルなコードを提供する高レベルの REST クライアントをご希望の場合は、次のサンプルをお試しください。ここでも AWS リクエスト署名インターセプターが使用されます。

import org.apache.http.HttpHost;import org.apache.http.HttpRequestInterceptor;import org.elasticsearch.action.index.IndexRequest;import org.elasticsearch.action.index.IndexResponse;import org.elasticsearch.client.RequestOptions;import org.elasticsearch.client.RestClient;import org.elasticsearch.client.RestHighLevelClient;import com.amazonaws.auth.AWS4Signer;import com.amazonaws.auth.AWSCredentialsProvider;import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;import com.amazonaws.http.AWSRequestSigningApacheInterceptor;

API バージョン 2015-01-0172

Page 81: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドPython

import java.io.IOException;import java.util.HashMap;import java.util.Map;

public class AmazonElasticsearchServiceSample {

private static String serviceName = "es"; private static String region = "us-west-1"; private static String aesEndpoint = ""; // e.g. https://search-mydomain.us-west-1.es.amazonaws.com private static String index = "my-index"; private static String type = "_doc"; private static String id = "1"; static final AWSCredentialsProvider credentialsProvider = new DefaultAWSCredentialsProviderChain(); public static void main(String[] args) throws IOException { RestHighLevelClient esClient = esClient(serviceName, region);

// Create the document as a hash map Map<String, Object> document = new HashMap<>(); document.put("title", "Walk the Line"); document.put("director", "James Mangold"); document.put("year", "2005");

// Form the indexing request, send it, and print the response IndexRequest request = new IndexRequest(index, type, id).source(document); IndexResponse response = esClient.index(request, RequestOptions.DEFAULT); System.out.println(response.toString()); } // Adds the interceptor to the ES REST client public static RestHighLevelClient esClient(String serviceName, String region) { AWS4Signer signer = new AWS4Signer(); signer.setServiceName(serviceName); signer.setRegionName(region); HttpRequestInterceptor interceptor = new AWSRequestSigningApacheInterceptor(serviceName, signer, credentialsProvider); return new RestHighLevelClient(RestClient.builder(HttpHost.create(aesEndpoint)).setHttpClientConfigCallback(hacb -> hacb.addInterceptorLast(interceptor))); }}

Tip

両方の証明されたサンプルでは、デフォルトの認証情報チェーンが使用されます。AWS CLI を使用して aws configure を実行し、認証情報を設定します。

Pythonpip を使用すると、Python 向けの Elasticsearch クライアントである elasticsearch-py をインストールできます。クライアントの代わりに、リクエストをすることもできます。requests-aws4auth パッケージおよび SDK for Python (Boto3) パッケージを使用すると、認証プロセスを簡素化できますが、これらパッケージが絶対に必要というわけではありません。ターミナルから、次のコマンドを実行します。

pip install boto3pip install elasticsearchpip install requests

API バージョン 2015-01-0173

Page 82: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドPython

pip install requests-aws4auth

次のサンプルコードでは、指定された Amazon ES ドメインへのセキュアな接続を確立し、_index API を使用して単一ドキュメントに対するインデックスを作成します。region および host の値を指定する必要があります。

from elasticsearch import Elasticsearch, RequestsHttpConnectionfrom requests_aws4auth import AWS4Authimport boto3

host = '' # For example, my-test-domain.us-east-1.es.amazonaws.comregion = '' # e.g. us-west-1

service = 'es'credentials = boto3.Session().get_credentials()awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)

es = Elasticsearch( hosts = [{'host': host, 'port': 443}], http_auth = awsauth, use_ssl = True, verify_certs = True, connection_class = RequestsHttpConnection)

document = { "title": "Moneyball", "director": "Bennett Miller", "year": "2011"}

es.index(index="movies", doc_type="_doc", id="5", body=document)

print(es.get(index="movies", doc_type="_doc", id="5"))

elasticsearch-py を使用しない場合は、標準の HTTP リクエストのみを作成することもできます。このサンプルでは 7 つのシャードと 2 つのレプリカの新しいインデックスを作成します。

from requests_aws4auth import AWS4Authimport boto3import requests

host = '' # The domain with https:// and trailing slash. For example, https://my-test-domain.us-east-1.es.amazonaws.com/path = 'my-index' # the Elasticsearch API endpointregion = '' # For example, us-west-1

service = 'es'credentials = boto3.Session().get_credentials()awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)

url = host + path

# The JSON body to accompany the request (if necessary)payload = { "settings" : { "number_of_shards" : 7, "number_of_replicas" : 2 }}

API バージョン 2015-01-0174

Page 83: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドPython

r = requests.put(url, auth=awsauth, json=payload) # requests.get, post, and delete have similar syntax

print(r.text)

次の例では、Beautiful Soup ライブラリを使用して、HTML ファイルのローカルディレクトリから大容量ファイルを構築します。最初の例と同じクライアントを使用し、ファイルを _bulk API に送信してインデックスを作成できます。このコードは、ウェブサイトに検索機能を追加するための基盤として使用できます。

from bs4 import BeautifulSoupfrom elasticsearch import Elasticsearch, RequestsHttpConnectionfrom requests_aws4auth import AWS4Authimport boto3import globimport json

bulk_file = ''id = 1

# This loop iterates through all HTML files in the current directory and# indexes two things: the contents of the first h1 tag and all other text.

for html_file in glob.glob('*.htm'):

with open(html_file) as f: soup = BeautifulSoup(f, 'html.parser')

title = soup.h1.string body = soup.get_text(" ", strip=True) # If get_text() is too noisy, you can do further processing on the string.

index = { 'title': title, 'body': body, 'link': html_file } # If running this script on a website, you probably need to prepend the URL and path to html_file.

# The action_and_metadata portion of the bulk file bulk_file += '{ "index" : { "_index" : "site", "_type" : "_doc", "_id" : "' + str(id) + '" } }\n'

# The optional_document portion of the bulk file bulk_file += json.dumps(index) + '\n'

id += 1

host = '' # For example, my-test-domain.us-east-1.es.amazonaws.comregion = '' # e.g. us-west-1

service = 'es'credentials = boto3.Session().get_credentials()awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service)

es = Elasticsearch( hosts = [{'host': host, 'port': 443}], http_auth = awsauth, use_ssl = True, verify_certs = True, connection_class = RequestsHttpConnection)

es.bulk(bulk_file)

print(es.search(q='some test query'))

API バージョン 2015-01-0175

Page 84: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドRuby

Rubyこの最初の例では、Elasticsearch Ruby クライアントと Faraday ミドルウェアを使用してリクエスト署名を実行します。ターミナルから、次のコマンドを実行します。

gem install elasticsearchgem install faraday_middleware-aws-sigv4

このサンプルコードでは、新しい Elasticsearch クライアントを作成して、Faraday ミドルウェアを設定してリクエストに署名し、単一ドキュメントをインデックス化します。host および region の値を指定する必要があります。

require 'elasticsearch'require 'faraday_middleware/aws_sigv4'

host = '' # e.g. https://my-domain.region.es.amazonaws.comindex = 'ruby-index'type = '_doc'id = '1'document = { year: 2007, title: '5 Centimeters per Second', info: { plot: 'Told in three interconnected segments, we follow a young man named Takaki through his life.', rating: 7.7 }}

region = '' # e.g. us-west-1service = 'es'

client = Elasticsearch::Client.new(url: host) do |f| f.request :aws_sigv4, service: service, region: region, access_key_id: ENV['AWS_ACCESS_KEY_ID'], secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'], session_token: ENV['AWS_SESSION_TOKEN'] # optionalend

puts client.index index: index, type: type, id: id, body: document

認証情報が機能しない場合、次のコマンドを使用して端末にエクスポートすることができます。

export AWS_ACCESS_KEY_ID="your-access-key"export AWS_SECRET_ACCESS_KEY="your-secret-key"export AWS_SESSION_TOKEN=""your-session-token"

次の例では、AWS SDK for Ruby と標準 Ruby ライブラリを使用して署名された HTTP リクエストを送信します。最初の例のように、単一のドキュメントをインデックス化します。ホストとリージョンの値を指定する必要があります。

require 'aws-sdk-elasticsearchservice'

host = '' # e.g. https://my-domain.region.es.amazonaws.comindex = 'ruby-index'type = '_doc'id = '2'

API バージョン 2015-01-0176

Page 85: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドNode

document = { year: 2007, title: '5 Centimeters per Second', info: { plot: 'Told in three interconnected segments, we follow a young man named Takaki through his life.', rating: 7.7 }}

service = 'es'region = '' # e.g. us-west-1

signer = Aws::Sigv4::Signer.new( service: service, region: region, access_key_id: ENV['AWS_ACCESS_KEY_ID'], secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'], session_token: ENV['AWS_SESSION_TOKEN'])

signature = signer.sign_request( http_method: 'PUT', url: host + '/' + index + '/' + type + '/' + id, body: document.to_json)

uri = URI(host + '/' + index + '/' + type + '/' + id)

Net::HTTP.start(uri.host, uri.port, :use_ssl => true) do |http| request = Net::HTTP::Put.new uri request.body = document.to_json request['Host'] = signature.headers['host'] request['X-Amz-Date'] = signature.headers['x-amz-date'] request['X-Amz-Security-Token'] = signature.headers['x-amz-security-token'] request['X-Amz-Content-Sha256']= signature.headers['x-amz-content-sha256'] request['Authorization'] = signature.headers['authorization'] request['Content-Type'] = 'application/json' response = http.request request puts response.bodyend

Nodeこの例では Node.js 内の SDK for JavaScript を使用します。ターミナルから、次のコマンドを実行します。

npm install aws-sdk

このサンプルコードは、単一のドキュメントをインデックス化します。region および domain の値を指定する必要があります。

var AWS = require('aws-sdk');

var region = ''; // e.g. us-west-1var domain = ''; // e.g. search-domain.region.es.amazonaws.comvar index = 'node-test';var type = '_doc';var id = '1';var json = {

API バージョン 2015-01-0177

Page 86: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドGo

"title": "Moneyball", "director": "Bennett Miller", "year": "2011"}

indexDocument(json);

function indexDocument(document) { var endpoint = new AWS.Endpoint(domain); var request = new AWS.HttpRequest(endpoint, region);

request.method = 'PUT'; request.path += index + '/' + type + '/' + id; request.body = JSON.stringify(document); request.headers['host'] = domain; request.headers['Content-Type'] = 'application/json'; // Content-Length is only needed for DELETE requests that include a request // body, but including it for all requests doesn't seem to hurt anything. request.headers['Content-Length'] = Buffer.byteLength(request.body);

var credentials = new AWS.EnvironmentCredentials('AWS'); var signer = new AWS.Signers.V4(request, 'es'); signer.addAuthorization(credentials, new Date());

var client = new AWS.HttpClient(); client.handleRequest(request, null, function(response) { console.log(response.statusCode + ' ' + response.statusMessage); var responseBody = ''; response.on('data', function (chunk) { responseBody += chunk; }); response.on('end', function (chunk) { console.log('Response body: ' + responseBody); }); }, function(error) { console.log('Error: ' + error); });}

認証情報が機能しない場合、次のコマンドを使用して端末にエクスポートすることができます。

export AWS_ACCESS_KEY_ID="your-access-key"export AWS_SECRET_ACCESS_KEY="your-secret-key"export AWS_SESSION_TOKEN=""your-session-token"

Goこの例では、AWS SDK for Go を使用し、1 つのドキュメントにインデックスを付けます。domain および region の値を指定する必要があります。

package main

import ( "fmt" "net/http" "strings" "time" "github.com/aws/aws-sdk-go/aws/credentials" "github.com/aws/aws-sdk-go/aws/signer/v4")

API バージョン 2015-01-0178

Page 87: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドGo

func main() {

// Basic information for the Amazon Elasticsearch Service domain domain := "" // e.g. https://my-domain.region.es.amazonaws.com index := "my-index" id := "1" endpoint := domain + "/" + index + "/" + "_doc" + "/" + id region := "" // e.g. us-east-1 service := "es"

// Sample JSON document to be included as the request body json := `{ "title": "Thor: Ragnarok", "director": "Taika Waititi", "year": "2017" }` body := strings.NewReader(json)

// Get credentials from environment variables and create the AWS Signature Version 4 signer credentials := credentials.NewEnvCredentials() signer := v4.NewSigner(credentials)

// An HTTP client for sending the request client := &http.Client{}

// Form the HTTP request req, err := http.NewRequest(http.MethodPut, endpoint, body) if err != nil { fmt.Print(err) }

// You can probably infer Content-Type programmatically, but here, we just say that it's JSON req.Header.Add("Content-Type", "application/json")

// Sign the request, send it, and print the response signer.Sign(req, body, service, region, time.Now()) resp, err := client.Do(req) if err != nil { fmt.Print(err) } fmt.Print(resp.Status + "\n")}

認証情報が機能しない場合、次のコマンドを使用して端末にエクスポートすることができます。

export AWS_ACCESS_KEY_ID="your-access-key"export AWS_SECRET_ACCESS_KEY="your-secret-key"export AWS_SESSION_TOKEN=""your-session-token"

API バージョン 2015-01-0179

Page 88: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドAmazon S3 から Amazon ES にストリーミングデータをロードする

Amazon Elasticsearch Service にストリーミングデータをロードする

さまざまなソースからストリーミングデータを Amazon Elasticsearch Service ドメインにロードできます。Amazon Kinesis Data Firehose や Amazon CloudWatch Logs などの一部のリソースには、AmazonES のサポートが組み込まれています。Amazon S3、Amazon Kinesis Data Streams、Amazon DynamoDBなどには、イベントハンドラとして AWS Lambda 関数を使用します。Lambda 関数は、データを処理してドメインにストリーミングすることで、新しいデータに応答します。

Note

Lambda では、いくつかの一般的なプログラミング言語がサポートされ、ほとんどの AWS リージョンで利用できます。詳細については、AWS Lambda Developer Guide の「Lambda 関数のビルド」と AWS General Reference の「AWS Lambda のリージョン」を参照してください。

トピック• Amazon S3 から Amazon ES にストリーミングデータをロードする (p. 80)• Amazon Kinesis Data Streams から Amazon ES にストリーミングデータをロードする (p. 85)• Amazon DynamoDB から Amazon ES にストリーミングデータをロードする (p. 87)• Amazon Kinesis Data Firehose から Amazon ES にストリーミングデータをロードする (p. 90)• Amazon CloudWatch から Amazon ES にストリーミングデータをロードする (p. 91)• Amazon ES から AWS IoT へのデータのロード (p. 91)

Amazon S3 から Amazon ES にストリーミングデータをロードする

Lambda を使用して、Amazon S3 から Amazon ES ドメインにデータを送信できます。S3 バケットに到着する新しいデータにより、Lambda へのイベント通知がトリガーされた後、インデックス作成を実行するカスタムコードが実行されます。

このデータのストリーミング方法には非常に柔軟性があります。オブジェクトメタデータのインデックスを作成したり、オブジェクトがプレーンテキストの場合は、オブジェクト本文の要素を解析してインデックス作成したりすることができます。このセクションでは、正規表現を使用してログファイルを解析し、一致をインデックス作成するシンプルな Python サンプルコードがあります。

Tip

Node.js の堅牢な他のコードについては、GitHub で amazon-elasticsearch-lambda-samples を参照してください。一部の Lambda 設計図にも役に立つ解析の例が含まれています。

前提条件続行する前に、以下のリソースが必要です。

API バージョン 2015-01-0180

Page 89: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドLambda デプロイパッケージの作成

前提条件 説明

Amazon S3 バケット 詳細については、Amazon Simple Storage Service 入門ガイド の「バケットの作成」を参照してください。バケットは、Amazon ES ドメインと同じリージョンに存在する必要があります。

Amazon ES ドメイン Lambda 関数により処理された後のデータのターゲット。詳細については、「Amazon ES ドメインの作成 (p. 10)」を参照してください。

Lambda デプロイパッケージの作成デプロイパッケージは、コードとその依存関係を含む ZIP または JAR ファイルです。このセクションには、Python サンプルコードがあります。他のプログラミング言語については、AWS Lambda DeveloperGuide の「デプロイパッケージの作成」を参照してください。

1. ディレクトリを作成します。このサンプルでは、名前 s3-to-es を使用します。2. sample.py という名前のディレクトリにファイルを作成します。

import boto3import reimport requestsfrom requests_aws4auth import AWS4Auth

region = '' # e.g. us-west-1service = 'es'credentials = boto3.Session().get_credentials()awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)

host = '' # the Amazon ES domain, including https://index = 'lambda-s3-index'type = 'lambda-type'url = host + '/' + index + '/' + type

headers = { "Content-Type": "application/json" }

s3 = boto3.client('s3')

# Regular expressions used to parse some simple log linesip_pattern = re.compile('(\d+\.\d+\.\d+\.\d+)')time_pattern = re.compile('\[(\d+\/\w\w\w\/\d\d\d\d:\d\d:\d\d:\d\d\s-\d\d\d\d)\]')message_pattern = re.compile('\"(.+)\"')

# Lambda execution starts heredef handler(event, context): for record in event['Records']:

# Get the bucket name and key for the new file bucket = record['s3']['bucket']['name'] key = record['s3']['object']['key']

# Get, read, and split the file into lines obj = s3.get_object(Bucket=bucket, Key=key) body = obj['Body'].read() lines = body.splitlines() # Match the regular expressions to each line and index the JSON for line in lines: ip = ip_pattern.search(line).group(1) timestamp = time_pattern.search(line).group(1)

API バージョン 2015-01-0181

Page 90: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドLambda 関数の作成

message = message_pattern.search(line).group(1) document = { "ip": ip, "timestamp": timestamp, "message": message } r = requests.post(url, auth=awsauth, json=document, headers=headers)

region と host の変数を編集します。3. 依存関係をインストールします。

cd s3-to-espip install requests -t .pip install requests_aws4auth -t .

すべての Lambda 実行環境に Boto3 がインストールされているため、デプロイパッケージに含める必要はありません。

Tip

macOS を使用している場合、これらのコマンドが正常に動作しない可能性があります。回避策として、setup.cfg という名前のファイルを s3-to-es ディレクトリに追加します。

[install]prefix=

4. アプリケーションコードや相互依存性をパッケージ化します。

zip -r lambda.zip *

Lambda 関数の作成デプロイパッケージを作成すると、Lambda 関数を作成できます。関数を作成するとき、名前、ランタイム (たとえば、Python 2.7)、IAM ロールを選択します。IAM ロールにより、関数のアクセス権限が定義されます。詳細な手順については、AWS Lambda Developer Guide の「シンプルな Lambda 関数の作成」を参照してください。

この例では、コンソールを使用していることを前提としています。次のスクリーンショットに示すように、Python 2.7 と、S3 読み取り権限および Amazon ES 書き込み権限を持つロールを選択します。

API バージョン 2015-01-0182

Page 91: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドLambda 関数の作成

関数を作成した後、トリガーを追加する必要があります。この例では、S3 バケットにログファイルが到着するたびにコードを実行します。

1. S3 を選択します。2. バケットを選択します。3. [Event type (イベントタイプ)] で、[PUT] を選択します。4. [Prefix (プレフィックス)] に logs/ と入力します。5. [Filter pattern (フィルタパターン)] には .log と入力します。6. [Enable trigger (トリガーの有効化)] を選択します。7. [Add] を選択します。

API バージョン 2015-01-0183

Page 92: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドLambda 関数のテスト

最後に、デプロイパッケージをアップロードすることができます。

1. [Handler (ハンドラ)] に「sample.handler」と入力します。この設定により、トリガー後に実行するファイル (sample.py) およびメソッド (handler) が Lambda に通知されます。

2. [Code entry type (コードエントリタイプ)] で、[Upload a .ZIP file (.ZIP ファイルをアップロード)] を選択し、デプロイパッケージをアップロードするプロンプトに従います。

3. [Save] を選択します。

この時点で、リソースがすべて揃いました (ログファイルのバケット、ログファイルがバケットに追加されるたびに実行される関数、解析とインデックス作成を実行するコード、検索および可視化のためのAmazon ES ドメイン)。

Lambda 関数のテスト関数を作成した後、Amazon S3 バケットにファイルをアップロードしてテストできます。次のサンプルログの行を使用して、sample.log という名前のファイルを作成します。

12.345.678.90 - [10/Oct/2000:13:55:36 -0700] "PUT /some-file.jpg"12.345.678.91 - [10/Oct/2000:14:56:14 -0700] "GET /some-file.jpg"

S3 バケットの logs フォルダにファイルをアップロードします。手順については、Amazon SimpleStorage Service 入門ガイド の「バケットにオブジェクトを追加」を参照してください。

次に、Amazon ES コンソールまたは Kibana を使用して、lambda-s3-index インデックスに 2 つのドキュメントが含まれていることを確認します。標準検索リクエストを行うこともできます。

GET https://es-domain/lambda-index/_search?pretty{ "hits" : { "total" : 2, "max_score" : 1.0, "hits" : [ { "_index" : "lambda-s3-index", "_type" : "lambda-type", "_id" : "vTYXaWIBJWV_TTkEuSDg", "_score" : 1.0, "_source" : { "ip" : "12.345.678.91", "message" : "GET /some-file.jpg", "timestamp" : "10/Oct/2000:14:56:14 -0700" } }, { "_index" : "lambda-s3-index", "_type" : "lambda-type", "_id" : "vjYmaWIBJWV_TTkEuCAB", "_score" : 1.0, "_source" : { "ip" : "12.345.678.90", "message" : "PUT /some-file.jpg", "timestamp" : "10/Oct/2000:13:55:36 -0700" } } ] }}

API バージョン 2015-01-0184

Page 93: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドAmazon Kinesis Data Streams から Amazon

ES にストリーミングデータをロードする

Amazon Kinesis Data Streams から Amazon ES にストリーミングデータをロードする

ストリーミングデータは、Kinesis Data Streams から Amazon ES にロードできます。データストリームに到達する新しいデータによって、Lambda へのイベント通知がトリガーされ、インデックス作成を実行するカスタムコードが実行されます。このセクションには、いくつかの簡単な Python サンプルコードがあります。Node.js の堅牢な他のコードについては、GitHub で amazon-elasticsearch-lambda-samples を参照してください。

前提条件続行する前に、以下のリソースが必要です。

前提条件 説明

Amazon Kinesis データストリーム

Lambda 関数のイベントソース。詳細については、「Kinesis データストリーム」を参照してください。

Amazon ES ドメイン Lambda 関数により処理された後のデータのターゲット。詳細については、「Amazon ES ドメインの作成 (p. 10)」を参照してください。

IAM ロール このロールには、以下のように Amazon ES、Kinesis、Lambda の基本的な権限が必要です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "es:ESHttpPost", "es:ESHttpPut", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:DescribeStream", "kinesis:ListStreams" ], "Resource": "*" } ]}

ロールには、次の信頼関係が必要です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" }

API バージョン 2015-01-0185

Page 94: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドLambda 関数の作成

前提条件 説明 ]}

詳しくは、IAM ユーザーガイド の「IAM ロールの作成」を参照してください。

Lambda 関数の作成「the section called “Lambda デプロイパッケージの作成” (p. 81)」の手順に従いますが、kinesis-to-es という名前のディレクトリを作成し、sample.py に次のコードを使用します。

import base64import boto3import jsonimport requestsfrom requests_aws4auth import AWS4Auth

region = '' # e.g. us-west-1service = 'es'credentials = boto3.Session().get_credentials()awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)

host = '' # the Amazon ES domain, including https://index = 'lambda-kine-index'type = 'lambda-kine-type'url = host + '/' + index + '/' + type + '/'

headers = { "Content-Type": "application/json" }

def handler(event, context): count = 0 for record in event['Records']: id = record['eventID'] timestamp = record['kinesis']['approximateArrivalTimestamp'] # Kinesis data is base64-encoded, so decode here message = base64.b64decode(record['kinesis']['data']) # Create the JSON document document = { "id": id, "timestamp": timestamp, "message": message } # Index the document r = requests.put(url + id, auth=awsauth, json=document, headers=headers) count += 1 return 'Processed ' + str(count) + ' items.'

region と host の変数を編集します。

次のコマンドを使用して、依存関係をインストールします。

cd kinesis-to-espip install requests -t .pip install requests_aws4auth -t .

次に、「the section called “Lambda 関数の作成” (p. 82)」の手順に従いますが、「the section called “前提条件” (p. 85)」の IAM ロールと、トリガーの以下の設定を指定します。

• [Kinesis stream (Kinesis ストリーム)]: Kinesis ストリーム

API バージョン 2015-01-0186

Page 95: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドLambda 関数のテスト

• [Batch size (バッチサイズ)]: 100• [Starting position (開始位置)]: 水平トリム

詳細については、Amazon Kinesis Data Streams 開発者ガイド の「Amazon Kinesis Data Streams の操作」を参照してください。

この時点で、リソースがすべて揃いました (Kinesis データストリーム、ストリームが新しいデータを受信してそのデータのインデックスを作成した後に実行する関数、検索および可視化のための Amazon ES ドメイン)。

Lambda 関数のテスト関数を作成した後、AWS CLI を使用してデータストリームに新しいレコードを追加することでテストできます。

aws kinesis put-record --stream-name es-test --data "My test data." --partition-key partitionKey1 --region us-west-1

次に、Amazon ES コンソールまたは Kibana を使用して、lambda-kine-index にドキュメントが含まれていることを確認します。以下のリクエストを使用することもできます。

GET https://es-domain/lambda-kine-index/_search{ "hits" : [ { "_index": "lambda-kine-index", "_type": "lambda-kine-type", "_id": "shardId-000000000000:49583511615762699495012960821421456686529436680496087042", "_score": 1, "_source": { "timestamp": 1523648740.051, "message": "My test data.", "id": "shardId-000000000000:49583511615762699495012960821421456686529436680496087042" } } ]}

Amazon DynamoDB から Amazon ES にストリーミングデータをロードする

AWS Lambda を使用して、Amazon DynamoDB から Amazon ES ドメインにデータを送信できます。データテーブルに到着する新しいデータにより、Lambda へのイベント通知がトリガーされた後、インデックス作成を実行するカスタムコードが実行されます。

前提条件続行する前に、以下のリソースが必要です。

API バージョン 2015-01-0187

Page 96: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド前提条件

前提条件 説明

DynamoDB テーブル このテーブルにはソースデータが含まれています。詳細については、Amazon DynamoDB 開発者ガイド の「テーブルの基本運用」を参照してください。

このテーブルは、Amazon ES ドメインと同じリージョンに存在している必要があり、ストリームが [New image (新しいイメージ)] に設定されている必要があります。詳細については、「ストリームの有効化」を参照してください。

Amazon ES ドメイン Lambda 関数により処理された後のデータのターゲット。詳細については、「Amazon ES ドメインの作成 (p. 10)」を参照してください。

IAM ロール このロールには、以下のように Amazon ES、DynamoDB、Lambda の基本的な実行権限が必要です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "es:ESHttpPost", "es:ESHttpPut", "dynamodb:DescribeStream", "dynamodb:GetRecords", "dynamodb:GetShardIterator", "dynamodb:ListStreams", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ]}

ロールには、次の信頼関係が必要です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ]}

詳しくは、IAM ユーザーガイド の「IAM ロールの作成」を参照してください。

API バージョン 2015-01-0188

Page 97: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドLambda 関数を作成する

Lambda 関数を作成する「the section called “Lambda デプロイパッケージの作成” (p. 81)」の手順に従いますが、ddb-to-esという名前のディレクトリを作成し、sample.py に次のコードを使用します。

import boto3import requestsfrom requests_aws4auth import AWS4Auth

region = '' # e.g. us-east-1service = 'es'credentials = boto3.Session().get_credentials()awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)

host = '' # the Amazon ES domain, with https://index = 'lambda-index'type = 'lambda-type'url = host + '/' + index + '/' + type + '/'

headers = { "Content-Type": "application/json" }

def handler(event, context): count = 0 for record in event['Records']: # Get the primary key for use as the Elasticsearch ID id = record['dynamodb']['Keys']['id']['S']

if record['eventName'] == 'REMOVE': r = requests.delete(url + id, auth=awsauth) else: document = record['dynamodb']['NewImage'] r = requests.put(url + id, auth=awsauth, json=document, headers=headers) count += 1 return str(count) + ' records processed.'

region と host の変数を編集します。

次のコマンドを使用して、依存関係をインストールします。

cd ddb-to-espip install requests -t .pip install requests_aws4auth -t .

次に、「the section called “Lambda 関数の作成” (p. 82)」の手順に従いますが、「the section called “前提条件” (p. 87)」の IAM ロールと、トリガーの以下の設定を指定します。

• [Table (テーブル)]: DynamoDB テーブル• [Batch size (バッチサイズ)]: 100• [Starting position (開始位置)]: 水平トリム

詳細については、Amazon DynamoDB 開発者ガイド で「DynamoDB テーブルでの新しい項目の処理」を参照してください。

この時点で、すべてのリソースが揃いました (ソースデータの DynamoDB テーブル、テーブルに対するDynamoDB ストリームの変更、ソースデータが変更されてそれらの変更のインデックスを作成した後に実行される関数、検索および可視化のための Amazon ES ドメイン)。

API バージョン 2015-01-0189

Page 98: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドLambda 関数のテスト

Lambda 関数のテスト関数を作成した後、AWS CLI を使用して DynamoDB テーブルに新しい項目を追加することでテストできます。

aws dynamodb put-item --table-name es-test --item '{"director": {"S": "Kevin Costner"},"id": {"S": "00001"},"title": {"S": "The Postman"}}' --region us-west-1

次に、Amazon ES コンソールまたは Kibana を使用して、lambda-index にドキュメントが含まれていることを確認します。以下のリクエストを使用することもできます。

GET https://es-domain/lambda-index/lambda-type/00001{ "_index": "lambda-index", "_type": "lambda-type", "_id": "00001", "_version": 1, "found": true, "_source": { "director": { "S": "Kevin Costner" }, "id": { "S": "00001" }, "title": { "S": "The Postman" } }}

Amazon Kinesis Data Firehose から Amazon ES にストリーミングデータをロードする

Kinesis Data Firehose では、配信先として Amazon ES がサポートされています。Amazon ES にストリーミングデータをロードする手順については、Amazon Kinesis Data Firehose 開発者ガイド の「KinesisData Firehose 配信ストリームの作成」および「配信先として Amazon ES を選択する」を参照してください。

Note

現在、Amazon Kinesis Data Firehose は VPC ドメインをサポートしていません。

データを Amazon ES にロードする前に、データの変換が必要になる場合があります。Lambda 関数を使用してこのタスクを実行する方法については、このガイドの「データ変換」を参照してください。

配信ストリームを設定する場合、Kinesis Data Firehose には 「ワンクリック」の IAM ロールが用意されています。このロールにより、Amazon ES へのデータ送信、Amazon S3 でのデータバックアップ、および Lambda の使用によるデータ変換に必要なリソースアクセス権が付与されます。このようなロールを手動で作成する作業は複雑になるため、用意されているロールの使用をお勧めします。

API バージョン 2015-01-0190

Page 99: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドAmazon CloudWatch から Amazon ESにストリーミングデータをロードする

Amazon CloudWatch から Amazon ES にストリーミングデータをロードする

CloudWatch Logs サブスクリプションを使用することにより、ストリーミングデータを CloudWatch Logsから Amazon ES ドメインにロードできます。Amazon CloudWatch サブスクリプションの詳細については、「サブスクリプションを使用したログデータのリアルタイム処理」を参照してください。設定情報については、Amazon CloudWatch 開発者ガイド の「CloudWatch Logs データを Amazon ElasticsearchService にストリーミング」を参照してください。

Amazon ES から AWS IoT へのデータのロードルールを使用して AWS IoT からデータを送信することができます。詳細については、AWS IoT 開発者ガイド の「Amazon ES のアクション」を参照してください。

API バージョン 2015-01-0191

Page 100: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドURI 検索

Amazon Elasticsearch Service でのデータの検索

検索エンジンから予想できるように、Elasticsearch では、データの検索用の様々なオプションが用意されています。この章では、Amazon ES を使用して検索を実行するいくつかの一般的な方法を紹介しています。Postman を使用してさまざまなリクエストをテストできます。Amazon ES への署名付き HTTP リクエストを送信するサンプルコードについては、「HTTP リクエストの署名 (p. 71)」を参照してください。

Note

この章の例のリクエストはすべて、Elasticsearch 6.x API を使用します。一部のリクエストでは古い Elasticsearch バージョンを使用できない可能性があります。

URI 検索Universal Resource Identifier (URI) 検索は、最もシンプルな検索方法です。URI 検索では、HTTP リクエストパラメータとしてクエリを指定します。

GET https://search-my-domain.us-west-1.es.amazonaws.com/_search?q=house

以下にレスポンスの例を示します。

{ "took": 25, "timed_out": false, "_shards": { "total": 10, "successful": 10, "skipped": 0, "failed": 0 }, "hits": { "total": 85, "max_score": 6.6137657, "hits": [ { "_index": "movies", "_type": "movie", "_id": "tt0077975", "_score": 6.6137657, "_source": { "directors": [ "John Landis" ], "release_date": "1978-07-27T00:00:00Z", "rating": 7.5, "genres": [ "Comedy", "Romance" ], "image_url": "http://ia.media-imdb.com/images/M/MV5BMTY2OTQxNTc1OF5BMl5BanBnXkFtZTYwNjA3NjI5._V1_SX400_.jpg", "plot": "At a 1962 College, Dean Vernon Wormer is determined to expel the entire Delta Tau Chi Fraternity, but those troublemakers have other plans for him.",

API バージョン 2015-01-0192

Page 101: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドリクエストボディ検索

"title": "Animal House", "rank": 527, "running_time_secs": 6540, "actors": [ "John Belushi", "Karen Allen", "Tom Hulce" ], "year": 1978, "id": "tt0077975" } }, ... ] }}

デフォルトでは、このクエリは家という語句をすべてのインデックスのすべてのフィールドで検索します。検索を絞り込むには URI でインデックス (movies) およびドキュメントフィールド (title) を指定します。

GET https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search?q=title:house

リクエストに追加のパラメータを含めることができますが、サポートされているパラメータはごく一部分の Elasticsearch 検索オプションのみを提供します。次のリクエストは 20 の結果 (デフォルトでは 10) を返し、年ごとに (_score ではなく) ソートされます。

GET https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search?q=title:house&size=20&sort=year:desc

リクエストボディ検索より複雑な検索を実行するには、HTTP リクエストボディと、クエリの Elasticsearch ドメイン固有言語(DSL) を使用します。クエリ DSL では、Elasticsearch 検索オプションの全範囲を指定することができます。次の match クエリでは、最終的な URI 検索 (p. 92)の例と似ています。

POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search{ "size": 20, "sort": { "year": { "order": "desc" } }, "query": { "query_string": { "default_field": "title", "query": "house" } }}

Note

_search API はリクエストボディ検索のための HTTP GET および POST を受け入れます。ただし、すべての HTTP クライアントが GET リクエストにリクエストボディを追加することをサポートしているわけではありません。POST は普遍的な選択です。

API バージョン 2015-01-0193

Page 102: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドブーストフィールド

多くの場合、いくつかのフィールドを検索する必要がある場合がありますが、すべてのフィールドを検索する必要はありません。multi_match クエリを使用します。

POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search{ "size": 20, "query": { "multi_match": { "query": "house", "fields": ["title", "plot", "actors", "directors"] } }}

ブーストフィールド特定のフィールドをブーストすることで、検索の関連性を向上させることができます。ブーストは乗数で、あるフィールドの一致を他のフィールドの一致より重く重み付けします。次の例では、title フィールドでの john の一致は、plot フィールドでの一致の 2 倍、actors または directors フィールドでの一致の 4 倍、_score に影響します。その結果、John Wick や John Carter のような映画が検索結果の最上部にあり、John Travolta 主演の映画は最下部にあります。

POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search{ "size": 20, "query": { "multi_match": { "query": "john", "fields": ["title^4", "plot^2", "actors", "directors"] } }}

検索結果のページ分割大量の検索結果を表示する必要がある場合は、from パラメータを使用してページ分割を実装できます。次のリクエストは、検索結果のゼロから始まるインデックスリストのうち、20 – 39 までの結果を返します。

POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search{ "from": 20, "size": 20, "query": { "multi_match": { "query": "house", "fields": ["title^4", "plot^2", "actors", "directors"] } }}

検索結果のハイライトhighlight オプションは、クエリが 1 つ以上のフィールドに一致した場合、hits 配列内にある追加のオブジェクトを返すよう Elasticsearch に指示します。

POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search

API バージョン 2015-01-0194

Page 103: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド検索結果のハイライト

{ "size": 20, "query": { "multi_match": { "query": "house", "fields": ["title^4", "plot^2", "actors", "directors"] } }, "highlight": { "fields": { "plot": {} } }}

クエリが plot フィールドのコンテンツに一致した場合、ヒットは次のようになります。

{ "_index": "movies", "_type": "movie", "_id": "tt0091541", "_score": 11.276199, "_source": { "directors": [ "Richard Benjamin" ], "release_date": "1986-03-26T00:00:00Z", "rating": 6, "genres": [ "Comedy", "Music" ], "image_url": "http://ia.media-imdb.com/images/M/MV5BMTIzODEzODE2OF5BMl5BanBnXkFtZTcwNjQ3ODcyMQ@@._V1_SX400_.jpg", "plot": "A young couple struggles to repair a hopelessly dilapidated house.", "title": "The Money Pit", "rank": 4095, "running_time_secs": 5460, "actors": [ "Tom Hanks", "Shelley Long", "Alexander Godunov" ], "year": 1986, "id": "tt0091541" }, "highlight": { "plot": [ "A young couple struggles to repair a hopelessly dilapidated <em>house</em>." ] }}

デフォルトでは、Elasticsearch は一致する文字列を <em> タグで囲み、一致した文字列の前後 100 文字のコンテキストを提供します。また、区切り記号、スペース、タブ、改行を識別してコンテンツをセンテンスに分割します。これらの設定はすべてカスタマイズ可能です。

POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search{ "size": 20, "query": { "multi_match": { "query": "house",

API バージョン 2015-01-0195

Page 104: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドCount API

"fields": ["title^4", "plot^2", "actors", "directors"] } }, "highlight": { "fields": { "plot": {} }, "pre_tags": "<strong>", "post_tags": "</strong>", "fragment_size": 200, "boundary_chars": ".,!? " }}

Count APIドキュメントの内容に関心がなく、一致の数だけを知りたい場合は、_search API の代わりに _countAPI を使用できます。次のリクエストでは、query_string クエリを使用してロマンチックコメディを識別します。

POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_count{ "query": { "query_string": { "default_field": "genres", "query": "romance AND comedy" } }}

以下にレスポンスの例を示します。

{ "count": 564, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }}

API バージョン 2015-01-0196

Page 105: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド

Amazon Elasticsearch Service インデックススナップショットの使用

スナップショットはクラスターの指数と状態のバックアップです。状態には、クラスター設定、ノード情報、インデックス設定、シャードの割り当てなどが含まれます。

Amazon Elasticsearch Service のスナップショットには、自動化と手動の 2 つの形式があります。

• 自動スナップショットは、クラスターの復元専用です。これらを使用して、赤のクラスター状態 (p. 164)、またはその他のデータ損失が発生した場合にドメインを復元 (p. 103)できます。Amazon ES は、追加料金なしで自動スナップショットを事前に設定された Amazon S3 バケットに保存します。

• 手動スナップショットは、クラスターの復元、またはクラスター間でのデータの移行に使用します。名前が示すように、手動スナップショットを開始する必要があります。これらのスナップショットは独自の Amazon S3 バケットに保存され、標準の S3 料金が適用されます。自己管理の Elasticsearch クラスターのスナップショットがある場合、そのスナップショットを使用して Amazon ES ドメインに移行することもできます。

すべての Amazon ES ドメインで自動スナップショットが作成されますが、頻度は異なります。

• Elasticsearch 5.3 以降を実行しているドメインの場合、Amazon ES は 1 時間ごとに自動的にスナップショットを作成し、最大 336 個のスナップショットを 14 日間保持します。

• Elasticsearch 5.1 以前を実行しているドメインでは、Amazon ES は 1 日ごとに自動でスナップショットを作成し (指定する時刻に)、14 個のスナップショットを 30 日間保持します。

クラスターのステータスが赤に変わると、 Amazon ES は自動スナップショットの作成を停止します。2週間以内にこの問題を解決しない場合、クラスターのデータは永遠に失われます。トラブルシューティングステップについては、「the section called “赤のクラスター状態” (p. 164)」を参照してください。

Tip

インデックスやスナップショットの管理には Curator などのツールが便利です。pip を使用してCurator をインストールします。

pip install elasticsearch-curator

Curator では、複雑なクラスターでの管理を簡素化するのに役立つ、高度なフィルター機能が提供されます。Amazon ES は Elasticsearch バージョン 5.1 以降で実行されているドメインでのCurator をサポートしています。Curator はコマンドラインインターフェース (CLI) または PythonAPI として使用できます。CLI を使用する場合は、コマンドラインで認証情報をエクスポートして curator.yml を次のように設定します。

client: hosts: search-my-domain.us-west-1.es.amazonaws.com port: 443 use_ssl: True aws_region: us-west-1 aws_sign_request: True ssl_no_validate: False timeout: 60

logging: loglevel: INFO

API バージョン 2015-01-0197

Page 106: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド手動スナップショット前提条件

Python API を使用する Lambda 関数の例については、「Curator を使用したデータの更新 (p. 158)」を参照してください。

トピック• 手動スナップショット前提条件 (p. 98)• 手動スナップショットレポジトリの登録 (p. 99)• 手動スナップショットの撮影 (p. 102)• スナップショットの復元 (p. 103)

手動スナップショット前提条件インデックススナップショットを手動で作成するには、IAM および Amazon S3 を使用して作業する必要があります。スナップショットの撮影を試す前に、次の前提条件を満たしていることを確認します。

前提条件 説明

S3 バケット Amazon ES ドメインの手動スナップショットを保存します。バケットの名前を書き留めておきます。これは 2 つの場所で必要になります。

• IAM ロールにアタッチされた IAM ポリシーの Resource ステートメント• スナップショットリポジトリの登録に使用する Python クライアント

詳細については、Amazon Simple Storage Service 入門ガイド の「バケットの作成」を参照してください。

Important

Glacier ライフサイクルルールをこのバケットに適用しないでください。手動スナップショットは、Glacier ストレージクラスをサポートしていません。

IAM ロール Amazon Elasticsearch Service に権限を委任します。この章の残りの部分では、このロールを TheSnapshotRole と呼びます。

次の例にあるように、ロールの信頼関係は Principal ステートメントの AmazonElasticsearch Service を指定する必要があります。

{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": "sts:AssumeRole" }]}

ロールには、次のポリシーがアタッチされている必要があります。

{ "Version": "2012-10-17", "Statement": [{ "Action": [ "s3:ListBucket"

API バージョン 2015-01-0198

Page 107: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド手動スナップショットレポジトリの登録

前提条件 説明 ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::s3-bucket-name" ] }, { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::s3-bucket-name/*" ] } ]}

詳細については、IAM ユーザーガイドの「IAM ID アクセス許可の追加」を参照してください。

アクセス許可 スナップショットリポジトリを登録するには、IAM ロールを引き受けることができる必要があります。さらに、es:ESHttpPut アクションへのアクセスも必要です。以下のポリシーにはこれらのアクセス権限が含まれています。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/TheSnapshotRole" }, { "Effect": "Allow", "Action": "es:ESHttpPut", "Resource": "arn:aws:es:region:123456789012:domain/my-domain/*" } ]}

TheSnapshotRole を引き受ける iam:PassRole 権限がない場合、以下の一般的なエラーが発生することがあります。

$ python register-repo.py{"Message":"User: arn:aws:iam::123456789012:user/MyUserAccountis not authorized to perform: iam:PassRole on resource:arn:aws:iam::123456789012:role/TheSnapshotRole"}

手動スナップショットレポジトリの登録手動インデックススナップショットを撮る前に、Amazon Elasticsearch Service を使用してスナップショットレポジトリを登録する必要があります。この 1 回限りのオペレーションでは、「TheSnapshotRole」で説明されているように、the section called “手動スナップショット前提条

API バージョン 2015-01-0199

Page 108: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドPython クライアントのサンプリング

件” (p. 98) へのアクセスが許可された認証情報を使用して AWS リクエストを署名する必要があります。

curl は AWS リクエスト署名をサポートしていないため、これを使用してこのオペレーションを実行することはできません。代わりに、サンプル Python クライアント (p. 100)、Postman、または他の方法を使用し、署名付きリクエスト (p. 71)を送信してスナップショットリポジトリを登録します。リクエストは以下のような形式です。

PUT elasticsearch-domain-endpoint/_snapshot/my-snapshot-repo{ "type": "s3", "settings": { "bucket": "s3-bucket-name", "region": "region", "role_arn": "arn:aws:iam::123456789012:role/TheSnapshotRole" }}

スナップショットのディレクトを登録する操作は 1 回限りですが、1 つのドメインから別のドメインに移行するには、古いドメインと新しいドメインで同じスナップショットレポジトリを登録する必要があります。

Important

us-east-1 リージョンに S3 バケットがある場合は、"endpoint": "s3.amazonaws.com" の代わりに "region": "us-east-1" を使用する必要があります。スナップショットリポジトリの S3 で管理されたキーによるサーバー側の暗号化を有効にするには、"settings" JSON に "server_side_encryption": true を追加します。

ドメインが VPC に存在する場合は、リクエストが正常にスナップショットレポジトリに登録するようにお使いのコンピューターが VPC に接続されていることが必要です。VPC へのアクセスはネットワーク構成によって異なりますが、VPN あるいは社内ネットワークへの接続を含む場合がよくあります。Amazon ES ドメインにアクセスできるかを確認するには、ウェブブラウザで https://your-vpc-domain.region.es.amazonaws.com を開き、デフォルトの JSON 応答を受信していることを確認します。

Python クライアントのサンプリング次のサンプルの Python コードを、register-repo.py などの Python ファイルとして保存します。クライアントでは、AWS SDK for Python (Boto3)、リクエストおよび requests-aws4auth パッケージが必要になります。クライアントには、他のスナップショットオペレーションのコメントアウトされた例が含まれています。

Tip

Java ベースのコードサンプルは、「HTTP リクエストの署名 (p. 71)」で入手できます。

コード内で、次の変数を更新する必要があります。host、region、path、および payload。

import boto3import requestsfrom requests_aws4auth import AWS4Auth

host = '' # include https:// and trailing /region = '' # e.g. us-west-1service = 'es'credentials = boto3.Session().get_credentials()awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)

# Register repository

API バージョン 2015-01-01100

Page 109: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドPython クライアントのサンプリング

path = '_snapshot/my-snapshot-repo' # the Elasticsearch API endpointurl = host + path

payload = { "type": "s3", "settings": { "bucket": "s3-bucket-name", "region": "us-west-1", "role_arn": "arn:aws:iam::123456789012:role/TheSnapshotRole" }}

headers = {"Content-Type": "application/json"}

r = requests.put(url, auth=awsauth, json=payload, headers=headers)

print(r.status_code)print(r.text)

# # Take snapshot## path = '_snapshot/my-snapshot-repo/my-snapshot'# url = host + path## r = requests.put(url, auth=awsauth)## print(r.text)## # Delete index## path = 'my-index'# url = host + path## r = requests.delete(url, auth=awsauth)## print(r.text)## # Restore snapshots (all indices)## path = '_snapshot/my-snapshot-repo/my-snapshot/_restore'# url = host + path## r = requests.post(url, auth=awsauth)## print(r.text)## # Restore snapshot (one index)## path = '_snapshot/my-snapshot-repo/my-snapshot/_restore'# url = host + path## payload = {"indices": "my-index"}## headers = {"Content-Type": "application/json"}## r = requests.post(url, auth=awsauth, json=payload, headers=headers)## print(r.text)

API バージョン 2015-01-01101

Page 110: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド手動スナップショットの撮影

手動スナップショットの撮影スナップショットは瞬時に取得されません。完了するまでには時間がかかり、クラスターの完全なポイントインタイムビューを表すわけではありません。スナップショットが進行中の間も、ドキュメントのインデックス作成や、クラスターへの他のリクエストを行うことはできますが、新しいドキュメント(および既存のドキュメントの更新) は一般的にスナップショットに含まれません。スナップショットには、Elasticsearch によってスナップショットが開始された際に存在したプライマリシャードが含まれます。スナップショットのスレッドプールのサイズによっては、わずかな時間の違いで、スナップショットにさまざまなシャードが含まれることがあります。

Elasticsearch スナップショットは増分です。つまり、最後にスナップショットが取得されてから変更されたデータのみ保存されます。増分のみ保存されるため、スナップショットの取得頻度が高い場合でも低い場合でも、ディスク使用量を最小限に抑えることができます。つまり、スナップショットを 1 時間ごとに1 週間 (合計 168 個) 取得すると、週末に 1 つのスナップショットを取得する場合よりも、使用するディスク容量は少なくなる場合があります。また、スナップショットの取得頻度が高くなるほど、完了までにかかる時間は短くなります。中には、30 分ごとにスナップショットを取得している Elasticsearch ユーザーもいます。

スナップショットを作成する際、2 つの情報を指定します。

• スナップショットリポジトリの名前• スナップショットの名前

この章の例では、わかりやすく簡潔にするために、一般的な HTTP クライアントである curl を使用します。ただし、アクセスポリシーが IAM ユーザーまたはロールを指定する場合、スナップショットリクエストに署名する必要があります。サンプル Python クライアント (p. 100)のコメントアウトされた例を使用して、curl コマンドが使用するのと同じエンドポイントに対し、署名された HTTP リクエストを行う必要があります。

スナップショットを手動で撮影するには

1. 現在進行中のスナップショットは取得できません。確認するには、以下のコマンドを実行します。

curl -XGET 'elasticsearch-domain-endpoint/_snapshot/_status'

2. 次のコマンドを実行して、手動でスナップショットを撮ります。

curl -XPUT 'elasticsearch-domain-endpoint/_snapshot/repository/snapshot-name'

Note

Amazon ES ドメインの容量が大きくなると、スナップショットの撮影に必要な時間は長くなります。長時間実行しているスナップショット操作の場合は、504 GATEWAY_TIMEOUT エラーが発生する場合があります。通常、このエラーは無視して、操作が正常に完了するのを待ってかまいません。次のコマンドを使用して、ドメインのすべてのスナップショットの状態を確認します。

curl -XGET 'elasticsearch-domain-endpoint/_snapshot/repository/_all?pretty'

API バージョン 2015-01-01102

Page 111: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドスナップショットの復元

スナップショットの復元Warning

インデックスのエイリアスを使用する場合は、インデックスを削除する前に、エイリアスへの書き込みリクエストを中止します (または別のインデックスにエイリアスを切り替えます)。書き込みリクエストを中止すると、次のシナリオの回避に有効です。

1. インデックスを削除すると、そのエイリアスも削除される。2. 削除したばかりのエイリアスに対する障害のある書き込みリクエストにより、エイリアスと同

じ名前で新しいインデックスが作成される。3. 新しいインデックスとの命名の競合により、エイリアスを使用できなくなる。

エイリアスを別のインデックスに切り替えた場合は、スナップショットから復元するときに"include_aliases": false を指定します。

スナップショットを復元するには

1. 復元するスナップショットを特定します。すべてのスナップショットレポジトリを表示するには、次のコマンドを実行します。

curl -XGET 'elasticsearch-domain-endpoint/_snapshot?pretty'

リポジトリを識別した後、次のコマンドを実行してすべてのスナップショットを表示します。

curl -XGET 'elasticsearch-domain-endpoint/_snapshot/repository/_all?pretty'

Note

ほとんどの自動スナップショットは、cs-automated リポジトリに保存されます。ドメインで暗号化された保管時のデータは cs-automated-enc リポジトリに保存されます。検索する手動スナップショットレポジトリが表示されない場合は、ドメインにその登録 (p. 99)をしたことを確認します。

2. (オプション) Amazon ES ドメイン内のすべてのオープンインデックスを削除または名前変更します。クラスター上のインデックスとスナップショット内のインデックスの間に名前の競合がない場合は、このステップを実行する必要はありません。

インデックスのスナップショットを復元する際に、復元先の Elasticsearch クラスターに同じ名前のインデックスが既にある場合は、復元できません。現在、Amazon ES は Elasticsearch _close API をサポートしていないため、代替手段として、次のうちいずれかを使用する必要があります。

• 同じ Amazon ES ドメインにあるインデックスを削除して、スナップショットを復元する。• スナップショットから復元する際、インデックスの名前を変更し (p. 168)、その後インデックスを

再生成します。• 別の Amazon ES ドメインにスナップショットを復元します (手動スナップショットでのみ可能)。

次の例では、ドメインの既存のインデックスをすべて削除する方法について説明しています。

curl -XDELETE 'elasticsearch-domain-endpoint/_all'

すべてのインデックスを復元する予定がない場合には、1 つのみを削除することもできます。API バージョン 2015-01-01

103

Page 112: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドスナップショットの復元

curl -XDELETE 'elasticsearch-domain-endpoint/index-name'

3. スナップショットを復元するには、次のコマンドを実行します。

curl -XPOST 'elasticsearch-domain-endpoint/_snapshot/repository/snapshot/_restore'

.kibana インデックスでの特別なアクセス許可により、すべてのインデックスの復元を試みるとすると失敗する場合があります (特に、自動スナップショットから復元を試みた場合)。次の例では、 1 つのインデックスである my-index を 2017-snapshot から cs-automated スナップショットレポジトリで復元します。

curl -XPOST 'elasticsearch-domain-endpoint/_snapshot/cs-automated/2017-snapshot/_restore' -d '{"indices": "my-index"}' -H 'Content-Type: application/json'

または、.kibana インデックスを除くすべてのインデックスを復元できます。

curl -XPOST 'elasticsearch-domain-endpoint/_snapshot/cs-automated/2017-snapshot/_restore' -d '{"indices": "*,-.kibana"}' -H 'Content-Type: application/json'

Note

関連するインデックスに対してすべてのプライマリシャードを使用できなかった場合、スナップショットの state が PARTIAL になっている可能性があります。この値は、1 つ以上のシャードからのデータが正しく保存されていないことを示します。部分スナップショットからの復元も可能ですが、不足しているインデックスの復元に古いスナップショットの使用が必要になる場合もあります。

API バージョン 2015-01-01104

Page 113: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド

Elasticsearch のアップグレードNote

Elasticsearch バージョンのアップグレードは、サービスソフトウェア更新とは異なります。Amazon ES ドメインのサービスソフトウェアの更新については、「Amazon ES ドメインの管理 (p. 26)」を参照してください。

Amazon ES では、バージョン 5.1 以降を実行するドメイン用に、インプレース Elasticsearch アップグレードを提供しています。Amazon Kinesis Data Firehose や Amazon CloudWatch Logs などのサービスを使用して Amazon ES にデータをストリーミングする場合は、移行前にこれらのサービスが Elasticsearchの新しいバージョンをサポートしていることを確認します。

現在、Amazon ES は次のアップグレードパスをサポートしています。

元のバージョン

移行先のバージョン

6.8 7.1

Important

Elasticsearch 7.x には多数の画期的な変更点が含まれます。インプレースアップグレードを開始する前に、6.8 ドメインのスナップショットを手動で作成 (p. 97)し、それをテスト用の 7.1 ドメインで復元して、そのテストドメインを使用してアップグレードの潜在的な問題を特定することをお勧めします。Elasticsearch 6.x のように、インデックスには、1 つのマッピングタイプのみを含めることができますが、そのタイプの名前が _doc である必要があります。その結果、特定の API では、リクエスト本文にマッピングタイプ (_bulkAPI など) が不要になりました。新しいインデックスの場合、セルフホスト型 Elasticsearch 7.x のデフォルトシャード数は 1 です。Amazon ES 7.x ドメインのデフォルトは、以前の 5 のままです。

6.x 6.x

5.6 6.x

Important

バージョン 6 x で作成されたインデックスでは、複数のマッピングタイプがサポートされなくなりました。バージョン 5.x で作成されたインデックスは、6.x クラスターへの復元時に複数のマッピングタイプをサポートします。クライアントコードによって作成されるマッピングタイプがインデックスごとに 1 種類のみであることを確認します。Elasticsearch 5.6 から 6.x でのアップグレード中のダウンタイムを最小限に抑えるため、Amazon ES は .kibana インデックスを .kibana-6 に再生成し、.kibana を削除して .kibana という名前でエイリアスを作成します。それから、新しいインデックスを新しいエイリアスにマッピングします。

5.x 5.6

アップグレードプロセスには、3 つの手順が含まれます。

API バージョン 2015-01-01105

Page 114: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドアップグレードのトラブルシューティング

1. アップグレード前の確認 – Amazon ES は、アップグレードをブロックする可能性のある問題に対して一連の確認を実行し、これらの確認が成功しない限り、次のステップに進みません。

2. スナップショット – Amazon ES は、Elasticsearch クラスターのスナップショットを作成し、スナップショットが成功しない限り次のステップに進みません。アップグレードが失敗した場合、Amazon ESはこのスナップショットを使用してクラスターを元の状態に復元します。このスナップショットの詳細については、「the section called “アップグレード後はダウングレードできない” (p. 169)」を参照してください。

3. アップグレード – Amazon ES がアップグレードを開始すると、完了まで 15 分から数時間かかります。Kibana は、アップグレードの一部または全期間で使用できなくなる場合があります。

アップグレードのトラブルシューティングインプレース Elasticsearch アップグレードには、正常なドメインが必要です。ドメインがアップグレードの対象とならなかったり、さまざまな理由でアップグレードに失敗する場合があります。次の表は、最も一般的な問題を示しています。

問題 説明

ノードあたりのシャードが多すぎます

7.x バージョンの Elasticsearch のデフォルト設定は、ノードあたり 1,000シャード以下です。現在のクラスター内のノードがこの設定を超えている場合、Amazon ES はアップグレードを許可しません。このエラーが発生した場合は、いくつかのオプションがあります。

• さらにデータノードをクラスターに追加します。• _cluster/settings/cluster.max_shards_per_node 設定を増加し

ます。• _shrink API (p. 175) を使用して、ノードのシャード数を減らします。

処理中のドメイン ドメインは、設定変更中です。オペレーション完了後、アップグレードの適格性を確認します。

赤のクラスター状態 クラスター内の 1 つ以上のインデックスは赤です。トラブルシューティングステップについては、「the section called “赤のクラスター状態” (p. 164)」を参照してください。

高いエラー率 Elasticsearch クラスターはリクエストの処理を試みましたが、大量の 5xxエラーを返しています。この問題は通常、同時読み取りまたは書き込みリクエストが多すぎることで起こります。クラスターへのトラフィックを減らすか、ドメインのスケーリングを検討してください。

スプリットブレイン スプリットブレインとは、Elasticsearch クラスターに 1 つ以上のマスターノードがあり、決して独自に再結合することのない 2 つのクラスターに分割されているという意味です。専用マスターノード (p. 144)の推奨値を使用することで、スプリットブレインを回避できます。スプレッドブレインからの復旧方法については、AWS サポート にお問い合わせください。

マスターノードが見つからない

Amazon ES は、クラスターのマスターノードを見つけることができません。ドメインでマルチ AZ (p. 29) を使用している場合、アベイラビリティーゾーンの障害によってクラスターがクォーラムを失い、新しいマスターノード (p. 144)を選択できなくなる可能性があります。問題が自動的に解決されない場合、AWS サポート にお問い合わせください。

保留中のタスクが多すぎる

マスターノードに高い負荷がかかっており、たくさんの保留中のタスクがあります。クラスターへのトラフィックを減らすか、ドメインのスケーリングを検討してください。

API バージョン 2015-01-01106

Page 115: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドアップグレードの開始

問題 説明

障害が発生したストレージボリューム

1 つ以上のノードのディスクボリュームが正常に機能していません。この問題は、高いエラー率や保留中のタスクが多すぎるなど、他の問題とともに頻繁に発生します。問題が単独で発生し、自動的に解決されない場合は、AWS サポート にお問い合わせください。

KMS キーの問題 ドメインの暗号化に使用する KMS キーがアクセス不可能であるか、または存在しません。詳細については、「the section called “保管時のデータを暗号化するドメインのモニタリング” (p. 48)」を参照してください。

スナップショットを作成中

ドメインは現在、スナップショットを作成しています。スナップショットの完了後に、アップグレードの適格性を確認します。手動スナップショットのリポジトリが一覧表示できること、それらのリポジトリ内のスナップショットが一覧表示できること、および手動スナップショットが作成できることも確認してください。Amazon ES が、スナップショットが作成中かどうか確認できない場合、アップグレードは失敗します。

スナップショットのタイムアウトまたは障害

アップグレード前のスナップショットの完了まで時間がかかりすぎたか、失敗しました。クラスター状態を確認して、再度お試しください。問題が解決しない場合は、AWS サポート までお問い合わせください。

互換性のないインデックス

1 つ以上のインデックスにターゲット Elasticsearch バージョンとの互換性がありません。Elasticsearch の古いバージョン (2.3 など) からインデックスを移行した場合にこの問題が発生することがあります。インデックスを再作成して、再度お試しください。

高いディスク使用率 クラスターのディスク使用率が 90% を超えています。データを削除またはドメインをスケーリングして、再度お試しください。

高い JVM 使用率 JVM メモリプレッシャーが 75% を超えています。クラスターへのトラフィックを削減するか、ドメインをスケーリングして、再度お試しください。

Kibana エイリアスの問題

.kibana はエイリアスとして既に設定されており、互換性のないインデックスにマッピングされています。おそらく、以前のバージョンの Kibana からのインデックスです。インデックスを再作成して、再度お試しください。

赤い Kibana ステータス Kibana ステータスが赤くなっています。アップグレードが完了したら、Kibana を使用してみてください。赤いステータスが続く場合は、手動で解決してから再度お試しください。

その他の Amazon ESサービスの問題

Amazon ES 自体の問題により、ドメインがアップグレード対象外として表示される可能性があります。前述の条件がドメインに当てはまらず、問題が 1日以上続く場合は、AWS サポート にお問い合わせください。

アップグレードの開始アップグレードプロセスは元に戻すことができません。一時停止やキャンセルもできません。アップグレード中、ドメインの設定を変更することはできません。アップグレードを開始する前に、続行するかどうかを再度確認します。これらの同じ手順を使用して、アップグレードを実際に開始することなくアップグレード前の確認を実行することができます。

クラスターに専用マスターノードがある場合、アップグレードはダウンタイムなしで完了します。ない場合、クラスターがマスターノードを選択している間、アップグレード後数秒間応答しなくなることがあります。

API バージョン 2015-01-01107

Page 116: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドスナップショットを使用したデータの移行

ドメインを新しいバージョンの Elasticsearch (コンソール) にアップグレードするには

1. ドメインの手動スナップショットを作成 (p. 97)します。このスナップショットは、以前のElasticsearch バージョンの使用に戻る場合に、新しいドメインに復元 (p. 103)できるバックアップとして機能します。

2. https://aws.amazon.com にアクセスし、[Sign In to the Console] を選択します。3. [分析] で、[Elasticsearch Service] を選択します。4. ナビゲーションペインの [My domains (マイドメイン)] で、アップグレードするドメインを選択しま

す。5. [Upgrade domain (ドメインのアップグレード)] を選択します。6. [Operation (オペレーション)] で、[Upgrade (アップグレード)]、[Submit (送信)]、[Continue (続行)] の

順に選択します。7. [Overview (概要)] タブに戻り、[Upgrade status (アップグレードのステータス)] を選択してアップグ

レードの状態をモニタリングします。

ドメインを新しいバージョンの Elasticsearch (AWS CLI および SDK) にアップグレードするには

以下のオペレーションを使用して、ドメイン用の適切な Elasticsearch バージョンを識別できます。インプレースアップグレードを開始し、アップグレード前のチェックを実行して進捗状況を表示できます。

• get-compatible-elasticsearch-versions (GetCompatibleElasticsearchVersions)• upgrade-elasticsearch-domain (UpgradeElasticsearchDomain)• get-upgrade-status (GetUpgradeStatus)• get-upgrade-history (GetUpgradeHistory)

詳細については、「AWS CLI Command Reference」および「Amazon ES 設定 API リファレンス (p. 196)」を参照してください。

スナップショットを使用したデータの移行インプレースアップグレードは、ドメインを新しい Elasticsearch バージョンにアップグレードする従来よりも簡単で迅速な、信頼性の高い方法です。スナップショットは、Elasticsearch の 5.1 より前のバージョンから移行する必要がある場合や、まったく新しいクラスターに移行する場合に適しています。

次の表は、スナップショットを使用して、Elasticsearch の異なるバージョンを使用するドメインにデータを移行する方法を示しています。スナップショットの作成と復元の詳細については、「インデックススナップショットの使用 (p. 97)」を参照してください。

元のバージョン 移行先のバージョン

移行プロセス

6.x 7.1 1. インデックスやアプリケーションを調整する必要があるかどうかを確認するには、「7.0 の重要な変更」を参照します。その他の考慮事項については、「Elasticsearch のアップグレード (p. 105)」の表を参照してください。

2. 6.x ドメインの手動スナップショットを作成します。3. 7.1 ドメインを作成します。4. 元のドメインのスナップショットを 7.1 ドメインに復元し

ます。オペレーション中に、新しい名前で .kibana インデックスを復元することが必要になる場合あります。

API バージョン 2015-01-01108

Page 117: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドスナップショットを使用したデータの移行

元のバージョン 移行先のバージョン

移行プロセス

POST _snapshot/<repository-name>/<snapshot-name>/_restore{ "indices": "*", "ignore_unavailable": true, "rename_pattern": ".kibana", "rename_replacement": ".backup-kibana"}

次に、新しいドメインで .backup-kibana のインデックスを再作成し、エイリアス .kibana を付けることができます。

5. 元のドメインが不要であれば、削除します。削除しなかった場合は、ドメインの利用料金が引き続き発生します。

6.x 6.8 1. 6.x ドメインの手動スナップショットを作成します。2. 6.8 ドメインを作成します。3. 元のドメインのスナップショットを 6.8 ドメインに復元し

ます。4. 元のドメインが不要であれば、削除します。削除しなかっ

た場合は、ドメインの利用料金が引き続き発生します。

5.x 6.x 1. インデックスやアプリケーションを調整する必要があるかどうかを確認するには、「6.0 の重要な変更」を参照します。その他の考慮事項については、「Elasticsearch のアップグレード (p. 105)」の表を参照してください。

2. 5.x ドメインの手動スナップショットを作成します。3. 6.x ドメインを作成します。4. 元のドメインのスナップショットを 6.x ドメインに復元し

ます。5. 5.x ドメインが不要であれば、削除します。削除しなかっ

た場合は、ドメインの利用料金が引き続き発生します。

5.x 5.6 1. 5.x ドメインの手動スナップショットを作成します。2. 5.6 ドメインを作成します。3. 元のドメインのスナップショットを 5.6 ドメインに復元し

ます。4. 元のドメインが不要であれば、削除します。削除しなかっ

た場合は、ドメインの利用料金が引き続き発生します。

2.3 6.x Elasticsearch 2.3 のスナップショットは 6.x とは互換性がありません。データを 2.3 から 6.x に直接移行するには、新しいドメインに手動でインデックスを再作成する必要があります。

または、この表の 2.3 から 5. x の手順に従って新しい 5.x ドメインで _reindex 操作を実行し、2.3 インデックスを 5.xインデックスに変換してから、5.x から 6.x までの手順に従うことができます。

API バージョン 2015-01-01109

Page 118: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドスナップショットを使用したデータの移行

元のバージョン 移行先のバージョン

移行プロセス

2.3 5.x 1. インデックスやアプリケーションを調整する必要があるかどうかを確認するには、「5.0 の重要な変更」を参照します。

Note

現在、Elasticsearch の移行プラグインは提供されていません。

2. 2.3 ドメインの手動スナップショットを作成します。3. 5.x ドメインを作成します。4. 2.3 ドメインのスナップショットを 5.x ドメインに復元し

ます。5. 2.3 ドメインが不要であれば、削除します。削除しなかっ

た場合は、ドメインの利用料金が引き続き発生します。

1.5 5.x Elasticsearch 1.5 のスナップショットは 5.x とは互換性がありません。データを 1.5 から 5.x に移行するには、新しいドメインに手動でインデックスを再作成する必要があります。

Important

1.5 のスナップショットには 2.3 との互換性がありますが、Amazon ES 2.3 のドメインでは _reindex 操作がサポートされていません。インデックスを再作成できないため、1.5 ドメインで作成されたインデックスでは、2.3 のスナップショットの 5.x ドメインへの復元に失敗します。

1.5 2.3 1. _plugin/migration Elasticsearch プラグインを使用して、バージョン 2.3 に直接アップグレードできるかどうかを確認します。移行前にデータの変更が必要になる場合もあります。a. ウェブブラウザで、http://domain_endpoint/

_plugin/migration/ を開きます。b. [Run checks now (確認を今すぐ実行)] を選択します。c. 結果を確認し、必要に応じて、手順に従いデータを変更

します。2. 1.5 ドメインの手動スナップショットを作成します。3. 2.3 ドメインを作成します。4. 1.5 ドメインのスナップショットを 2.3 ドメインに復元し

ます。5. 1.5 ドメインが不要であれば、削除します。削除しなかっ

た場合は、ドメインの利用料金が引き続き発生します。

API バージョン 2015-01-01110

Page 119: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドKibana

Kibana と Logstashここでは、Amazon Elasticsearch Service で Kibana と Logstash を使用するための考慮事項について説明します。

トピック• Kibana (p. 111)• Logstash プラグインを使用した、データの一括読み込み (p. 115)

KibanaKibana は Elasticsearch で稼働するように設計された、ポピュラーなオープンソースの可視化ツールです。Amazon ES は、すべての Amazon ES ドメインで Kibana のインストールを提供しています。Kibana へのリンクは、Amazon ES コンソールのドメインダッシュボードにあります。URLは、elasticsearch-domain-endpoint/_plugin/kibana/ です。このデフォルトの Kibana インストールを使用したクエリは、300 秒でタイムアウトになります。

以下のセクションでは、いくつかの一般的な Kibana ユースケースを取り上げます。

• the section called “Kibana へのアクセスのコントロール” (p. 111)• the section called “WMS マップサーバーを使用するように Kibana を設定する” (p. 114)• the section called “Kibana ローカルサーバーを Amazon ES に接続する” (p. 114)

Kibana へのアクセスのコントロールKibana では、IAM ユーザーとロールがネイティブにサポートされていませんが、Amazon ES には Kibanaへのアクセスを制御するためのいくつかのソリューションが用意されています。

ドメイン設定 アクセス制御のオプション

パブリックアクセス • 設定 Kibana の認証 (p. 117).• プロキシサーバー (p. 111)のある、またはない IP ベース

のアクセスポリシー (p. 53)を設定します。

VPC アクセス • 設定 Kibana の認証 (p. 117).• プロキシサーバーのある、またはないオープンアクセスポ

リシーを設定し、セキュリティグループを使用してアクセスを制御します。詳細については、「the section called“VPC ドメインのアクセスポリシーについて” (p. 134)」を参照してください。

プロキシを使用した Kibana から Amazon ES へのアクセスNote

このプロセスは、ドメインでパブリックアクセスが使用されており、Kibana の認証 (p. 117)を使用しない場合にのみ適用されます。「the section called “Kibana へのアクセスのコントロール” (p. 111)」を参照してください。

API バージョン 2015-01-01111

Page 120: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドKibana へのアクセスのコントロール

Kibana は JavaScript アプリケーションであるため、リクエストの送信元はユーザーの IP アドレスです。IP ベースのアクセスコントロールは、膨大な数の IP アドレスをホワイトリストに登録する必要があるため、各ユーザーに Kibana へのアクセスを提供する方法として実用的とは言えません。1 つの回避策は、Kibana と Amazon ES の間にプロキシサーバーを配置することです。これにより、IP ベースのアクセスポリシーを追加し、唯一の IP アドレス (プロキシの IP アドレス) からのリクエストを許可できます。この設定は以下の図のようになります。

1. これはお客様の Amazon ES ドメインです。IAM は、このドメインへの承認済みアクセスを提供します。追加の IP ベースのアクセスポリシーは、プロキシサーバーへのアクセスを提供します。

2. これは、Amazon EC2 インスタンスで実行されているプロキシサーバーです。3. 他のアプリケーションは、署名バージョン 4 の署名プロセスを使用して認証済みのリクエストを

Amazon ES に送信できます。4. Kibana クライアントはプロキシを介して Amazon ES ドメインに接続します。

この種の設定を有効にするには、ロールと IP アドレスを指定するリソースベースのポリシーが必要です。ポリシー例を次に示します。

{ "Version": "2012-10-17", "Statement": [{ "Resource": "arn:aws:es:us-west-2:111111111111:domain/my-domain/*", "Principal": {

API バージョン 2015-01-01112

Page 121: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドKibana へのアクセスのコントロール

"AWS": "arn:aws:iam::111111111111:role/allowedrole1" }, "Action": [ "es:ESHttpGet" ], "Effect": "Allow" }, { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:*", "Condition": { "IpAddress": { "aws:SourceIp": [ "123.456.789.123" ] } }, "Resource": "arn:aws:es:us-west-2:111111111111:domain/my-domain/*" } ]}

プロキシサーバーを実行する EC2 インスタンスを Elastic IP アドレスを使用して設定することをお勧めします。これにより、必要に応じてインスタンスを置き換え、各インスタンスに同じパブリック IP アドレスをアタッチできます。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイド の「Elastic IPアドレス」を参照してください。

プロキシサーバーおよび Kibana の認証 (p. 117) を使用している場合、redirect_mismatch エラーを回避するため、Kibana と Amazon Cognito の設定の追加が必要になることがあります。次の nginx.confの例を参照してください。

{server { listen 443; server_name $host; rewrite ^/$ https://$host/_plugin/kibana redirect;

ssl_certificate /etc/nginx/cert.crt; ssl_certificate_key /etc/nginx/cert.key;

ssl on; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; ssl_prefer_server_ciphers on;

location /_plugin/kibana { # Forward requests to Kibana proxy_pass https://$kibana_host/_plugin/kibana;

# Handle redirects to Cognito proxy_redirect https://$cognito_host https://$host;

# Update cookie domain and path proxy_cookie_domain $kibana_host $host; proxy_cookie_path / /_plugin/kibana/;

# Response buffer settings proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k;

API バージョン 2015-01-01113

Page 122: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドWMS マップサーバーを使用するように Kibana を設定する

}

location ~ \/(log|sign|fav|forgot|change|saml|oauth2) { # Forward requests to Cognito proxy_pass https://$cognito_host;

# Handle redirects to Kibana proxy_redirect https://$kibana_host https://$host;

# Update cookie domain proxy_cookie_domain $cognito_host $host; }}

WMS マップサーバーを使用するように Kibana を設定するライセンスの制限により、Elasticsearch 5.x 以上を使用する Amazon ES ドメインでの Kibana のデフォルトインストールではタイルマップの視覚化のためのマップサーバーは含まれません。Web Map Service(WMS) マップサーバーを使用できるように Kibana を設定するには、以下の手順を使用します。

WMS マップサーバーを使用できるように Kibana を設定するには:

1. Kibana を開きます。Kibana へのリンクは、https://console.aws.amazon.com/es/ のドメイン概要にあります。

2. [Management (管理)] を選択します。3. [Advanced Settings (詳細設定)] を選択します。4. [visualization:tileMap:WMSdefaults] を見つけ、[edit (編集)] ボタンを選択してデフォルト値を変更しま

す。5. enabled を true に変更し、url を有効な WMS マップサーバーの URL に変更します。6. (オプション) [visualization:tileMap:WMSdefaults] を見つけ、[edit (編集)] ボタンを選択してデフォルト

値を変更します。7. (オプション) "layers": "0" を変更し、表示するマップレイヤーのカンマ区切りリストにします。

レイヤーは、マップサービスによって異なります。多くの場合は、デフォルト値の 0 が適切です。8. [save (保存)] ボタンを選択します。

新しいデフォルト値を可視化に適用するには、Kibana の再ロードが必要になることがあります。Note

マップサービスは多くの場合、ライセンス料や制限事項を伴います。マップサーバーを指定する際には、このような点を考慮する必要があります。テストを行うには、アメリカ地質調査所 からのマップサービスが便利です。

Kibana ローカルサーバーを Amazon ES に接続する独自の Kibana インスタンスを設定するために時間をかけた場合は、Amazon ES から提供されるデフォルトの Kibana の代わりに (または追加で) 独自のインスタンスを使用することもできます。

ローカルの Kibana サーバーを Amazon ES に接続するには:

• config/kibana.yml に以下の変更を加えます。

kibana_index: ".kibana"elasticsearch_url: "http://elasticsearch_domain:80"

API バージョン 2015-01-01114

Page 123: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドLogstash プラグインを使用した、データの一括読み込み

http プレフィックスを使用して、ポート 80 を明示的に使用する必要があります。

Logstash プラグインを使用した、データの一括読み込み

Logstash は、bulk API を使用して S3 プラグインでデータを Amazon ES ドメインにアップロードする場合に便利です。また、Elasticsearch が提供する、その他の標準 Logstash 入力のプラグインをすべてサポートします。Amazon ES は、2 つの Logstash 出力プラグインをサポートしています。標準のElasticsearch プラグインおよび Logstash イベントに署名し、Amazon ES にエクスポートする logstash-output-amazon-es プラグインです。

Amazon ES とのやりとりを有効にするには、Logstash のローカルインスタンスをインストールして、Logstash 構成ファイルに次の変更を加える必要があります。

設定フィールド 入力 | 出力プラグイン 説明

bucket 入力 Amazon ES ドメインにロードするデータを格納している Amazon S3 バケットを指定します。

region 入力 Amazon S3 バケットが存在する AWS リージョンを指定します。

hosts 出力 ターゲット Amazon ES ドメイン用にサービスエンドポイントを指定します。

ssl 出力 Amazon ES への接続に SSL を使用するかどうかを指定します。

この例では、以下を行うために Logstash を設定しています。

• 出力プラグインを Amazon ES サービスエンドポイントに指定する• 入力プラグインを S3 の wikipedia-stats-log バケットに指定する• SSL を使用して Amazon ES に接続する

input{ s3 { bucket => "wikipedia-stats-log" access_key_id => "lizards" secret_access_key => "lollipops" region => "us-east-1" }}output{ elasticsearch { hosts => "search-logs-demo0-cpxczkdpi4bkb4c44g3csyln5a.us-east-1.es.example.com" ssl => true }}

Note

前述の例のサービスリクエストには、署名する必要があります。リクエストの署名については、「the section called “Amazon ES リクエストの作成と署名” (p. 53)」を参照してください。署名し

API バージョン 2015-01-01115

Page 124: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドLogstash プラグインを使用した、データの一括読み込み

て Amazon ES に Logstash イベントをエクスポートするには、logstash-output-amazon-es 出力プラグインを使用します。手順については、プラグイン「README」を参照してください。

API バージョン 2015-01-01116

Page 125: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド前提条件

Kibana の Amazon Cognito 認証Amazon Elasticsearch Service は、Amazon Cognito を使用して Kibana (p. 111) のユーザー名とパスワードの保護を提供します。この認証機能はオプションであり、Elasticsearch 5.1 以降を使用しているドメインでのみ使用できます。Amazon Cognito 認証を設定しない場合でも、IP ベースのアクセスポリシー (p. 53)とプロキシサーバー (p. 111)を使用して Kibana を保護することができます。

認証プロセスの多くは Amazon Cognito で発生しますが、この章では、Amazon Cognito リソースをAmazon ES ドメインで使用するように設定するためのガイドラインと要件を示します。すべての AmazonCognito リソースに標準の料金が適用されます。

Tip

Kibana の Amazon Cognito 認証を使用するようにドメインを初めて設定するときは、コンソールを使用することをお勧めします。Amazon Cognito リソースは高度にカスタマイズ可能であり、コンソールにより、該当する機能を識別して理解しやすくなります。

トピック• 前提条件 (p. 117)• Amazon ES ドメインの設定 (p. 119)• 認証されたロールの許可 (p. 121)• ID プロバイダの設定 (p. 122)• (オプション) きめ細かなアクセスの設定 (p. 123)• (オプション) ログインページのカスタマイズ (p. 125)• (省略可能) アドバンスドセキュリティを設定する (p. 125)• テスト (p. 125)• 制限 (p. 125)• 一般的な設定の問題 (p. 126)• Kibana の Amazon Cognito 認証の無効化 (p. 128)• Kibana に Amazon Cognito 認証を使用するドメインの削除 (p. 128)

前提条件Kibana の Amazon Cognito 認証を設定する前に、いくつかの前提条件を満たす必要があります。AmazonES コンソールは、これらのリソースの作成の効率化を支援しますが、各リソースの目的を理解すると、設定およびトラブルシューティングに役立ちます。Kibana の Amazon Cognito 認証では、次のリソースが必要になります。

• Amazon Cognito ユーザープール• Amazon Cognito ID プール• AmazonESCognitoAccess ポリシーがアタッチされた IAM ロール

Note

ユーザープールと ID プールは、同じ AWS リージョンに存在している必要があります。同じユーザープール、ID プール、および IAM ロールを使用して、Kibana の Amazon Cognito 認

API バージョン 2015-01-01117

Page 126: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドユーザープールについて

証を複数の Amazon ES ドメインに追加できます。詳細については、「the section called “制限” (p. 125)」を参照してください。

ユーザープールについてユーザープールには、次の 2 つの主要な機能があります。それらは、ユーザーのディレクトリを作成および管理する機能と、ユーザーによるサインアップとログインを許可する機能です。ユーザープールを作成する手順については、Amazon Cognito 開発者ガイド の「ユーザープールを作成する」を参照してください。

Amazon ES で使用するユーザープールを作成するときは、以下の点を考慮します。

• Amazon Cognito ユーザープールにはドメイン名が必要です。Amazon ES はこのドメイン名を使用して、Kibana にアクセスするためのログインページにユーザーをリダイレクトします。ユーザープールには、ドメイン名以外に、デフォルト以外の設定は必要ありません。

• プールの必須の標準属性—(名前、誕生日、E メールアドレス、電話番号など) を指定する必要があります。ユーザープールの作成後にこれらの属性を変更することはできないため、この時点で関連するものを選択します。

• ユーザープールを作成する際に、ユーザーが自分のアカウントを作成できるかどうか、アカウントのパスワードの最低強度、多要素認証を有効にするかどうかを選択します。外部 ID プロバイダを使用する予定がある場合、これらの設定は重要ではありません。技術的には、ID プロバイダとしてユーザープールを有効にし、さらに外部 ID プロバイダを有効にすることができますが、ほとんどのユーザーはどちらか一方を希望します。

ユーザープール ID の形式は region_ID です。AWS CLI または AWS SDK を使用して Amazon ES を設定する計画の場合は、ID をメモしておきます。

ID プールについてID プールにより、ユーザーのログイン後に、権限の制限された一時的なロールをユーザーに割り当てることができます。ID プールを作成する手順については、Amazon Cognito 開発者ガイド の「ID プール」を参照してください。Amazon ES で使用する ID プールを作成するときは、以下の点を考慮します。

• Amazon Cognito コンソールを使用する場合は、[認証されていない ID に対してアクセスを有効にする]チェックボックスをオンにして、ID プールを作成する必要があります。ID プールを作成し、AmazonES ドメインを設定 (p. 119)すると、Amazon Cognito によりこの設定は無効になります。

• ID プールに外部 ID プロバイダを追加する必要はありません。Amazon Cognito 認証を使用するようにAmazon ES を設定すると、先ほど作成したユーザープールを使用するように ID プールが設定されます。

• ID プールを作成した後、認証されていない IAM ロールと認証された IAM ロールを選択する必要があります。これらのロールにより、ログイン前およびログイン後にユーザーに与えられるアクセスポリシーが指定されます。Amazon Cognito コンソールを使用する場合は、これらのロールを自動的に作成できます。認証されたロールを作成した後に、ARN を書き留めます。この形式はarn:aws:iam::123456789012:role/Cognito_identitypoolAuth_Role です。

ID プール ID の形式は region:ID-ID-ID-ID-ID です。AWS CLI または AWS SDK を使用して AmazonES を設定する計画の場合は、ID をメモしておきます。

IAM ロールについてAmazon ES には、Amazon Cognito ユーザーおよび ID プールを設定し、認証のためにそれらを使用するためのアクセス権限が必要です。AmazonESCognitoAccess を使用できます。これは、この目的のため

API バージョン 2015-01-01118

Page 127: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドAmazon ES ドメインの設定

の AWS 管理ポリシーです。コンソールを使用して Amazon ES ドメインを作成または設定する場合、IAMロールが作成され、このポリシーがロールにアタッチされます。

AWS CLI またはいずれかの AWS SDK を使用する場合は、独自のロールを作成し、ポリシーをアタッチして、Amazon ES ドメインを設定するときに、このロールの ARN を指定する必要があります。ロールには、次の信頼関係が必要です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": "sts:AssumeRole" } ]}

手順については、IAM ユーザーガイド の「AWS のサービスにアクセス許可を委任するロールの作成」および「IAM ポリシーをアタッチおよびデタッチする」を参照してください。

Amazon ES ドメインの設定前提条件を完了したら、Kibana に Amazon Cognito を使用するように Amazon ES ドメインを設定できます。

Note

Amazon Cognito は、一部の AWS リージョンでは使用できません。サポートされるリージョンのリストについては、「AWS のリージョンとエンドポイント」を参照してください。AmazonCognito に使用する Amazon ES に対して同じリージョンを使用する必要はありません。

Amazon Cognito 認証の設定 (コンソール)コンソールによって IAM ロール (p. 118)が作成されるため、コンソールの設定は最もシンプルになっています。コンソールを使用して、Kibana で Amazon Cognito 認証を使用するドメインを作成するには、標準の Amazon ES アクセス許可に加えて、次のアクセス許可セットが必要です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole", "iam:CreateRole", "iam:AttachRolePolicy", "ec2:DescribeVpcs", "cognito-identity:ListIdentityPools", "cognito-idp:ListUserPools" ], "Resource": "*" } ]}

API バージョン 2015-01-01119

Page 128: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドAmazon Cognito 認証の設定 (AWS CLI)

IAM ロール (p. 118)がすでに存在する場合、必要なアクセス許可は少なくなります。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeVpcs", "cognito-identity:ListIdentityPools", "cognito-idp:ListUserPools" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "arn:aws:iam::123456789012:role/CognitoAccessForAmazonES" } ]}

Kibana の Amazon Cognito 認証を設定するには (コンソール)

1. https://aws.amazon.com にアクセスし、[Sign In to the Console] を選択します。2. [分析] で、[Elasticsearch Service] を選択します。3. ナビゲーションペインの [My domains (マイドメイン)] で、設定するドメインを選択します。4. [Configure cluster (クラスターの設定)] を選択します。5. Kibana 認証の場合は、[認証用に Amazon Cognito を有効化] を選択します。6. [リージョン] で、Amazon Cognito ユーザープールと ID プールが含まれているリージョンを参照しま

す。7. [Cognito ユーザープール] で、ユーザープールを選択または作成します。ガイダンスについては、

「the section called “ユーザープールについて” (p. 118)」を参照してください。8. [Cognito ID プール] で、ID プールを選択または作成します。ガイダンスについては、「the section

called “ID プールについて” (p. 118)」を参照してください。

Note

[新しいユーザープールの作成] および [新しい ID プールの作成] リンクから Amazon Cognitoコンソールに移動したら、これらのリソースを手動で作成します。このプロセスは自動的には行われません。詳細については、「the section called “前提条件” (p. 117)」を参照してください。

9. [IAM ロール] で、デフォルト値を使用するか (推奨)、新しい名前を入力します。このロールの目的の詳細については、「the section called “IAM ロールについて” (p. 118)」を参照してください。

10. [Submit] を選択します。

ドメインによる処理が終了したら、追加の設定ステップについて「the section called “認証されたロールの許可” (p. 121)」および「the section called “ID プロバイダの設定” (p. 122)」を参照してください。

Amazon Cognito 認証の設定 (AWS CLI)--cognito-options パラメータを使用して、Amazon ES ドメインを設定します。create-elasticsearch-domain コマンドと update-elasticsearch-domain-config コマンドの両方で次の構文が使用されます。

API バージョン 2015-01-01120

Page 129: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドAmazon Cognito 認証の設定 (AWS SDK)

--cognito-options Enabled=true,UserPoolId="user-pool-id",IdentityPoolId="identity-pool-id",RoleArn="arn:aws:iam::123456789012:role/CognitoAccessForAmazonES"

次の例では、CognitoAccessForAmazonES ロールを使用して、Kibana で Amazon Cognito 認証を有効にするドメインを us-east-1 リージョンで作成し、Cognito_Auth_Role へのドメインアクセスを提供します。

aws es create-elasticsearch-domain --domain-name my-domain --region us-east-1 --access-policies '{ "Version":"2012-10-17", "Statement":[{"Effect":"Allow","Principal":{"AWS": ["arn:aws:iam::123456789012:role/Cognito_Auth_Role"]},"Action":"es:ESHttp*","Resource":"arn:aws:es:us-east-1:123456789012:domain/*" }]}' --elasticsearch-version "6.0" --elasticsearch-cluster-config InstanceType=m4.xlarge.elasticsearch,InstanceCount=1 --ebs-options EBSEnabled=true,VolumeSize=10 --cognito-options Enabled=true,UserPoolId="us-east-1_123456789",IdentityPoolId="us-east-1:12345678-1234-1234-1234-123456789012",RoleArn="arn:aws:iam::123456789012:role/CognitoAccessForAmazonES"

ドメインによる処理が終了したら、追加の設定ステップについて「the section called “認証されたロールの許可” (p. 121)」および「the section called “ID プロバイダの設定” (p. 122)」を参照してください。

Amazon Cognito 認証の設定 (AWS SDK)AWS SDK では (Android および iOS SDK を除く)、Amazon ES 設定 API リファレンス (p. 196) および CognitoOptions オペレーションの CreateElasticsearchDomain パラメータも含めて、「UpdateElasticsearchDomainConfig」で定義されたすべてのオペレーションがサポートされています。AWS SDK のインストールと使用の詳細については、「AWS Software Development Kits」を参照してください。

ドメインによる処理が終了したら、追加の設定ステップについて「the section called “認証されたロールの許可” (p. 121)」および「the section called “ID プロバイダの設定” (p. 122)」を参照してください。

認証されたロールの許可デフォルトでは、「the section called “ID プールについて” (p. 118)」のガイドラインに従って設定された、認証された IAM ロールには、Kibana にアクセスするために必要な権限がありません。追加のアクセス権限を持つロールを提供する必要があります。

これらのアクセス権限はアイデンティティベース (p. 52)のポリシーに含めることができますが、認証されたユーザーによるすべての Amazon ES ドメインへのアクセスを許可する場合を除いて、単一のドメインにアタッチされたリソースベース (p. 50)のポリシーが、より一般的なアプローチとなります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:role/Cognito_identitypoolAuth_Role" ] }, "Action": [

API バージョン 2015-01-01121

Page 130: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドID プロバイダの設定

"es:ESHttp*" ], "Resource": "arn:aws:es:region:123456789012:domain/domain-name/*" } ]}

リソースベースのポリシーを Amazon ES ドメインに追加する手順については、「the section called “アクセス ポリシーの設定” (p. 18)」を参照してください。

ID プロバイダの設定Kibana で Amazon Cognito 認証を使用するようにドメインを設定すると、Amazon ES はユーザープールにアプリクライアントを追加し、認証されたプロバイダとして ID プールにユーザープールを追加します。次のスクリーンショットは、Amazon Cognito コンソールの [アプリクライアントの設定] ページを示しています。

Warning

アプリクライアントを名前変更または削除しないでください。

ユーザープールの設定方法に応じて、ユーザーアカウントを手動で作成する必要がある場合や、ユーザーが自分のアカウントを作成できる場合があります。これらの設定で問題ない場合は、それ以上アクションを実行する必要はありません。ただし、多くのユーザーが、外部 ID プロバイダの使用を希望します。

SAML 2.0 ID プロバイダを有効にするには、SAML メタデータドキュメントを提供する必要があります。Login with Amazon、Facebook、Google などのソーシャル ID プロバイダを有効にするには、これらのプロバイダからのアプリ ID とアプリシークレットが必要です。ID プロバイダの任意の組み合わせを有効にすることができます。次のスクリーンショットに示すように、ログインページでは、プロバイダを追加するときにオプションが追加されます。

API バージョン 2015-01-01122

Page 131: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド(オプション) きめ細かなアクセスの設定

ユーザープールを設定する最も簡単な方法は、Amazon Cognito コンソールを使用することです。[ID プロバイダ] ページを使用して外部 ID プロバイダを追加し、[アプリクライアントの設定] ページを使用してAmazon ES ドメインのアプリクライアントの ID プロバイダを有効または無効にします。たとえば、独自の SAML ID プロバイダを有効にし、ID プロバイダとして [Cognito ユーザープール] を無効にします。

手順については、Amazon Cognito 開発者ガイド の「ユーザープールのフェデレーションを使用する」および「ユーザープールアプリの ID プロバイダ設定を指定する」を参照してください。

(オプション) きめ細かなアクセスの設定デフォルトの ID プール設定により、同じ IAM ロール (Cognito_identitypoolAuth_Role) が、ログインするすべてのユーザーが割り当てられることにお気づきかもしれません。これは、すべてのユーザーが同じ AWS リソースにアクセスできることを意味します。より詳細なアクセス制御が必要な場合 (たとえば、組織のアナリストは 8 個すべての Amazon ES ドメインにアクセスできるようにするが、他のすべてのユーザーはその 5 個のみにしかアクセスできないようにする) は、次の 2 つのオプションがあります。

• ユーザーグループを作成し、ユーザーの認証トークンに基づいて IAM ロールを選択するように ID プロバイダを設定する。

• 1 つ以上のルールに基づいて IAM ロールを選択するように ID プロバイダを設定する。

これらのオプションを設定するには、次のスクリーンショットに示すように、Amazon Cognito コンソールの [ID プールの編集] ページを使用します。

API バージョン 2015-01-01123

Page 132: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドユーザーグループとトークン

ユーザーグループとトークンユーザーグループを作成するときは、グループのメンバー用の IAM ロールを選択します。グループ作成の詳細については、Amazon Cognito 開発者ガイド の「ユーザーグループ」を参照してください。

API バージョン 2015-01-01124

Page 133: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドルール

1 つ以上のユーザーグループを作成した後、ID プールのデフォルトロールではなく、グループのロールをユーザーに割り当てるように認証プロバイダを設定できます。[トークンからロールを選択する] オプションを選択します。次に、[デフォルトの認証されたロールを使用する] または [拒否] を選択して、ID プールでのグループの一部ではないユーザーの処理方法を指定します。

ルール基本的に、ルールは Amazon Cognito が順番に評価する一連の if ステートメントです。たとえば、ユーザーの E メールアドレスに @corporate が含まれる場合、Amazon Cognito はそのユーザーに Role_A を割り当てます。ユーザーの E メールアドレスに @subsidiary が含まれる場合、そのユーザーに Role_Bが割り当てられます。それ以外の場合は、デフォルトの認証されたロールがユーザーに割り当てられます。

詳細については、Amazon Cognito 開発者ガイド の「ルールベースのマッピングを使用してユーザーにロールを割り当てる」を参照してください。

(オプション) ログインページのカスタマイズAmazon Cognito コンソールの [UI のカスタマイズ] ページでは、カスタムロゴをアップロードし、ログインページで CSS の変更を行うことができます。手順および CSS プロパティの一覧については、AmazonCognito 開発者ガイド の「ユーザープールのアプリ UI カスタマイズ設定の指定」を参照してください。

(省略可能) アドバンスドセキュリティを設定するAmazon Cognito ユーザープールでは、多要素認証、侵害された認証情報の確認、およびアダプティブ認証などの高度なセキュリティ機能がサポートされています。詳細については、Amazon Cognito 開発者ガイド の「セキュリティの管理」を参照してください。

テスト設定に問題がなければ、ユーザーエクスペリエンスが期待どおりであることを確認します。

Kibana にアクセスするには

1. ウェブブラウザで https://elasticsearch-domain/_plugin/kibana/ にアクセスします。2. 任意の認証情報を使用してログインします。3. Kibana がロードされたら、少なくとも 1 つのインデックスパターンを設定します。Kibana は、そ

のパターンを使用して、どのインデックスを分析するかを特定します。「*」と入力し、[次のステップ]、[Create index pattern (インデックスパターンの作成)] の順に選択します。

4. データを検索または調査するには、[検出] を選択します。

このプロセスのいずれかのステップが失敗した場合は、トラブルシューティング情報について、「thesection called “一般的な設定の問題” (p. 126)」を参照してください。

制限Amazon Cognito には、そのリソースの多くでソフト制限があります。多数の Amazon ES ドメインに対して Kibana 認証を有効にする場合は、必要に応じて Amazon Cognito における制限と制限の引き上げの申請について確認してください。

API バージョン 2015-01-01125

Page 134: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド一般的な設定の問題

各 Amazon ES ドメインでは、アプリクライアントがユーザープールに追加されます。これにより、認証プロバイダが ID プールに追加されます。10 を超えるドメインに対して Kibana 認証を有効にすると、「IDプールあたりの Amazon Cognito の最大ユーザープールプロバイダ数」の制限が適用されることがあります。制限を超えた場合、Kibana の Amazon Cognito 認証を使用する設定を試みている Amazon ES ドメインが、[処理中] の設定状態でスタックする可能性があります。

一般的な設定の問題一般的な設定の問題と解決策を、以下の表に示します。

Amazon ES の設定

問題 解答

Amazon ES can't create therole (コンソール)

適切な IAM アクセス許可がありません。「the section called“Amazon Cognito 認証の設定 (コンソール)” (p. 119)」で指定されたアクセス許可を追加します。

User is notauthorized to perform:iam:PassRole on resourceCognitoAccessForAmazonES (コンソール)

IAM ロール (p. 118)用の iam:PassRole アクセス許可がありません。次のポリシーをアカウントにアタッチします:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::123456789012:role/service-role/CognitoAccessForAmazonES" } ]}

または、IAMFullAccess ポリシーをアタッチできます。

User is not authorizedto perform: cognito-identity:ListIdentityPools onresource

Amazon Cognito の読み取りアクセス許可がありません。AmazonCognitoReadOnly ポリシーをアカウントにアタッチします。

An error occurred(ValidationException)when calling theCreateElasticsearchDomainoperation: AmazonElasticsearch must be allowedto use the passed role

Amazon ES が IAM ロールの信頼関係で指定されていません。ロールで、「the section called “IAM ロールについて” (p. 118)」で指定された信頼関係が使用されていることを確認します。または、コンソールを使用して AmazonCognito 認証を設定します。コンソールによってロールが作成されます。

An error occurred(ValidationException)when calling theCreateElasticsearchDomainoperation: User is notauthorized to perform:cognito-idp:action onresource: user pool

--cognito-options で指定されたロールに、AmazonCognito にアクセスする権限がありません。このロールに、AWS が管理する AmazonESCognitoAccess ポリシーがアタッチされていることを確認します。または、コンソールを使用して Amazon Cognito 認証を設定します。コンソールによってロールが作成されます。

API バージョン 2015-01-01126

Page 135: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド一般的な設定の問題

問題 解答

An error occurred(ValidationException)when calling theCreateElasticsearchDomainoperation: User pool does notexist

Amazon ES はユーザープールを見つけることができません。ユーザープールを作成し、正しい ID が設定されていることを確認します。ID を見つけるには、Amazon Cognito コンソールまたは次の AWS CLI コマンドを使用できます。

aws cognito-idp list-user-pools --max-results 60 --region region

An error occurred(ValidationException)when calling theCreateElasticsearchDomainoperation: IdentityPool notfound

Amazon ES は ID プールを見つけることができません。ユーザープールを作成し、正しい ID が設定されていることを確認します。ID を見つけるには、Amazon Cognito コンソールまたは次の AWS CLI コマンドを使用できます。

aws cognito-identity list-identity-pools --max-results 60 --region region

An error occurred(ValidationException)when calling theCreateElasticsearchDomainoperation: Domain needs to bespecified for user pool

ユーザープールにドメイン名がありません。Amazon Cognitoコンソールまたは次の AWS CLI コマンドを使用して、ドメイン名を設定できます。

aws cognito-idp create-user-pool-domain --domain name --user-pool-id id

Kibana へのアクセス

問題 ソリューション

目的の ID プロバイダがログインページに表示されない。

「the section called “ID プロバイダの設定” (p. 122)」で指定したように、Amazon ES アプリクライアントで ID プロバイダが有効になっていることを確認します。

ログインページが、組織に関連付けられているように見えない。

「the section called “(オプション) ログインページのカスタマイズ” (p. 125)」を参照してください。

ログイン認証情報が受け入れられない。 「the section called “ID プロバイダの設定” (p. 122)」で指定したように ID プロバイダを設定したことを確認します。

ID プロバイダとしてユーザープールを使用している場合は、アカウントが存在していること、および Amazon Cognito コンソールの [User and groups (ユーザーとグループ)] ページで確認されていることを確かめます。

Kibana がまったくロードされないか、正しく動作しない。

Amazon Cognito の認証されたロールでは、ドメイン (/*) がKibana にアクセスして使用するためには、es:ESHttp* アクセス権限が必要です。「the section called “認証されたロールの許可” (p. 121)」で指定したように、アクセスポリシーを追加したことを確認します。

Invalid identity poolconfiguration. Check assignedIAM roles for this pool.

Amazon Cognito が認証されたロールを引き受けることができない。ID プール用に新しいロールを作成する代わりに、既存のロールを使用した場合は、認証されたロールの信頼関係を変更します。

{

API バージョン 2015-01-01127

Page 136: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドKibana の Amazon Cognito 認証の無効化

問題 ソリューション "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity" } ]}

または、Amazon Cognito コンソールを使って新しいロールを作成することもできます。

Token is not from a supportedprovider of this identitypool.

ユーザープールからアプリクライアントを削除すると、この一般的でないエラーが発生する可能性があります。新しいブラウザセッションで Kibana を開いてみます。

Kibana の Amazon Cognito 認証の無効化Kibana の Amazon Cognito 認証を無効にするには、次の手順を使用します。

Kibana の Amazon Cognito 認証を無効にするには (コンソール)

1. https://aws.amazon.com にアクセスし、[Sign In to the Console] を選択します。2. [分析] で、[Elasticsearch Service] を選択します。3. ナビゲーションペインの [My domains (マイドメイン)] で、設定するドメインを選択します。4. [Configure cluster (クラスターの設定)] を選択します。5. Kibana 認証の場合は、[認証用に Amazon Cognito を有効化] チェックボックスをオフにします。6. [Submit] を選択します。

Important

Amazon Cognito ユーザープールと ID プールが不要になった場合は、それらを削除します。削除しなかった場合は、利用料金が引き続き発生します。

Kibana に Amazon Cognito 認証を使用するドメインの削除

Kibana に Amazon Cognito 認証を使用するドメインが設定状態 [Processing (処理中)] で止まらないようにするには、関連する Amazon Cognito ユーザープールと ID プールを削除する前に Amazon ES ドメインを削除します。

API バージョン 2015-01-01128

Page 137: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド違い

アラート1 つ以上の Elasticsearch インデックスのデータが特定の条件を満たすときに、このアラート機能により通知されます。たとえば、アプリケーションで 1 時間に 5 つを超える HTTP 503 エラーが記録された場合にE メールが届くようにしたり、過去 20 分以内に新しいドキュメントにインデックスが付けられなかった場合に開発者に連絡したりできます。使用を開始するには、Kibana を開いて [Alerting] を選択します。

アラート機能を使用するには、Elasticsearch 6.2 以降が必要になります。この機能の詳細なドキュメントは、Open Distro for Elasticsearch のドキュメントで参照できます。

違いOpen Distro for Elasticsearch と比較すると、Amazon Elasticsearch Service のアラート機能には、Amazon SNS のサポートと固定された設定という 2 つの重要な違いがあります。

Amazon SNS のサポートAmazon ES では通知に関して Amazon SNS をサポートしています。Amazon SNS との統合により、アラート機能では標準の送信先 (Slack、カスタムウェブフック、Amazon Chime) に加えて、E メールを送信したりテキストメッセージを出力したりできるほか、SNS トピックを使用して AWS Lambda 関数を実行することもできます。Amazon SNS の詳細については、「Amazon Simple Notification Service 開発者ガイド」を参照してください。

送信先として Amazon SNS を追加するには

1. Kibana を開きます。2. [Alerting] を選択します。3. [Destinations] タブを選択し、[Add Destination] を選択します。4. 送信先の一意の名前を指定します。5. [タイプ] で、[Amazon SNS] を選択します。6. SNS トピックの ARN を入力します。7. 以下の信頼関係とアクセス許可 (最小) を持つアカウント内の IAM ロールの ARN を入力します。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": "sts:AssumeRole" }]}

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sns:Publish", "Resource": "sns-topic-arn" }]

API バージョン 2015-01-01129

Page 138: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドアラート設定

}

詳細については、IAM ユーザーガイドの「IAM ID アクセス許可の追加」を参照してください。8. [Create] を選択します。

アラート設定Open Distro for Elasticsearch では、_cluster/settings API を使用して特定のアラート設定(opendistro.alerting.monitor.max_monitors など) を変更できます。Amazon ES では、これらの設定を変更することはできません。

ただし、アラート機能を無効にすることはできます。次のリクエストを送信します。

PUT _cluster/settings{ "persistent" : { "opendistro.scheduled_jobs.enabled" : false }}

以前にモニターを作成したことがあり、日次アラートインデックスの作成を停止する場合は、すべてのアラート履歴インデックスを削除します。

DELETE .opendistro-alerting-alert-history-*

API バージョン 2015-01-01130

Page 139: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドサンプル呼び出し

Amazon Elasticsearch Service のSQL サポート

Amazon Elasticsearch Service の SQL サポートにより、JSON ベースの Elasticsearch クエリ DSL ではなく SQL を使用してデータをクエリできます。この機能は、SQL にすでに精通している場合や、SQL を使用するアプリケーションにドメインを統合する場合に役立ちます。

SQL サポートは、Elasticsearch 6.5 以降を実行しているドメインで利用できます。詳細なドキュメントは、Open Distro for Elasticsearch のドキュメントで参照できます。

サンプル呼び出しSQL を使用してデータをクエリするには、次の形式を使用して _opendistro/_sql に HTTP リクエストを送信します。

POST elasticsearch_domain/_opendistro/_sql{ "query": "SELECT * FROM my-index LIMIT 50"}

注意と相違点_opendistro/_sql への呼び出しにはリクエスト本文にインデックス名が含まれるため、バルクAPI、mget API、および msearch API と同じアクセスポリシーの考慮事項 (p. 59)が該当します。これまでどおり、API にアクセス権限を付与するときは、最小権限の原則に従う必要があります。

JDBC ドライバーJava Database Connectivity (JDBC) ドライバーにより、Amazon ES ドメインをお気に入りのビジネスインテリジェンス (BI) アプリケーションに統合できます。開始するには、GitHub リポジトリを参照してください。 ドライバーのバージョン互換性の概要を、次の表に示します。

Elasticsearch バージョン JDBC ドライバーのバージョン

7.1 1.0.0

6.8 0.9.0

6.7 0.9.0

6.5 0.9.0

API バージョン 2015-01-01131

Page 140: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド

Amazon Elasticsearch Service ドメインの VPC サポート

Virtual Private Cloud (VPC) は、AWS アカウント専用の仮想ネットワークです。VPC は、AWS クラウドの他の仮想ネットワークから論理的に切り離されています。AWS リソース (Amazon ES ドメインなど) をVPC 内で起動できます。

Amazon ES ドメインを VPC に配置すると、インターネットゲートウェイ、NAT デバイスや VPN 接続なしで、Amazon ES と他のサービス間に VPC 内で安全な通信ができるようになります。すべてのトラフィックは AWS クラウド内で安全に保持されます。論理的な隔離により、VPC 内に存在するドメインには、パブリックエンドポイントを使用するドメインに比較して、より拡張されたセキュリティレイヤーがあります。

VPC をサポートするにあたり、Amazon ES は VPC の 1 つあるいは 2 つのサブネットをエンドポイントに配置します。サブネットは、VPC の IP アドレスの範囲です。ドメインで複数のアベイラビリティーゾーン (p. 29)を有効化すると、Amazon ES は 2 つのサブネットにエンドポイントを配置します。サブネットは、同じリージョン内の異なるアベイラビリティーゾーンに存在している必要があります。アベイラビリティーゾーンを 1 つしか使用しない場合、Amazon ES は 1 つのサブネットのみにエンドポイントを配置します。

次の図は、1 つのアベイラビリティーゾーンの VPC アーキテクチャを示しています。

次の図は、2 つのアベイラビリティーゾーンの VPC アーキテクチャを示しています。

API バージョン 2015-01-01132

Page 141: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド

また、Amazon ES は各データノード用に VPC 内に Elastic network interface (ENI) を配置します。Amazon ES は、各 ENI にサブネットの IPv4 アドレス範囲内のプライベート IP アドレスを割り当てます。また、このサービスは、IP アドレスにパブリック DNS ホスト名 (これは、ドメインエンドポイントです) も割り当てます。データノード用に適確な IP アドレスでエンドポイント (DNS ホスト名) を解決するために、パブリック DNS サービスを使用する必要があります。

• VPC が enableDnsSupport オプションを true (デフォルト値) に設定して Amazon が提供する DNSサーバーを使用する場合、Amazon ES エンドポイントの解決は成功します。

• VPC がプライベート DNS サーバーを使用し、このサーバーが DNS ホスト名を解決するためにパブリック権限の DNS サーバーに到達できる場合にも、Amazon ES エンドポイントの解決は成功します。

IP アドレスは変更する可能性があるため、ドメインのエンドポイントを定期的に解決して常に正しいデータノードにアクセスできるようにすることが重要です。DNS 解決間隔を 1 分間に設定することが推奨されます。クライアントを使用している場合には、クライアント側の DNS キャッシュもクリアしていることも確認する必要があります。

Note

Amazon ES は VPC での IPv6 アドレスをサポートしていません。IPv6 が有効化されている VPCを使用することはできますが、ドメインは IPv4 アドレスを使用します。

トピック• 制約事項 (p. 134)• VPC ドメインのアクセスポリシーについて (p. 134)• VPC ドメインのテスト (p. 135)

API バージョン 2015-01-01133

Page 142: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド制約事項

• 開始する前に: VPC アクセスの前提条件 (p. 136)• VPC を作成する (p. 137)• VPC サブネットで IP アドレスをリザーブする (p. 138)• VPC アクセス用のサービスにリンクされたロール (p. 139)• パブリックアクセスから VPC アクセスに移行する (p. 139)• Amazon VPC ドキュメント (p. 139)

制約事項現時点では、VPC 内の Amazon ES ドメイン運用には次の制限があります。

• VPC 内でドメインを起動すること、あるいはパブリックエンドポイントを使用することができますが、両方を実行することはできません。ドメイン作成時にどちらかを選択する必要があります。

• VPC 内に新規ドメインを起動する場合、後でパブリックエンドポイントの使用に切り替えることはできません。その逆も同じ結果となります。パブリックエンドポイントでドメインを作成する場合、後でVPC に配置することはできません。代わりに、新規のドメインを作成して、データを移行する必要があります。

• 専有テナントを使用している VPC 内でドメインを起動することはできません。テナントを [Default (デフォルト)] に設定した VPC を使用する必要があります。

• VPC 内にドメインを配置した後で、別の VPC にそのドメインを移動することはできません。ただし、サブネットおよびセキュリティグループの設定を変更することはできます。

• VPC ドメインを作成するときは、その CIDR ブロックに 10.x.x.x または 172.x.x.x を使用するサブネットを選択する必要があります。

• パブリックドメインと比較すると、Amazon ES コンソールに表示される VPC ドメインの情報は少なくなります。具体的には、[Cluster health (クラスターの状態)] タブにはシャード情報が含まれておらず、[Indices (インデックス)] タブは存在しません。

• 現在、Amazon ES は VPC アクセドメインの Amazon Kinesis Data Firehose との統合をサポートしていません。Amazon ES でこのサービスを使用するには、パブリックアクセスドメインを使用する必要があります。

• VPC 内に存在するドメイン用に Kibana のデフォルトインストールにアクセスするには、VPC へのアクセスを保持している必要があります。このプロセスはネットワーク構成によって異なりますが、VPN への接続、ネットワークの管理あるいはプロキシサーバーの使用が必要となる場合がほとんどです。詳細については、the section called “VPC ドメインのアクセスポリシーについて” (p. 134)、Amazon VPCユーザーガイド、および the section called “Kibana へのアクセスのコントロール” (p. 111) を参照してください。

VPC ドメインのアクセスポリシーについてVPC 内に Amazon ES ドメインを配置すると、内在する強力なセキュリティ層を提供します。パブリックアクセスのドメインを作成する場合、エンドポイントは次の形式になります。

https://search-domain-name-identifier.region.es.amazonaws.com

「パブリック」ラベルが示すように、このエンドポイントはすべてのインターネット接続デバイスからアクセスできますが、このアクセスを制御 (p. 50)でき、制御する必要があります。ウェブブラウザでエンドポイントにアクセスするときに Not Authorized メッセージを受信することがありますが、リクエストはドメインに届きます。

VPC アクセスを使用してドメインを作成する場合、このエンドポイントはパブリックエンドポイントに類似しています。

API バージョン 2015-01-01134

Page 143: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドVPC ドメインのテスト

https://vpc-domain-name-identifier.region.es.amazonaws.com

ウェブブラウザでエンドポイントにアクセスしようとすると、リクエストがタイムアウトする場合があります。基本的な GET リクエストを実行するときでも、コンピューターが VPC に接続していることが必要です。多くの場合、この接続では、VPN、マネージド型のネットワーク、またはプロキシサーバーを使用します。使用できるさまざまな形式の詳細については、Amazon VPC ユーザーガイド の「シナリオと例」を参照してください。開発に焦点を置いた例については、「the section called “VPC ドメインのテスト” (p. 135)」を参照してください。

この接続要件に加えて、VPC はセキュリティグループを使用したドメインへのアクセス管理を可能にします。多くのユースケースでは、このセキュリティ機能の組み合わせで十分となり、ドメインにオープンなアクセスポリシーを安心して適用できます。

オープンなアクセスポリシーで操作することは、インターネット上の誰でも Amazon ES ドメインにアクセスできることを意味するものではありません。むしろこれは、リクエストが Amazon ES ドメインに到達し、関連付けられたセキュリティーグループがそれを許可することは、ドメインが追加のセキュリティチェックなしでこのリクエストを受け入れることを意味します。

追加のセキュリティ層としては、IAM ユーザーまたはロールを指定するアクセスポリシーの使用が推奨されます。このポリシーを適用してドメインがリクエストを受信するには、セキュリティグループがそのリクエストを許可し、そしてこのリクエストが有効な認証情報で署名されていることが必要です。

Note

セキュリティグループには IP ベースのアクセス権限ポリシーですでに強化されているため、VPC内に存在する Amazon ES ドメインに IP ベースのアクセス権限ポリシーを適用することはできません。パブリックエンドポイントを使用する場合、IP ベースのポリシーを引き続き利用できます。

VPC ドメインのテストVPC のセキュリティを強化することで、ドメインへの接続や、基本的なテスト実行を行い、実際の状況を確認することができます。Amazon ES VPC ドメインがすでにあり、VPC サーバーを作成しない場合は、次のプロセスをお試しください。

1. ドメインのアクセスポリシーについては、[Do not require signing request with IAM credential (IAM 認証情報を使用した署名リクエストを要求しない)] を選択します。この設定は、テスト完了後にいつでも更新できます。

2. Amazon ES ドメインと同じ VPC、サブネット、およびセキュリティグループに Amazon LinuxAmazon EC2 インスタンスを作成します。

このインスタンスはテストを目的としており、必要な作業はわずかであるため、安価なインスタンスタイプ (例: t2.micro) を選択します。インスタンスにパブリック IP アドレスを割り当てたら、新しいキーペアを作成するか、既存のキーペアを選択します。新しいキーを作成する場合は、~/.ssh ディレクトリにダウンロードします。

インスタンス作成の詳細については、「Amazon EC2 Linux インスタンスの開始方法」を参照してください。

3. インターネットゲートウェイを VPC に追加します。4. VPC のルートテーブルで、新しいルートを追加します。[Destination (送信先)] で、コンピュータのパブ

リック IP アドレスを含む CIDR ブロックを指定します。[Target (ターゲット)] で、先ほど作成したインターネットゲートウェイを指定します。

たとえば、コンピュータが 1 つのみの場合は 123.123.123.123/32、複数の場合には123.123.123.0/24 を指定します。

5. セキュリティグループで、2 つのインバウンドルールを指定します。

API バージョン 2015-01-01135

Page 144: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド前提条件

タイプ プロトコル ポート範囲 送信元

SSH (22) TCP (6) 22 your-cidr-block

HTTPS (443) TCP (6) 443 your-security-group-id

最初のルールでは、EC2 インスタンスに SSH 接続できます。2 番目のルールでは、EC2 インスタンスから Amazon ES ドメインに HTTPS 経由で通信できるようになります。

6. ターミナルから、次のコマンドを実行します。

ssh -i ~/.ssh/your-key.pem ec2-user@your-ec2-instance-public-ip -N -L 9200:vpc-your-amazon-es-domain.region.es.amazonaws.com:443

このコマンドでは、https://localhost:9200 へのリクエストを EC2 インスタンスから Amazon ES ドメインに転送する SSH トンネルが作成されます。デフォルトでは、Elasticsearch はポート 9200 のトラフィックをリッスンします。このポートを指定すると、Elasticsearch のローカルインストールがシミュレートされますが、任意のポートを使用します。

このコマンドではフィードバックは返らず、無限に実行されます。停止するには、Ctrl + C を押します。

7. ウェブブラウザで https://localhost:9200/_plugin/kibana/ に移動します。セキュリティ例外の承認が必要な場合があります。

curl、Postman、またはお気に入りのプログラミング言語を使用して、https://localhost:9200 にリクエストを送信することもできます。

Tip

証明書の不一致が原因で curl のエラーが発生した場合は、--insecure フラグを試してください。

このアプローチの代わりに、AWS Cloud9 がサポートするリージョンにドメインがある場合は、同じ VPCでドメインとして EC2 環境を作成し、環境のセキュリティグループを Amazon ES ドメイン設定に追加できます。また、ステップ 5 の HTTPS ルールをセキュリティグループに追加し、AWS Cloud9 でウェブベースの Bash を使用して curl コマンドを発行できます。

開始する前に: VPC アクセスの前提条件VPC と新規の Amazon ES ドメイン間の接続を有効にするためには、次を実行する必要があります。

• VPC を作成する

VPC を作成するには、Amazon VPC コンソール、AWS CLI、またはいずれかの AWS SDK を使用できます。詳細については、「VPC を作成する (p. 137)」を参照してください。VPC が既にある場合、このステップは省略できます。

• IP アドレスのリザーブ

Amazon ES は、ネットワークインターフェースを VPC のサブネットに配置することで、VPC をドメインに接続できるようにします。各ネットワークインターフェースは 1 つの IP アドレスに関連付けられます。ネットワークインターフェースのためにサブネットで十分な数の IP アドレスをリザーブする必要があります。詳細については、「VPC サブネットで IP アドレスをリザーブする (p. 138)」を参照してください。

API バージョン 2015-01-01136

Page 145: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドVPC を作成する

VPC を作成するVPC を作成するには、Amazon VPC コンソール、AWS CLI、またはいずれかの AWS SDK を使用できます。VPC に 1 個のサブネット、あるいは複数のアベイラビリティーゾーン (p. 29)が有効な場合には 2 個のサブネットがある必要があります。この 2 個のサブネットは、同じリージョン内の異なるアベイラビリティーゾーンに存在している必要があります。

以下の手順は、Amazon VPC コンソールを使用してバブリックサブネットおよびサブネットのリザーブ IPアドレスで VPC を作成し、Amazon ES ドメインへのアクセスをコントロールするためのセキュリティグループを作成する方法を示しています。他の VPC 設定の詳細については、Amazon VPC ユーザーガイドの「シナリオと例」を参照してください。

VPC を作成するには (コンソール)

1. AWS マネジメントコンソールにサインインし、Amazon VPC コンソール(https://console.aws.amazon.com/vpc/)を開きます。

2. ナビゲーションペインで、[VPC Dashboard] を選択します。3. [Start VPC Wizard] を選択します。4. [Select a VPC Configuration (VPC 設定の選択)] ページで [VPC with a Single Public Subnet (1 つのパ

ブリックサブネットを持つ VPC)] を選択します。5. [VPC with a Single Public Subnet (1 つのパブリックサブネットを持つ VPC)] ページで、デフォルトの

オプションを変更せずに、[Create VPC (VPC の作成)] を選択します。6. 表示された確認メッセージで、[Close] を選択します。7. Amazon ES ドメインで複数のアベイラビリティーゾーン (p. 29)を有効にする場合は、同じリージョ

ンの異なるアベイラビリティーゾーンに 2 つ目のサブネットを作成する必要があります。それ以外の場合は、ステップ 8 に進みます。

a. ナビゲーションペインで、[Subnets (サブネット)] を選択します。b. [Create Subnet] を選択します。c. [Create Subnet (サブネットの作成)] ダイアログボックスでは、後にサブネットを識別するのに役

立つ名前タグをオプションで作成します。d. [VPC] で、今作成した VPC を選択します。e. [Availability Zone (アベイラビリティゾーン)] で、最初のサブネットとは別のアベイラビリティー

ゾーンを選択します。両方のサブネットのアベイラビリティーゾーンは同じリージョンに存在している必要があります。

f. [IPv4 CIDR block (IPv4 CIDR ブロック)] では、メンテナンス作業中に使用するために十分な IPアドレスを Amazon ES に提供する大きさの CIDR ブロックを設定します。詳細については、「VPC サブネットで IP アドレスをリザーブする (p. 138)」を参照してください。

Note

VPC アクセスを使用する Amazon ES ドメインは IPv6 アドレスをサポートしていません。IPv6 が有効化されている VPC を使用することはできますが、ENI には IPv4 アドレスがあります。

g. [Yes, Create] を選択します。8. ナビゲーションペインで、[Subnets (サブネット)] を選択します。9. サブネットのリストで、サブネット (ステップ 7 で 2 つ目のサブネットを作成した場合には複数のサ

ブネット) を検索します。[Available IPv4 (利用可能な IPv4)] で、十分な IPv4 アドレスの数があることを確認します。

10. サブネット ID とアベイラビリティーゾーンをメモしておきます。この情報は、後で Amazon ES ドメインを起動し、VPC に Amazon EC2 インスタンスを追加するときに必要です。

11. Amazon VPC セキュリティグループを作成します。このセキュリティグループを使用して AmazonES ドメインへのアクセスを制御します。

API バージョン 2015-01-01137

Page 146: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドVPC サブネットで IP アドレスをリザーブする

a. ナビゲーションペインで、[Security Groups] を選択します。b. [Create Security Group] を選択します。c. [Create Security Group (セキュリティグループの作成)] ダイアログボックスで、ネームタグ、グ

ループ名と説明を入力します。[VPC] で使用する VPC の ID を選択します。d. [Yes, Create] を選択します。

12. セキュリティグループのネットワーク Ingress ルールを定義します。このルールは Amazon ES ドメインに接続することを許可します。

a. ナビゲーションペインで [Security Groups (セキュリティグループ)] を選択し、今作成したセキュリティグループを選びます。

b. ページ下部で、[インバウンドルール] タブを選択します。c. [編集] を選択して HTTPS (443) を選択します。d. [保存] を選択します。

これで、Amazon VPC で Amazon ES ドメインを起動 (p. 10)できる状態になります。

VPC サブネットで IP アドレスをリザーブするAmazon ES は、ネットワークインターフェイスを VPC の 1 個のサブネット (複数のアベイラビリティーゾーン (p. 29)を有効にした場合には VPC の 2 個のサブネット) に配置することでドメインを VPC に接続します。各ネットワークインターフェースは 1 つの IP アドレスに関連付けられます。Amazon ES ドメインを作成する前に、ネットワークインターフェースを対応するために十分な数の IP アドレスを VPC で有効にしておく必要があります。

Amazon ES に必要な IP アドレスの数は次に依存します。

• ドメインのデータノードの数。(マスターノードはこの数に含まれません。)• アベイラビリティーゾーンの数。2 つまたは 3 つのアベイラビリティーゾーンを有効にした場合、1 つ

のアベイラビリティーゾーンに必要なサブネットあたりの IP アドレスの数は半分または 1/3 のみになります。

基本的な計算式は次のとおりです。各サブネットの IP アドレスリザーブ数はノード数の 3 倍であり、アベイラビリティーゾーンの数で割った数です。

• ドメインに 10 個のデータノードがあり、アベイラビリティーゾーンが 2 つある場合、IP 数は、10 ÷ 2x 3 = 15 となります。

• ドメインに 10 個のデータノードがあり、アベイラビリティーゾーンが 1 つある場合、IP 数は、10 x 3= 30 となります。

ドメインを作成すると、Amazon ES は IP アドレスをリザーブします。https://console.aws.amazon.com/ec2/ の Amazon EC2 コンソール の [Network Interfaces (ネットワークインターフェイス)] セクションからネットワークインターフェイスと関連する IP アドレスを表示できます。[Description (説明)] 列は、ネットワークインターフェイスのどの Amazon ES ドメインが関連付けられているかを示しています。

Tip

Amazon ES リザーブド IP アドレス用の専用サブネットを作成することが推奨されます。専用サブネットを使用することで、他のアプリケーションやサービスとの重複を回避でき、将来的にクラスターをスケールする必要が生じた場合に追加の IP アドレスをリザーブできることを確保します。詳細については、「VPC でサブネットを作成する」を参照してください。

API バージョン 2015-01-01138

Page 147: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドVPC アクセス用のサービスにリンクされたロール

VPC アクセス用のサービスにリンクされたロールサービスにリンクされたロールは、サービスに権限を委任する一意のタイプの IAM ロールであり、ユーザーに代わってリソースを作成して管理できます。Amazon ES には、VPC にアクセスしてドメインのエンドポイントを作成し、VPC のサブネットにネットワークインターフェイスを配置するために、サービスにリンクされたロールが必要です。

Amazon ES コンソールを使用して VPC 内にドメインを作成する場合、Amazon ES は自動的にこのロールを作成します。この自動作成を成功させるには、iam:CreateServiceLinkedRole アクションへのアクセス許可が必要です。詳細については、IAM ユーザーガイド の「サービスにリンクされたロールのアクセス権限」を参照してください。

Amazon ES がロールを作成すると、IAM コンソールを使用してこのロールを表示することができます(AWSServiceRoleForAmazonElasticsearchService)。

Note

パブリックエンドポイントを使用するドメインを作成した場合、Amazon ES はサービスにリンクされたロールを必要とせず、このロールを作成しません。

このロールのアクセス権限およびその削除方法の詳細については、「サービスにリンクされたロールの使用 (p. 263)」を参照してください。

パブリックアクセスから VPC アクセスに移行するドメインを作成するときは、このドメインがパブリックエンドポイントにあるか、あるいは VPC 内に存在するかを指定します。一度作成すると、選択を別のものに切り替えることはできません。代わりに、新規のドメインを作成して、手動で再度インデックスするか、またはデータを移行する必要があります。スナップショットは、データの移行に便利な手段です。スナップショットの作成と復元の詳細については、「インデックススナップショットの使用 (p. 97)」を参照してください。

Amazon VPC ドキュメントAmazon VPC に関するドキュメントには、Amazon VPC の作成および使用方法について説明する独自のドキュメントがあります。以下の表に Amazon VPC ガイドへのリンクを示します。

説明 ドキュメント

Amazon VPC の使用を開始するには Amazon VPC 入門ガイド

AWS マネジメントコンソール で Amazon VPC を使用する方法

Amazon VPC ユーザーガイド

すべての Amazon VPC コマンドの詳細説明 Amazon EC2 コマンドラインリファレンス(Amazon VPC コマンドは、Amazon EC2 リファレンスの一部です。)

Amazon VPC API アクション、データタイプ、およびエラーの詳細説明

Amazon EC2 API Reference (Amazon VPC API アクションは、Amazon EC2 リファレンスの一部です。)

オプションとして IPsec VPN 接続のゲートウェイを設定するネットワーク管理者向け情報

AWS Site-to-Site VPN ネットワーク管理者ガイド

API バージョン 2015-01-01139

Page 148: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドAmazon VPC ドキュメント

Amazon Virtual Private Cloud の詳細については、「Amazon Virtual Private Cloud」を参照してください。

API バージョン 2015-01-01140

Page 149: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドAmazon ES ドメインのサイジング

Amazon Elasticsearch Service のベストプラクティス

この章では、Amazon Elasticsearch Service ドメインを運用する際のベストプラクティスを取り上げるとともに、多くのユースケースに適用される一般的なガイドラインを提供します。本番稼働用ドメインは、以下の規格に準拠している必要があります。

• 制限の厳しいリソースベースのアクセスポリシー (p. 50)をドメインに適用し、設定 API およびElasticsearch API へのアクセスを許可するときは最小権限の原則に従います。

• インデックス (p. 67)ごとに、少なくとも 1 つのレプリカ (Elasticsearch のデフォルト) を設定します。• 3 つの専用マスターノード (p. 144)を使用します。• 3 つのアベイラビリティーゾーン間にドメインをデプロイします。この設定では、Amazon ES が対応す

るプライマリシャードとは異なるアベイラビリティーゾーンにレプリカシャードを分散できます。3 つのアベイラビリティーゾーンがあるリージョンのリストとその他の考慮事項については、「the sectioncalled “マルチ AZ ドメインの設定” (p. 29)」を参照してください。

• 最新の Elasticsearch バージョンが Amazon Elasticsearch Service で利用可能になったらアップグレード (p. 105)します。

• 最新のサービスソフトウェアが利用可能になったら更新 (p. 28)します。• ワークロードのドメインを適切にサイズ設定します。ストレージボリューム、シャードサイズ、データ

ノードの推奨事項については、「the section called “Amazon ES ドメインのサイジング” (p. 141)」と「ペタバイト規模 (p. 156)」を参照してください。専用マスターノードの推奨事項については、「thesection called “専用マスターノード” (p. 144)」を参照してください。

• サービスで使用可能な最新世代のインスタンスを使用します。たとえば、I2 インスタンスではなく I3 インスタンスを使用します。

• 本番稼働用ドメインにはバースト可能なインスタンスを使用しないでください。たとえば、T2 インスタンスをデータノードまたは専用マスターノードとして使用しないでください。

• ネットワーク設定に適している場合、VPC 内でドメインを作成 (p. 132)します。• ドメインに機密データが保存されている場合、保管時のデータの暗号化 (p. 47)とノード間の暗号

化 (p. 49)を有効にします。

詳細については、この章の残りのトピックを参照してください。

トピック• Amazon ES ドメインのサイジング (p. 141)• 専用マスターノード (p. 144)• 推奨 CloudWatch アラーム (p. 147)

Amazon ES ドメインのサイジングAmazon ES ドメインを確実にサイジングする方法として絶対的なものはありませんが、ストレージ要件やサービス、Elasticsearch の内容を理解することで、ハードウェアに対するニーズを正しい知識に基づいて予測できます。ドメインのサイジングに取りかかる際の最も重要な検討材料として、そうした予測結果を代表的なワークロードを使用したテストに活用し、パフォーマンスを監視します。

API バージョン 2015-01-01141

Page 150: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドストレージ要件の計算

トピック• ストレージ要件の計算 (p. 142)• シャード数の選択 (p. 143)• インスタンスタイプとテストの選択 (p. 143)

ストレージ要件の計算ほとんどの Elasticsearch ワークロードは、次の 2 つのカテゴリに大別できます。

• 長期存続インデックス: データを 1 つまたは複数の Elasticsearch インデックスとして処理し、ソースデータの変更に伴ってそれらのインデックスを定期的に更新するコードを記述した場合。一般的な例としては、ウェブサイト、ドキュメント、e コマースの検索などがあります。

• ローリングインデックス: データは継続的に一時的なインデックスに受け渡され、インデックス作成時間や保持期間が指定されます。たとえば、日次のインデックスは 2 週間保持されます。代表的な例は、ログ分析、時系列処理、クリックストリーム分析などです。

長期存続インデックスのワークロードの場合、使用されるストレージ容量はディスク上のソースデータを調べることで簡単に判断できます。データのソースが複数ある場合は、すべてのソースを単純に合計します。

ローリングインデックスについては、一般的な期間内に生成されるデータ量に保持期間を掛けます。たとえば、1 時間あたり 200 MiB のログデータが生成されるとすると、1 日で 4.7 GiB になります。この場合、保持期間が 2 週間であれば、いずれかの時点でデータは 66 GiB に達します。

ただし、ソースデータのサイズはストレージ要件の 1 つの要素に過ぎません。次の点についても考慮する必要があります。

1. レプリカの数: レプリカとはインデックス全体をコピーしたものであり、同量のディスク容量を必要とします。デフォルトでは、各 Elasticsearch インデックスに対してレプリカが 1 つ作成されます。データ損失を防ぐため、少なくとも 1 つは作成することをお勧めします。レプリカによって、検索パフォーマンスを改善することもできます。読み込みが多いワークロードが発生する場合は、より多くのレプリカがあるとよいでしょう。

2. Elasticsearch インデックス作成オーバーヘッド: ディスク上のインデックスのサイズは一定ではありませんが、多くの場合でソースデータよりも 10% 大きくなります。データのインデックスを作成したら、_cat/indices?v API と pri.store.size 値を使用して正確なオーバーヘッドを計算できます。_cat/allocation?v も有用な要約を提供します。

3. オペレーティングシステムの予約スペース: デフォルトでは、Linux は、重要なプロセス、システム復元、そしてディスクの断片化問題に対する保護目的で、root ユーザー用にファイルシステムの 5% を予約します。

4. Amazon ES のオーバーヘッド: Amazon ES は、セグメントマージ、ログ、およびその他の内部オペレーション用として、インスタンスごとにストレージ容量の 20% (最大 20 GiB) を予約します。

この 20 GiB の上限があるため、予約容量の合計はドメインに存在するインスタンスの数によって大きく異なります。たとえば、ドメインに 3 つの m4.xlarge.elasticsearch インスタンスがあり、それぞれのストレージ容量が 500 GiB であるとすると、合計は 1.46 TiB になります。この場合、予約される容量はわずか 60 GiB です。ドメインに 10 の m3.medium.elasticsearch インスタンスがあり、それぞれのストレージ容量が 100 GiB の場合は、合計で 0.98 TiB になります。最初のドメインの方が 50% 大きいですが、後者の予約容量は合計 200 GiB です。

次の式では、ノードの障害やアベイラビリティーゾーンの停止による影響を最小限に抑えるために、追加の空き領域を含むオーバーヘッドの「ワーストケース」の見積もりを適用します。

つまり、任意の時点で 66 GiB のデータが存在し、レプリカを 1 つ必要とする場合、最小ストレージ要件は 66 * 2 * 1.1/0.95/0.8 = 191 GiB になります。この計算は、次のように定型化できます。

API バージョン 2015-01-01142

Page 151: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドシャード数の選択

ソースデータ x (1+ レプリカの数) x (1 + インデックス作成オーバーヘッド) ÷ (1 - Linux 予約スペース) ÷ (1- Amazon ES のオーバーヘッド) = 最小ストレージ要件

あるいは、この簡素化されたバージョンを使用することもできます。

ソースデータ x (1+ レプリカの数) x 1.45 = 最小ストレージ要件

ストレージの容量不足は、クラスターが不安定になる最も一般的な原因の 1 つです。インスタンスタイプ、インスタンスの数、ストレージボリュームを選択 (p. 143)するときは、それらの数を照合して確認するようにしてください。

ストレージに関するその他の考慮事項は次のとおりです。

• 最小ストレージ要件が 1 PB を超える場合は、「ペタバイト規模 (p. 156)」を参照してください。• ローリングインデックスがあり、ホットウォームアーキテクチャを使用する場合は、「UltraWarm スト

レージ (プレビュー) (p. 149)」を参照してください。

シャード数の選択ストレージ要件を理解したら、インデックス作成の戦略を調査できます。各 Elasticsearch インデックスは、いくつかのシャードに分割されます。既存のインデックスに対してプライマリシャードの数を簡単に変更することはできません。したがって、シャード数は最初のドキュメントでインデックスを作成する前に決定する必要があります。

シャード数を選択する最終的なねらいは、クラスター内のすべてのデータノード間でインデックスを均等に分散させることです。ただし、これらのシャードは大きすぎたり多すぎたりしてはいけません。シャードのサイズは 10 – 50 GiB にすると良いようです。シャードが大きいと、Elasticsearch の障害復旧が困難になる可能性があります。一方、各シャードはある程度の CPU とメモリを使用するため、小規模なシャードが多数ある場合には、パフォーマンスの問題やメモリ不足のエラーが発生する可能性があります。つまり、基盤となる Amazon ES インスタンスで問題なく処理できるようにシャードは小さくする必要がありますが、小さすぎるとハードウェアに不必要な負荷をかけてしまうということです。

たとえば、66 GiB のデータがあるとします。その数値は今後も増加する予定がなく、各シャードのサイズは約 30 GiB を維持する必要があります。この場合、シャード数は約 3 つとなります (66 * 1.1/30 = 3)。この計算は、次のように定型化できます。

(ソースデータ + 拡張の余地) * (1 + インデックス作成オーバーヘッド)/必要シャード数 = プライマリシャードの概数

この式は、時間の経過に伴う拡張にも対応できます。同じ 67 GiB のデータが来年は 4 倍になると想定される場合、シャード数はおよそ (66 + 198) * 1.1/30 = 10 となります。ただし、追加分の 198 GiB のデータは現時点では存在しません。将来に向けてのこのような準備として不必要な小さいシャードを作成し、現時点で CPU とメモリを大量に消費することがないようにしてください。この場合、シャード当たりのサイズは 66 * 1.1/10 シャード = 7.26 GiB となります。これは余分なリソースを消費する場合があり、推奨サイズ範囲を下回ります。中間をとったアプローチとしてシャード数を 6 つにすると、シャードのサイズは現時点で 12 GiB、将来的には 48 GiB となります。その後、シャードが 50 GiB を超えたときには、3 つのシャードを使用してデータのインデックスを再作成することもできます。

インスタンスタイプとテストの選択ストレージ要件を計算して必要なシャード数を選択したら、ハードウェアに関する決定ができるようになります。ハードウェア要件はワークロードによって大きく異なるものの、基本的な推奨事項は提供されています。

各インスタンスタイプのストレージ制限 (p. 237)は一般的に、軽度のワークロードで必要とされる CPUとメモリの量にマッピングされています。たとえば、m4.large.elasticsearch インスタンスが最大で512 GiB の EBS ボリュームサイズ、vCPU x 2 コア、8 GiB のメモリを備えているとします。クラスター

API バージョン 2015-01-01143

Page 152: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド専用マスターノード

には多数のシャードがあり、高負荷の集計処理、頻繁なドキュメント更新、または大量のクエリ処理が発生している場合、それらのリソースではニーズを満たせない可能性があります。クラスターがこのようなカテゴリに分類される場合はまず、ストレージ要件の容量 100 GiB ごとに vCPU x 2 コア、メモリ 8 GiBに近い構成になるようにします。

Tip

各インスタンスタイプに割り当てられるハードウェアリソースの概要については、「AmazonElasticsearch Service 料金表」を参照してください。

ただし、上記に記載されたリソースでも不十分になる場合があります。一部の Elasticsearch ユーザーからは、要件を満たすためにこれらのリソースが重ねて必要になるという報告を受けています。ワークロードに最適なハードウェアを特定するには、知識に基づく初期予測、代表的なワークロードを使用したテスト、調整、そして再テストが必要になります。

1. まず、スプレッドブレインの問題などの潜在的な Elasticsearch の問題を防ぐため、インスタンス数は3 つ以上を選択することをお勧めします。専用マスターノードが 3 つの場合は (p. 144)、レプリケーション用のデータノードは少なくとも 2 つにすることをお勧めします。

2. ストレージ要件が 184 GiB で、推奨最小数である 3 つのインスタンスがある場合、各インスタンスで必要とするストレージの容量は 184/3 = 61 GiB という計算になります。この例では、クラスターに対して3 つの m4.large.elasticsearch インスタンスを選択してそれぞれで 90 GiB の EBS ストレージボリュームを使用すれば、安全策として時間の経過に伴う拡張にも備えることができます。この構成では6 つの vCPU コアと 24 GiB のメモリを利用でき、軽度のワークロードに適しています。

より大規模な例として、ストレージ要件が 14 TiB で高い負荷が発生する状況を想定します。この場合、まずは 2 * 144 = 288 の vCPU コアと 8 * 144 = 1,152 GiB のメモリを使用したテストが考えられます。これらの数値は、約 18 i3.4xlarge.elasticsearch インスタンスを使用する結果となります。高速なローカルストレージが必要ない場合、それぞれが 1 TiB の EBS ストレージボリュームを使用する 18 個の r5.4xlarge.elasticsearch インスタンスをテストすることもできます。

クラスターに数百テラバイトのデータが含まれる場合は、「ペタバイト規模 (p. 156)」を参照してください。

3. クラスターを構成したら、インデックスを追加 (p. 67)できます。それから、実践的なデータセットと代表的なクライアントを使用したテストを実施して CloudWatch メトリクスを監視 (p. 34)し、クラスターでのワークロード処理を確認します。

4. パフォーマンスがニーズを満たすものであれば、テストは成功し、CloudWatch メトリックスは正常であり、クラスターは使用する準備ができたことになります。リソースの異常な使用状況を検出するために、必ず CloudWatch アラームを設定 (p. 147)してください。

パフォーマンスが許容できないものであれば、テストが失敗したか、または CPUUtilization かJVMMemoryPressure が高いことになります。別のインスタンスタイプを選択 (またはインスタンスを追加) して、テストを続行する必要があるかもしれません。インスタンスを追加すると、Elasticsearchはクラスター全体にわたってシャードを自動的に再分散します。

過負荷クラスターの過剰容量は、負荷の低いクラスターの不足よりも簡単に測定できるため、必要以上に大きなクラスターから開始することをお勧めします。次に、追加のリソースを持つ効率的なクラスターにテストおよびスケールダウンして、アクティビティの増加期間中に安定した運用を確保します。

本番稼働用クラスター (1 つまたは複数) では複雑なステータスが発生しますが、専用マスターノード (p. 144)を活用することでパフォーマンスとクラスターの信頼性を向上させることができます。

専用マスターノードAmazon Elasticsearch Service では、クラスターの安定性を向上するために専用マスターノードを使用します。専用マスターノードではクラスター管理タスクを実行しますが、データは保持せず、データのアッ

API バージョン 2015-01-01144

Page 153: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド専用マスターノード

プロードリクエストにも応答しません。このように、クラスター管理タスクをオフロードすると、ドメインの安定性が向上します。

本番稼働用 Amazon ES ドメインには、専用マスターノードを 3 つ割り当てることをお勧めします。

1. 専用マスターノードが 1 つだと、障害発生時にバックアップがとれません。2. 専用マスターノードが 2 つの場合は、障害発生時に新しいマスターノードを選択するためのクォーラム

がクラスターにありません。

クォーラムは、専用マスターノードの数/2 + 1 (直近の整数まで切り捨て) で計算され、ドメインを作成したときに Amazon ES で discovery.zen.minimum_master_nodes に設定されます。

ここでは 2/2 + 1 = 2 となります。専用マスターノード 1 つが失敗し、バックアップは 1 つのみであれば、クラスターにはクォーラムがなく、新しいマスターを選択できません。

3. 推奨される専用マスターノード数は 3 つです。マスターノードが失敗したときに 2 つのバックアップノードが使用でき、必要なクォーラム (2) で新しいマスターを選択できます。

4. 専用マスターノードを 4 つにすると 3 つより良くなるわけではなく、ゾーンが 2 つしかないリージョンで複数のアベイラビリティーゾーン (p. 29)を使用した場合、問題が発生する可能性があります。• マスターノード 1 つが失敗した場合、クォーラム (3) で新しいマスターを選択します。2 つのノード

が失敗したした場合、そのクォーラムは失われ、専用マスターノードが 3 つの場合と同じ状況になります。

• 各アベイラビリティーゾーンに 2 つの専用マスターノードがあり、両ゾーンは相互に通信できない場合、いずれのゾーンにも新しいマスターを選択するためのクォーラムはありません。

5. 5 つの専用マスターノードは 3 つと同様に機能し、クォーラムを維持しながら 2 つのノードを失うことができます。ただし、一度にアクティブになる専用マスターノードは 1 つしかないため、この設定では4 つのアイドルノードに対して料金を支払うことになります。多くのお客様は、このレベルのフェイルオーバーは過剰だと考えています。

Note

新しいマスターノードを選択するために必要なクォーラムがクラスターにない場合は、クラスターへの書き込みおよび読み取りリクエストの両方が失敗します。この動作は Elasticsearch のデフォルトとは異なります。

専用マスターノードで実行するクラスター管理タスクは次のとおりです。

• クラスター内のすべてのノードを追跡する• クラスター内のインデックスの数を追跡する• 各インデックスに属するシャード数を追跡する• クラスター内のノードのルーティング情報を保持する• クラスター内のインデックス作成やノードの作成/削除など、状態が変化したときにクラスターの状態を

更新する• クラスターの状態に施された変更を、クラスター内のすべてのノードにわたって複製する• クラスター内のデータノードの可用性を監視するハートビートシグナル (定期的なシグナル) を送信する

ことで、すべてのクラスターノードの状態を監視する

次の図は、10 のインスタンスを持つ Amazon ES ドメインを表しています。インスタンスのうち 7 つはデータノードで、3 つは専用マスターノードです。専用マスターノードのうち、1 つのみがアクティブで、グレーの専用マスターノード 2 つは、アクティブな専用マスターノードが失敗したときのために、バックアップとして待機します。すべてのデータアップロードリクエストは、7 つのデータノードにより保存され、すべてのクラスター管理タスクは、アクティブな専用マスターノードにオフロードされます。

API バージョン 2015-01-01145

Page 154: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド専用マスターノード

専用マスターノードでは検索およびクエリリクエストを処理しませんが、そのサイズは管理可能なインスタンス、インデックス、シャードの数と大きな相関があります。本番稼働用クラスターにおいて、専用マスターノードには以下のインスタンスタイプをお勧めします。これらの推奨事項は一般的なワークロードに基づいており、お客様の要件によって異なります。多数のシャードまたはフィールドのマッピングがあるクラスターは、大きなインスタンスタイプからメリットを得ることができます。専用マスターノードのメトリクス (p. 147)を監視し、より大きいインスタンスタイプを使用する必要があるかどうかを調べてください。

Instance Count 推奨される最小専用マスターインスタンスタイプ

1–10 c5.large.elasticsearch

10–30 c5.xlarge.elasticsearch

30–75 c5.2xlarge.elasticsearch

75–200 r5.4xlarge.elasticsearch

• 特定の構成変更が専用マスターノードに与える影響の詳細については、「the section called “設定変更について” (p. 26)」を参照してください。

• インスタンス数の制限に関する詳細は、「the section called “クラスターとインスタンスの制限” (p. 237)」を参照してください。

API バージョン 2015-01-01146

Page 155: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド推奨 CloudWatch アラーム

• vCPU、メモリ、料金表など、特定のインスタンスタイプの詳細については、Amazon Elasticsearch インスタンスの料金表を参照してください。

推奨 CloudWatch アラームCloudWatch アラームは、CloudWatch メトリックスがある程度の時間にわたって指定された値を超えたときにアクションを実行します。たとえば、クラスターの状態が red になって 1 分を超えたときに AWSから E メールを受け取ることができます。このセクションでは、いくつかの推奨されるアラームとそのアラームへの対応方法について説明します。

アラームの設定に関する詳細については、Amazon CloudWatch ユーザーガイド の「Amazon CloudWatchアラームの作成」を参照してください。

アラーム 問題

ClusterStatus.redmaximum is >= 1 for 1minute, 1 consecutivetime

少なくとも 1 つのプライマリシャードとそのレプリカがノードに割り当てられていません。「the section called “赤のクラスター状態” (p. 164)」を参照してください。

ClusterStatus.yellowmaximum is >= 1 for 1minute, 1 consecutivetime

少なくとも 1 つのレプリカシャードがノードに割り当てられていません。「the section called “黄色のクラスター状態” (p. 166)」を参照してください。

FreeStorageSpaceminimum is <= 20480 for1 minute, 1 consecutivetime

クラスターのノードの空きストレージ容量が 20 GiB に下がっています。「the section called “使用可能なストレージ領域の不足” (p. 167)」を参照してください。この値は MiB 単位です。20480 ではなく、各ノードのストレージ容量の 25% に設定することをお勧めします。

ClusterIndexWritesBlockedis >= 1 for 5 minutes, 1consecutive time

クラスターは書き込みリクエストをブロックしています。「the sectioncalled “ClusterBlockException” (p. 166)」を参照してください。

Nodes minimum is < xfor 1 day, 1 consecutivetime

x はクラスター内のノード数です。このアラームは、クラスター内の少なくとも 1 つのノードが 1 日間にわたってアクセスできない状態を意味します。「the section called “障害が発生したクラスターノード” (p. 168)」を参照してください。

AutomatedSnapshotFailuremaximum is >= 1 for 1minute, 1 consecutivetime

自動スナップショットが失敗しました。多くの場合、この失敗によってクラスター状態が赤になります。「the section called “赤のクラスター状態” (p. 164)」を参照してください。

すべての自動スナップショットの概要および障害に関する情報を取得するには、次の操作を試してください。

GET domain_endpoint/_snapshot/cs-automated/_all

CPUUtilizationaverage is >= 80% for 15minutes, 3 consecutivetimes

100% の CPU 使用率は珍しくありませんが、高い平均値が持続する場合は問題があります。より大規模なインスタンスタイプを使用するか、インスタンスを追加することを検討してください。

JVMMemoryPressuremaximum is >= 80% for

使用量が増加した場合にクラスターでメモリ不足エラーが発生する可能性があります。垂直スケーリングを検討してください。Amazon ES では Javaヒープ (最大 32 GiB のヒープサイズ) にインスタンスの RAM の半分を使用

API バージョン 2015-01-01147

Page 156: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド推奨 CloudWatch アラーム

アラーム 問題5 minutes, 3 consecutivetimes

します。インスタンスは最大 64 GiB の RAM まで垂直スケーリングでき、それ以上はインスタンスを追加することで水平方向にスケーリングできます。

MasterCPUUtilizationaverage is >= 50% for 15minutes, 3 consecutivetimes

MasterJVMMemoryPressuremaximum is >= 80%for 15 minutes, 1consecutive time

より大規模なインスタンスタイプを専用マスターノード (p. 144)として使用することを検討してください。クラスターの安定性と Blue/Green デプロイ (p. 26)に関わるため、専用マスターノードの CPU の平均使用率はデータノードよりも低くする必要があります。

KMSKeyError is>= 1 for 1 minute, 1consecutive time

ドメインに保存されているデータを暗号化する KMS 暗号化キーが無効になっています。通常のオペレーションを復元するために、再度有効にしてください。詳細については、「the section called “保管時の暗号化” (p. 47)」を参照してください。

KMSKeyInaccessibleis >= 1 for 1 minute, 1consecutive time

ドメインに保存されているデータを暗号化する KMS 暗号化キーが削除されたか、Amazon ES への権限が取り消されています。この状態のドメインを復旧することはできませんが、手動スナップショットがある場合は、それを使用して新しいドメインに移行できます。詳細については、「the sectioncalled “保管時の暗号化” (p. 47)」を参照してください。

Note

メトリクスを表示するのみであれば、「CloudWatch メトリクスのモニタリング (p. 34)」を参照してください。

API バージョン 2015-01-01148

Page 157: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドパブリックプレビューの制限

UltraWarm ストレージ AmazonElasticsearch Service (プレビュー)

UltraWarm ストレージは、大量の読み取り専用データをコストパフォーマンスに優れた方法で AmazonElasticsearch Service に保存できます。標準データノードは「ホット」ストレージを使用します。このストレージは、各ノードにアタッチされたインスタンスストアまたは Amazon EBS ボリュームの形をとります。ホットストレージは、新しいデータのインデックス作成と検索において、可能な限り高速なパフォーマンスを提供します。

UltraWarm ノードは、接続されたストレージではなく、Amazon S3 と高度なキャッシュソリューションを使用してパフォーマンスを向上させます。アクティブに書き込みを行っていないインデックスやクエリの頻度が低いインデックスについては、UltraWarm ストレージにより、GiB あたりのコストが大幅に削減されます。Elasticsearch では、これらのウォームインデックスは他のインデックスと同じように動作します。同じ API を使用してクエリを実行することも、Kibana でダッシュボードを作成することもできます。

トピック• パブリックプレビューの制限 (p. 149)• UltraWarm ストレージ要件の計算 (p. 150)• UltraWarm 価格設定 (p. 150)• UltraWarm ストレージを使用したドメインの作成 (p. 150)• UltraWarm ストレージへのインデックスの移行 (p. 151)• ホットインデックスとウォームインデックスのリスト表示 (p. 154)• スナップショットからのウォームインデックスの復元 (p. 154)

パブリックプレビューの制限パブリックプレビューでは、UltraWarm ストレージにはいくつかの重要な制限があります。

• 重要なワークロードにウォームストレージを使用することはまだお勧めしません。プレビュー機能は、テストと評価用です。

• 既存のドメインにウォームストレージを追加することはできません。新しいドメインのみに追加できます。ウォームストレージを使用してドメインを作成した後は、ウォームノードの数を増減できます。ただし、ウォームストレージを完全に無効にすることはできません。

• UltraWarm は、us-east-1 (バージニア北部)、us-east-2 (オハイオ)、および us-west-2 (オレゴン)リージョンでのみご利用いただけます。

• ウォームストレージを使用するには、ドメインを 3 つのアベイラビリティーゾーン (p. 29)にデプロイし、専用マスターノード (p. 144)を使用する必要があります。

• ドメインでデータノードに T2 インスタンスタイプが使用されている場合、ウォームストレージを使用することはできません。

• Elasticsearch 6.8 でのみウォームストレージを使用できます。• ホットストレージからウォームストレージにインデックスを移行することはできますが、逆には移行で

きません。インデックスをホットストレージに移行し直す方法については、the section called “スナップショットからのウォームインデックスの復元” (p. 154) を参照してください。

API バージョン 2015-01-01149

Page 158: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドUltraWarm ストレージ要件の計算

UltraWarm ストレージ要件の計算the section called “ストレージ要件の計算” (p. 142) で説明されているように、ホットストレージ内のデータには、レプリカ、Linux の予約済み領域、Amazon ES 予約済み領域という大きなオーバーヘッドが発生します。たとえば、1 つのレプリカシャードを持つ 10 GiB プライマリシャードには、約 26 GiB のホットストレージが必要です。

UltraWarm では Amazon S3 を使用するため、このオーバーヘッドは発生しません。UltraWarm ストレージ要件を計算するときは、プライマリシャードのサイズのみを考慮します。S3 のデータの耐久性はレプリカの必要性を排除し、S3 はオペレーティングシステムやサービスの考慮事項を抽象化します。同じ 10GiB シャードには、10 GiB のウォームストレージが必要です。ultrawarm1.large.elasticsearch インスタンスをプロビジョニングする場合、プライマリシャードには最大ストレージの 20 TiB すべてを使用できます。

Tip

UltraWarm ストレージでは、最大シャードサイズを 50 GiB にすることをお勧めします。

UltraWarm 価格設定ホットストレージでは、プロビジョニングした分に対して料金を支払います。インスタンスにはアタッチされた Amazon EBS ボリュームが必要で、インスタンスストアが含まれるインスタンスもあります。そのストレージが空かいっぱいかに関係なく、同じ料金を支払います。

UltraWarm ストレージでは、使用した分に対して料金を支払います。ultrawarm1.large.elasticsearch インスタンスは S3 で最大 20 TiB のストレージに対応できますが、1 TiB のデータを格納する場合、1 TiB のデータに対してのみ課金されます。他のすべてのノードタイプと同様に、UltraWarm ノードごとに時間料金も支払います。詳細については、「AmazonElasticsearch Service 料金」を参照してください。

UltraWarm ストレージを使用したドメインの作成コンソールは、ウォームストレージを使用するドメインを作成する最も簡単な方法です。ドメインの作成中に、[Preview (プレビュー)] を選択し、[UltraWarm Storage (UltraWarm ストレージ)] を有効にして、必要なウォームノードの数を選択します。詳細については、「the section called “Amazon ES ドメイン (コンソール) の作成” (p. 10)」を参照してください。

AWS CLI または設定 API (p. 196) (特に、ElasticsearchClusterConfig のWarmEnabled、WarmCount、WarmType オプション) を使用することもできます。

Note

各 UltraWarm インスタンスタイプには、アドレス指定できるストレージの最大容量があり、ドメインはウォームノードの最大数をサポートします。詳細については、「制限 (p. 237)」を参照してください。

CLI コマンドの例次の AWS CLI コマンドは、制限されたアクセスポリシーを持つ、3 つのデータノード、3 つの専用マスターノード、6 つのウォームノードのドメインを作成します。

aws es create-elasticsearch-domain --domain-name my-domain --elasticsearch-cluster-config InstanceCount=3,InstanceType=r5.large.elasticsearch,DedicatedMasterEnabled=true,DedicatedMasterType=c5.large.elasticsearch,DedicatedMasterCount=3,ZoneAwarenessEnabled=true,ZoneAwarenessConfig={AvailabilityZoneCount=3},WarmEnabled=true,WarmCount=6,WarmType=ultrawarm1.medium.elasticsearch

API バージョン 2015-01-01150

Page 159: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド設定 API リクエストの例

--elasticsearch-version 6.8 --access-policies '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":["123456789012"]},"Action":["es:*"],"Resource":"arn:aws:es:us-east-1:123456789012:domain/my-domain/*"}]}' --region us-east-1

詳細については、「AWS CLI Command Reference」を参照してください。

設定 API リクエストの例設定 API に対する次のリクエストは、すべての暗号化機能が有効で制限されたアクセスポリシーを持つ、3 つのデータノード、3 つの専用マスターノード、6 つのウォームノードのドメインを作成します。

POST https://es.us-east-2.amazonaws.com/2015-01-01/es/domain{ "ElasticsearchClusterConfig": { "InstanceCount": 3, "InstanceType": "r5.large.elasticsearch", "DedicatedMasterEnabled": true, "DedicatedMasterType": "c5.large.elasticsearch", "DedicatedMasterCount": 3, "ZoneAwarenessEnabled": true, "ZoneAwarenessConfig": { "AvailabilityZoneCount": 3 }, "WarmEnabled": true, "WarmCount": 6, "WarmType": "ultrawarm1.medium.elasticsearch" }, "EBSOptions": { "EBSEnabled": true, "VolumeType": "gp2", "VolumeSize": 11 }, "EncryptionAtRestOptions": { "Enabled": true }, "NodeToNodeEncryptionOptions": { "Enabled": true }, "DomainEndpointOptions": { "EnforceHTTPS": true, "TLSSecurityPolicy": "Policy-Min-TLS-1-2-2019-07" }, "ElasticsearchVersion": "6.8", "DomainName": "my-domain", "AccessPolicies": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"123456789012\"]},\"Action\":[\"es:*\"],\"Resource\":\"arn:aws:es:us-east-1:123456789012:domain/my-domain/*\"}]}"}

詳細については、「Amazon ES 設定 API リファレンス (p. 196)」を参照してください。

UltraWarm ストレージへのインデックスの移行インデックスへの書き込みが終了し、可能な限り高速な検索パフォーマンスを必要としなくなった場合は、ホットからウォームに移行します。

POST _ultrawarm/migration/my-index/_warm

API バージョン 2015-01-01151

Page 160: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドUltraWarm ストレージへのインデックスの移行

次に、移行のステータスを確認します。

GET _ultrawarm/migration/my-index/_status

{ "migration_status": { "index": "my-index", "state": "RUNNING_SHARD_RELOCATION", "migration_type": "HOT_TO_WARM", "shard_level_status": { "running": 0, "total": 5, "pending": 3, "failed": 0, "succeeded": 2 } }}

複数のインデックスを連続してすばやく移行する場合、_cat API と同様に、すべての移行の概要をプレーンテキストで取得できます。

GET _ultrawarm/migration/_status?v

index migration_type statemy-index HOT_TO_WARM RUNNING_SHARD_RELOCATION

移行プロセスには次の状態があります。

PENDING_INCREMENTAL_SNAPSHOTRUNNING_INCREMENTAL_SNAPSHOTFAILED_INCREMENTAL_SNAPSHOTPENDING_FORCE_MERGERUNNING_FORCE_MERGEFAILED_FORCE_MERGEPENDING_FULL_SNAPSHOTRUNNING_FULL_SNAPSHOTFAILED_FULL_SNAPSHOTPENDING_SHARD_RELOCATIONRUNNING_SHARD_RELOCATIONFINISHED_SHARD_RELOCATION

これらの状態が示すように、スナップショット、シャード再配置、強制マージ中に移行が失敗する可能性があります。スナップショットまたはシャード再配置中の障害は、通常、ノードの障害または S3 接続の問題が原因です。通常、ディスク領域の不足は、強制マージ失敗の根本的な原因です。

移行が完了すると、同じ _status リクエストでエラーが返されます。その時点でインデックスをチェックすると、ウォームインデックスに固有の設定が表示されます。

GET my-index/_settings

{ "my-index": { "settings": { "index": { "refresh_interval": "-1", "auto_expand_replicas": "false", "blocks": { "ultrawarm_allow_delete": "true" }, "provided_name": "my-index",

API バージョン 2015-01-01152

Page 161: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドUltraWarm ストレージへのインデックスの移行

"creation_date": "1572886951679", "store": { "type": "snapshot" }, "unassigned": { "node_left": { "delayed_timeout": "5m" } }, "number_of_replicas": "1", "uuid": "3iyTkhXvR8Cytc6sWKBirg", "version": { "created": "6080099" }, "routing": { "allocation": { "require": { "box_type": "warm" } }, "search_preference": "_primary_first" }, "number_of_shards": "5", "migration": { "state": "WARM" }, "snapshot": { "id": "7WPneO-5QQKgKoCi7esXGw" } } } }} disables

• blocks.ultrawarm_allow_delete は、インデックス (true) に対するほとんどの _settings 更新をブロックするか、それら (false) を許可するかを指定します。

• store.type は、S3 にウォームインデックスを Amazon ES が保存する基本的な方法です。この値は常に snapshot です。

• number_of_replicas は、ディスク領域を消費しないパッシブレプリカの数です。• routing.allocation.require.box_type は、インデックスが標準データノードではなくウォーム

ノードを使用するように指定します。• routing.search_preference は、Amazon ES が最初にプライマリシャードにクエリを実行し、ク

エリが失敗した場合にのみパッシブレプリカを使用するように指示します。この設定により、ディスクの使用量が減少します。

• migration.state は、インデックスがウォームストレージに正常に移行されたことを示します。移行プロセス中に、HOT2WARM が表示されることもあります。

ウォームストレージのインデックスは、ホットストレージに復元 (p. 154)しない限り、読み取り専用です。インデックスをクエリすることはできますが、インデックスにデータを追加することはできません。追加しようとすると、次のエラーメッセージが表示されます。

{ "error": { "root_cause": [{ "type": "cluster_block_exception", "reason": "blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];" }], "type": "cluster_block_exception", "reason": "blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];" },

API バージョン 2015-01-01153

Page 162: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドホットインデックスとウォームインデックスのリスト表示

"status": 403}

ホットインデックスとウォームインデックスのリスト表示

UltraWarm ストレージでは、ホットインデックスとウォームインデックスの管理に役立つ _all と同様の2 つのオプションが追加されています。すべてのウォームインデックスまたはホットインデックスのリストについては、次のリクエストを実行します。

GET _warmGET _hot

これらのオプションは、インデックスを指定する他のリクエストで使用できます。

_cat/indices/_warm_cluster/state/_all/_hot

スナップショットからのウォームインデックスの復元

UltraWarm ストレージでは、自動スナップショット用の標準リポジトリに加えて、2 つ目のリポジトリ、cs-ultrawarm が追加されます。cs-ultrawarm のスナップショットの保存期間は、他の自動スナップショットと同じ 14 日間です。詳細については、「インデックススナップショットの使用 (p. 97)」を参照してください。

ウォームインデックスをホットストレージに復元するには

1. 復元するインデックスを含む最新のスナップショットを特定します。

GET _snapshot/cs-ultrawarm/_all

{ "snapshots": [{ "snapshot": "snapshot-name", "version": "6.8.0", "indices": [ "my-index" ] }]}

2. インデックスを削除します。

DELETE my-index

3. スナップショットからインデックスを復元し、スナップショットの設定を使用するのではなく、いくつかの設定を変更します。

POST _snapshot/cs-ultrawarm/snapshot-name/_restore{

API バージョン 2015-01-01154

Page 163: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドスナップショットからのウォームインデックスの復元

"index_settings": { "index.auto_expand_replicas": true|false }, "ignore_index_settings": [ "index.blocks.ultrawarm_allow_delete", "index.refresh_interval" ]}

API バージョン 2015-01-01155

Page 164: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド

Amazon Elasticsearch Service におけるペタバイト規模

Amazon Elasticsearch Service ドメインは、最大 3 PB の接続ストレージを提供します。i3.16xlarge.elasticsearch インスタンスタイプが 200 個あり、それぞれに 15 TB のストレージがあるドメインを設定できます。規模がまったく異なるため、このサイズのドメインに関する推奨事項は一般的な推奨事項 (p. 141)とは異なります。このセクションでは、ドメインの作成、コスト、ストレージ、シャードのサイズに関する考慮事項について説明します。

このセクションでは、i3.16xlarge.elasticsearch インスタンスタイプを頻繁に参照していますが、他のいくつかのインスタンスタイプを使用して 1 PB の合計ドメインストレージに達することができます。

ドメインの作成

このサイズのドメインは、ドメインあたり 40 インスタンスというデフォルトの制限を超えています。ドメインあたり 200 インスタンスへのサービス制限引き上げをリクエストするには、AWS サポートセンターでサポートケースを作成します。

料金表

このサイズのドメインを作成する前に、Amazon Elasticsearch Service の料金表ページを確認して、関連コストが希望に沿っていることを確認します。ホットウォームアーキテクチャがユースケースに合っているかどうかを確認するために UltraWarm ストレージ (プレビュー) (p. 149) を調べます。

ストレージ

i3 インスタンスタイプは、高速な不揮発性メモリエクスプレス (NVMe) ローカルストレージを提供するよう特別に設計されたものです。このローカルストレージは Amazon Elastic Block Store と比較してパフォーマンスが大幅に向上する傾向があるため、Amazon ES でこのインスタンスタイプを選択した場合は EBS ボリュームを選択することはできません。必要に応じて EBS ストレージを使用する場合は、r5.12xlarge.elasticsearch など、別のインスタンスタイプを使用します。

シャードのサイズと数

Elasticsearch の一般的なガイドラインは、シャードあたり 50 GB を超えないようにすることです。大きなドメインに対応するために必要なシャードの数および i3.16xlarge.elasticsearch インスタンスが利用可能なリソースが指定されている場合は、シャードのサイズは 100 GB をお勧めします。

たとえば、450 TB のソースデータがあり、レプリカを 1 つにする場合、最小ストレージ要件は 450 TB * 2 * 1.1/0.95 = 1.04 PB です。この計算の説明については、「the section called “ストレージ要件の計算” (p. 142)」を参照してください。1.04 PB/15 TB = 70 インスタンスですが、時間と共に変動するデータ量を考慮してストレージセーフティネットとして 80 個以上のi3.16xlarge.elasticsearch インスタンスを選択することもできます。各インスタンスにより最小ストレージ要件に 20 GiB が追加されますが、このサイズのディスクでは、この 20 GiB はほぼ無視できます。

シャード数の制御には手間がかかります。Elasticsearch ユーザーがインデックスを毎日ローテーションし、1、2 週間データを保持することがよくあります。このような状況では、「アクティブ」なシャードと「非アクティブ」なシャードを区別すると便利な場合があります。アクティブなシャードとは、書き込みや読み取りがアクティブに行われているシャードです。非アクティブなシャードとは、たまに読み取りリクエストがあるものの大部分はアイドルな状態のサービスです。一般的には、アクティブなシャードの数を数千個未満に維持する必要があります。アクティブなシャードの数が10,000 に近づくと、パフォーマンスと安定性に大きなリスクが出現します。

API バージョン 2015-01-01156

Page 165: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド

プライマリシャードの数は次の式を使用して計算します。450,000 GB * 1.1/(100 GB/シャード) =4,950 シャード。レプリカを考慮してこの数を 2 倍にすると 9,900 シャードになり、すべてのシャードがアクティブの場合は大きな懸念事項になります。ただし、インデックスをローテーションして、任意の指定日にシャードの数の 1/7 または 1/14 (それぞれ 1,414 または 707 シャード) のみがアクティブな場合、クラスターはうまく機能します。この場合も、ドメインのサイズ決定と設定において最も重要なステップは、現実的なデータセットを使用して代表的なクライアントテストを実行することです。

API バージョン 2015-01-01157

Page 166: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドサンプルコード

Curator を使用した AmazonElasticsearch Service でのデータの更新

この章では、インデックスとスナップショットを管理するために AWS Lambda と Curator を使用するためのサンプルコードを示します。Curator は、60 日以上前に作成されたインデックスや、完了できなかったスナップショットなど、特定の条件を満たす ID インデックスやスナップショットの識別に役立つ数多くのフィルタを提供しています。

多くの場合、Curator はコマンドラインインターフェイス (CLI) として使用されますが、Python API も備えています。つまり、Lambda 関数内で使用することができます。

Lambda 関数の設定とデプロイパッケージの作成の詳細については、「the section called “Amazon S3 から Amazon ES にストリーミングデータをロードする” (p. 80)」を参照してください。さらに詳しくは、「AWS Lambda Developer Guide」を参照してください。この章では、サンプルコード、基本設定、トリガー、およびアクセス許可のみを扱います。

トピック• サンプルコード (p. 158)• Basic Settings (p. 161)• トリガ (p. 161)• アクセス許可 (p. 161)

サンプルコード次のサンプルコードでは、Curator および公式な Python Elasticsearch クライアントを使用して、データが 30 日以上経過していることを示すタイムスタンプが名前に含まれているインデックスをすべて削除します。たとえば、インデックス名が my-logs-2014.03.02 である場合、このインデックスは削除されます。このフィルタはインデックスの名前を使用してその古さを判断するため、本日インデックスを作成した場合でも、削除は発生します。

このコードには、作成日に基づいて古さを決定するものを含めて、他の一般的なフィルタのコメントアウトされた例も含まれています。AWS SDK for Python (Boto3) および requests-aws 4 auth ライブラリは、Amazon ES へのリクエストに署名します。

Warning

このセクションの両方のコード例では、データが削除されます (多数のデータが削除される可能性があります)。その動作が適切であることを確認するまで、重要でないドメインで各サンプルを変更およびテストしてください。

インデックスの削除

import boto3from requests_aws4auth import AWS4Authfrom elasticsearch import Elasticsearch, RequestsHttpConnectionimport curator

host = '' # For example, search-my-domain.region.es.amazonaws.comregion = '' # For example, us-west-1

API バージョン 2015-01-01158

Page 167: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドサンプルコード

service = 'es'credentials = boto3.Session().get_credentials()awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)

# Lambda execution starts here.def lambda_handler(event, context):

# Build the Elasticsearch client. es = Elasticsearch( hosts = [{'host': host, 'port': 443}], http_auth = awsauth, use_ssl = True, verify_certs = True, connection_class = RequestsHttpConnection )

# A test document. document = { "title": "Moneyball", "director": "Bennett Miller", "year": "2011" }

# Index the test document so that we have an index that matches the timestring pattern. # You can delete this line and the test document if you already created some test indices. es.index(index="movies-2017.01.31", doc_type="movie", id="1", body=document)

index_list = curator.IndexList(es)

# Filters by age, anything with a time stamp older than 30 days in the index name. index_list.filter_by_age(source='name', direction='older', timestring='%Y.%m.%d', unit='days', unit_count=30)

# Filters by naming prefix. # index_list.filter_by_regex(kind='prefix', value='my-logs-2017')

# Filters by age, anything created more than one month ago. # index_list.filter_by_age(source='creation_date', direction='older', unit='months', unit_count=1)

print("Found %s indices to delete" % len(index_list.indices))

# If our filtered list contains any indices, delete them. if index_list.indices: curator.DeleteIndices(index_list).do_action()

host および region の値を更新する必要があります。

次のコードサンプルは、2 週間以上古いスナップショットを削除します。また、新しいスナップショットを作成します。

スナップショットの削除

import boto3from datetime import datetimefrom requests_aws4auth import AWS4Authfrom elasticsearch import Elasticsearch, RequestsHttpConnectionimport loggingimport curator

# Adding a logger isn't strictly required, but helps with understanding Curator's requests and debugging.

API バージョン 2015-01-01159

Page 168: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドサンプルコード

logger = logging.getLogger('curator')logger.addHandler(logging.StreamHandler())logger.setLevel(logging.INFO)

host = '' # For example, search-my-domain.region.es.amazonaws.comregion = '' # For example, us-west-1service = 'es'credentials = boto3.Session().get_credentials()awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)

now = datetime.now()# Clunky, but this approach keeps colons out of the URL.date_string = '-'.join((str(now.year), str(now.month), str(now.day), str(now.hour), str(now.second)))

snapshot_name = 'my-snapshot-prefix-' + date_stringrepository_name = 'my-repo'

# Lambda execution starts here.def lambda_handler(event, context):

# Build the Elasticsearch client. es = Elasticsearch( hosts = [{'host': host, 'port': 443}], http_auth = awsauth, use_ssl = True, verify_certs = True, connection_class = RequestsHttpConnection, timeout = 120 # Deleting snapshots can take a while, so keep the connection open for long enough to get a response. )

try: # Get all snapshots in the repository. snapshot_list = curator.SnapshotList(es, repository=repository_name)

# Filter by age, any snapshot older than two weeks. # snapshot_list.filter_by_age(source='creation_date', direction='older', unit='weeks', unit_count=2)

# Delete the old snapshots. curator.DeleteSnapshots(snapshot_list, retry_interval=30, retry_count=3).do_action() except (curator.exceptions.SnapshotInProgress, curator.exceptions.NoSnapshots, curator.exceptions.FailedExecution) as e: print(e)

# Split into two try blocks. We still want to try and take a snapshot if deletion failed. try: # Get the list of indices. # You can filter this list if you didn't want to snapshot all indices. index_list = curator.IndexList(es)

# Take a new snapshot. This operation can take a while, so we don't want to wait for it to complete. curator.Snapshot(index_list, repository=repository_name, name=snapshot_name, wait_for_completion=False).do_action() except (curator.exceptions.SnapshotInProgress, curator.exceptions.FailedExecution) as e: print(e)

host、region、snapshot_name、および repository_name の値を更新する必要があります。出力が詳細すぎる場合は、logging.INFO を logging.WARN に変更できます。

API バージョン 2015-01-01160

Page 169: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドBasic Settings

スナップショットの作成と削除にはしばらく時間がかかる場合があるため、このコードは接続タイムアウトおよび Lambda タイムアウトの影響をより強く受けます (したがって追加のログ記録コードがあります)。Elasticsearch クライアントでは、タイムアウトを 120 秒に設定します。DeleteSnapshots 関数で、Amazon ES ドメインからのレスポンスの取得に時間がかかる場合は、この値を増やす必要が生じる場合があります。また、Lambda 関数のタイムアウトも、デフォルト値の 3 秒から増やす必要があります。推奨される値については、「the section called “Basic Settings” (p. 161)」を参照してください。

Basic Settingsこの章のコードサンプルには、次の設定をお勧めします。

サンプルコード メモリ タイムアウト

インデックスの削除 128 MB 10 秒

スナップショットの削除 128 MB 3 分

トリガこれらの関数は、一部のイベント (Amazon S3 へのファイルのアップロードなど) に応答するのではなく、スケジュールすることが前提となっています。これらの関数を実行する頻度は調整してください。

サンプルコード サービス ルールタイプ 式の例

インデックスの削除 CloudWatch イベント スケジュール式 rate(1 days)

スナップショットの削除

CloudWatch イベント スケジュール式 rate(4 hours)

アクセス許可この章の両方の Lambda 関数には、すべての Lambda 関数が必要とする基本的なログ記録アクセス許可に加えて、Amazon ES ドメイン用の HTTP メソッドのアクセス許可が必要です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "logs:CreateLogGroup", "Resource": "arn:aws:logs:us-west-1:123456789012:*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-1:123456789012:log-group:/aws/lambda/your-lambda-function:*" ] },

API バージョン 2015-01-01161

Page 170: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドアクセス許可

{ "Effect": "Allow", "Action": [ "es:ESHttpPost", "es:ESHttpGet", "es:ESHttpPut", "es:ESHttpDelete" ], "Resource": "arn:aws:es:us-west-1:123456789012:domain/my-domain/*" } ]}

API バージョン 2015-01-01162

Page 171: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドKibana にアクセスできない

Amazon Elasticsearch Service トラブルシューティング

このセクションでは、一般的な Amazon Elasticsearch Service の問題の特定と解決方法について説明します。AWS サポートに問い合わせる前に、このセクションの情報を参照してください。

Kibana にアクセスできないKibana エンドポイントは、署名付きリクエストをサポートしていません。ドメインのアクセスコントロールポリシーで、特定の IAM ユーザーまたはロールにのみアクセスが許可されており、Kibana の認証 (p. 117) を設定していない場合、Kibana にアクセスしようとしたときに、次のエラーが発生する場合があります。

"User: anonymous is not authorized to perform: es:ESHttpGet"

Amazon ES ドメインで VPC アクセスを使用している場合、このエラーは発生しない可能性があります。代わりに、リクエストがタイムアウトする可能性があります。この問題の修正、および利用できるさまざまな設定オプションの詳細については、「the section called “Kibana へのアクセスのコントロール” (p. 111)」、「the section called “VPC ドメインのアクセスポリシーについて” (p. 134)」、および「thesection called “Identity and Access Management” (p. 50)」を参照してください。

VPC ドメインにアクセスできない「the section called “VPC ドメインのアクセスポリシーについて” (p. 134)」および「the section called“VPC ドメインのテスト” (p. 135)」を参照してください。

読み取り専用状態のクラスター以前のバージョンと比較して、Elasticsearch 7.x では、別のシステムを使用してクラスターの調整を行います。この新しいシステムでは、クラスターがクォーラムを失うと、アクションを実行するまでクラスターは使用できなくなります。クォーラム損失には 2 つの形式があります。

• クラスターが専用マスターノードを使用している場合は、半分以上が利用できないときにクォーラム損失が発生します。

• クラスターで専用マスターノードを使用していない場合は、データノードの半分以上が利用できないときにクォーラム損失が発生します。

クォーラム損失が発生し、クラスターに複数のノードがある場合、Amazon ES はクォーラムを復元し、クラスターを読み取り専用状態にします。これには2つのオプションがあります。

• 読み取り専用状態を削除し、クラスターをそのまま使用します。• スナップショットからクラスターまたは個々のインデックスを復元します (p. 103)。

クラスターをそのまま使用する場合は、次のリクエストを使用してクラスターの状態が緑色であることを確認します。

API バージョン 2015-01-01163

Page 172: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド赤のクラスター状態

GET _cat/health?v

クラスターの状態が赤の場合、スナップショットからクラスターを復元することをお勧めします。トラブルシューティングのステップについては、the section called “赤のクラスター状態” (p. 164) もあわせてお読みください。クラスターの状態が緑色の場合は、次のリクエストを使用して、予想されるすべてのインデックスが存在することを確認します。

GET _cat/indices?v

次に、いくつかの検索を実行して、予想されるデータが存在することを確認します。存在する場合は、次のリクエストを使用して読み取り専用状態を削除できます。

PUT _cluster/settings{ "persistent": { "cluster.blocks.read_only": false }}

クォーラム損失が発生し、クラスターにノードが 1 つしかない場合、Amazon ES はノードを置き換え、クラスターを読み取り専用状態にしません。それ以外の場合、オプションは同じです。つまり、クラスターをそのまま使用するか、スナップショットから復元します。

どちらの場合も、 Amazon ES は、Personal Health Dashboard に 2 つのイベントを送信します。最初のステップでは、クォーラムの損失が通知されます。2 番目のステップは、 Amazon ES でクォーラムが正常に復元された場合に発生します。Personal Health Dashboard の使用方法の詳細については、「AWSHealth ユーザーガイド」を参照してください。

赤のクラスター状態赤いクラスター状態は、少なくとも 1 つのプライマリシャードとそのレプリカがノードに割り当てられていないことを意味します。Amazon ES は、赤いクラスター状態が続く限り、正常なインデックスの場合でも自動スナップショットの取得を停止します。

赤のクラスター状態の最も一般的な原因は、クラスターノードの障害 (p. 168)と、継続的な高負荷によるElasticsearch プロセスのクラッシュです。

Note

Amazon ES は自動スナップショットを 14 日間 保存するため、赤のクラスター状態が 2 週間以上続くと、クラスターのデータが完全に失われることになります。Amazon ES ドメインで赤のクラスター状態になると、自分で問題に対処するか、サポートチームに支援を依頼するかを選ぶよう、AWS サポート から求められる場合があります。CloudWatch アラーム (p. 147)を設定して、赤のクラスター状態が発生したときに通知を受けることもできます。

最終的に、赤のシャードにより赤のクラスターが発生し、赤のインデックスにより赤のシャードが発生します。赤のクラスター状態の原因となっているインデックスを識別するため、Elasticsearch にはいくつかの有用な API が用意されています。

• GET /_cluster/allocation/explain は、見つかった最初の割り当てられていないシャードを選択し、そのシャードをノードに割り当てることができない理由について説明します。

{ "index": "test4",

API バージョン 2015-01-01164

Page 173: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド処理の継続的な高負荷からの復旧

"shard": 0, "primary": true, "current_state": "unassigned", "can_allocate": "no", "allocate_explanation": "cannot allocate because allocation is not permitted to any of the nodes"}

• GET /_cat/indices?v はヘルスステータス、ドキュメントの数、および各インデックスのディスク使用量を表示します。

health status index uuid pri rep docs.count docs.deleted store.size pri.store.sizegreen open test1 30h1EiMvS5uAFr2t5CEVoQ 5 0 820 0 14mb 14mbgreen open test2 sdIxs_WDT56afFGu5KPbFQ 1 0 0 0 233b 233bgreen open test3 GGRZp_TBRZuSaZpAGk2pmw 1 1 2 0 14.7kb 7.3kbred open test4 BJxfAErbTtu5HBjIXJV_7A 1 0green open test5 _8C6MIXOSxCqVYicH3jsEA 1 0 7 0 24.3kb 24.3kb

赤のインデックスを削除することが、赤のクラスター状態を修正するための最速の方法です。赤のクラスター状態の理由によっては、Amazon ES ドメインをスケールし、より大きなインスタンスタイプ、より多くのインスタンス、またはより EBS ベースのストレージを使用して、問題のあるインデックスの再作成を試みることができます。

問題のあるインデックスを削除することが可能でない場合、スナップショットを復元する (p. 103)、インデックスからドキュメントを削除する、インデックスの設定を変更する、レプリカの数を減らす、または他のインデックスを削除してディスク領域を解放することができます。重要なステップは、Amazon ES ドメインを再設定する前に、赤のクラスター状態を解決することです。赤のクラスター状態のドメインを再設定すると、問題が複雑化し、状態を解決するまで、設定状態が [Processing (処理中)] のままドメインがスタックする可能性があります。

処理の継続的な高負荷からの復旧赤のクラスター状態がデータノードの処理の継続的な高負荷によるものであるかどうかを判断するには、次のクラスターメトリクスをモニタリングします。

関連するメトリクス 説明 復旧

JVMMemoryPressure クラスター内のすべてのデータノードで使用する Java ヒープのパーセンテージを指定します。このメトリクスの [Maximum (最大)] の統計を表示し、Java ガベージコレクターが十分なメモリの回収に失敗したことで生じる少量ずつのメモリプレッシャーを検出します。このパターンは通常、複雑なクエリまたは大きいデータフィールドが原因です。

「古い世代」のオブジェクトスペースの75% がいっぱいになると、ConcurrentMark Sweep (CMS) ガベージコレクターがトリガーされます。このコレクター

JVM のメモリ サーキットブレーカーを設定します。詳細については、「the section called “JVMOutOfMemoryError” (p. 167)」を参照してください。

問題が解決しない場合は、不要なインデックスを削除する、ドメインへのリクエストの数または複雑性を減少する、インスタンスを追加する、あるいはより大きなインスタンスタイプを使用します。

API バージョン 2015-01-01165

Page 174: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド黄色のクラスター状態

関連するメトリクス 説明 復旧は、他のスレッドとともに実行され、一時停止を最小限に抑えます。通常のコレクション中に CMS が十分なメモリを再利用できない場合、Elasticsearch は、すべてのスレッドを停止する別のガベージコレクションアルゴリズムをトリガーします。すべてが停止されるコレクションではノードは応答しなくなり、クラスターの安定性に影響を与える可能性があります。

メモリ使用が継続的に増加する場合、Elasticsearch はメモリ不足エラーにより最終的にクラッシュします。使用率を 80% 以下にすることをお勧めします。

_nodes/stats/jvm API は、JVM 統計の有用な要約、メモリプールの使用量、およびガベージコレクションの情報を提供します。

GET elasticsearch_domain/_nodes/stats/jvm?pretty

CPUUtilization クラスター内のデータノードで使用する CPU リソースのパーセンテージを指定します。このメトリクスの [Maximum(最大)] の統計を表示し、使用量の多い継続的なパターンを探します。

データノードを追加するか、既存のデータノードのインスタンスタイプのサイズを大きくします。詳細については、「thesection called “Amazon ES ドメインの設定” (p. 14)」を参照してください。

ノード クラスターのノード数の指定。このメトリクスの [Minimum (最小)] の統計を表示します。サービスがクラスターの新しいインスタンス群をデプロイすると、この値が変動します。

データノードを追加します。詳細については、「the sectioncalled “Amazon ES ドメインの設定” (p. 14)」を参照してください。

黄色のクラスター状態黄色のクラスター状態は、すべてのインデックスのプライマリシャードがクラスター内のノードに割り当てられ、少なくとも 1 つのインデックスのレプリカシャードは割り当てられていないことを意味します。単一ノードクラスターでは、Amazon ES がレプリカを割り当てることができる他のノードがないため、常に黄色のクラスター状態で初期化されることに注意してください。緑のクラスター状態を確保するには、ノード数を増やします。詳細については、「the section called “Amazon ES ドメインのサイジング” (p. 141)」および「the section called “Amazon ES ドメインの設定” (p. 14)」を参照してください。

ClusterBlockException以下の理由により、ClusterBlockException エラーを受け取る場合があります。

API バージョン 2015-01-01166

Page 175: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド使用可能なストレージ領域の不足

使用可能なストレージ領域の不足シャードの移動に必要なストレージ領域を持つノードがなければ、それ以降はドキュメントの追加やインデックスの作成などの基本的な書き込み操作が失敗する可能性があります。the section called “ストレージ要件の計算” (p. 142) は、Amazon ES によるディスク容量の使用の概要を提供します。

問題を回避するには、Amazon ES コンソールで FreeStorageSpace メトリクスをモニタリングし、FreeStorageSpace がしきい値を下回るとトリガーされる CloudWatch アラームを作成 (p. 147)します。GET /_cat/allocation?v は、シャードの割り当てとディスク使用量の有用な概要も提供します。ストレージ容量の不足に関連する問題を解決するには、Amazon ES ドメインをスケールし、より大きなインスタンスタイプ、より多くのインスタンス、またはより EBS ベースのストレージを使用します。手順については、「the section called “Amazon ES ドメインの設定” (p. 14)」を参照してください。

メモリ不足によるディスクのブロック[JVMMemoryPressure] メトリクスが 30 分の間 92% を超えると、クラスターが赤の状態に到達しないように、Amazon ES は保護メカニズムをトリガーし、すべての書き込み操作をブロックします。保護が有効な状態では、書き込みオペレーションは ClusterBlockException エラーで失敗し、新しいインデックスは作成できず IndexCreateBlockException エラーがスローされます。

[JVMMemoryPressure] メトリクスが 88% 以下に戻った状態が 5 分間続くと、保護が無効になり、クラスターへの書き込み操作はブロックされません。

JVM OutOfMemoryErrorJVM の OutOfMemoryError は、一般的に次のいずれかの JVM サーキットブレーカーに到達したことを意味します。

サーキットブレーカー 説明 クラスター設定プロパティ

親ブレーカー すべてのサーキットブレーカーで JVM ヒープメモリのパーセンテージの合計に許可されます。デフォルト値は70% です。

indices.breaker.total.limit

フィールド データ ブレーカー

JVM ヒープメモリのパーセンテージは、メモリに単一のデータフィールドをロードすることを許可します。デフォルト値は 60% です。大きいフィールドを使用してデータをアップロードする場合は、この上限を引き上げることをお勧めします。

indices.breaker.fielddata.limit

リクエストブレーカー JVM ヒープメモリのパーセンテージは、サービスリクエストに応答するために使用されるデータ構造に許可されます。デフォルト値は 40% です。サービスリクエストが集計の計算を含む場合は、この上限を引き上げることをお勧めします。

indices.breaker.request.limit

API バージョン 2015-01-01167

Page 176: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド障害が発生したクラスターノード

障害が発生したクラスターノードAmazon EC2 インスタンスでは、予期しない終了と再起動が発生する場合があります。通常、Amazon ESはノードを再起動します。ただし、Elasticsearch クラスターの 1 つ以上のノードが失敗した状態のままであることがあります。

この状態を確認するには、Amazon ES コンソールでドメインダッシュボードを開きます。[クラスターの状態] タブを選択後、[ノード] メトリクスを選択します。報告されるノード数がクラスターに設定した数より小さいかどうかを調べます。メトリクスが、1 つ以上のノードが 1 日以上ダウンしていることを示している場合は、AWS サポートまでお問い合わせください。

CloudWatch アラーム (p. 147)を設定して、この問題が発生したときに通知を受けることもできます。

Note

[Nodes (ノード)] メトリクスは、クラスター設定の変更中およびサービスの定期的なメンテナンス中は、正確ではありません。この動作は想定されるものです。メトリクスは、すぐに正しい数のクラスターノードを報告します。詳細については、「the section called “設定変更について” (p. 26)」を参照してください。

クラスターを予期しないノードの終了と再起動から保護するには、Amazon ES ドメインで各インデックスに少なくとも 1 つのレプリカを作成します。

インデックスが閉じないAmazon ES は _close API をサポートしていません。スナップショットからインデックスを復元する場合は、既存のインデックスを削除することができます (インデックス再生成の前または後)。もう 1 つのオプションは、rename_pattern および rename_replacement フィールドを使用して、復元時にインデックスの名前を変更することです。

POST /_snapshot/my-repository/my-snapshot/_restore{ "indices": "my-index-1,myindex-2", "include_global_state": true, "rename_pattern": "my-index-(\\d)", "rename_replacement": "restored-my-index-$1"}

インデックスの再生成や縮小、またはインデックスを分割する予定がある場合、操作を実行する前に書き込みを停止します。

ノードに SSH 接続できないElasticsearch クラスターのノードへのアクセスに SSH 接続が使用できず、elasticsearch.yml を直接変更できません。代わりに、コンソール、AWS CLI、または SDK を使用してドメインを設定します。Elasticsearch REST API を使用して、いくつかのクラスターレベル設定を指定することもできます。詳細については、「Amazon ES 設定 API リファレンス (p. 196)」と「the section called “サポートされている Elasticsearch オペレーション” (p. 174)」を参照してください。

クラスターのパフォーマンスをより詳細に把握する必要がある場合は、CloudWatch にエラーログとスローログを公開 (p. 21)できます。

API バージョン 2015-01-01168

Page 177: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド「オブジェクトのストレージクラスで

有効ではない」スナップショットエラー

「オブジェクトのストレージクラスで有効ではない」スナップショットエラー

Amazon ES スナップショットは、Glacier ストレージクラスをサポートしていません。このエラーは、オブジェクトを Glacier ストレージクラスに移行するライフサイクルが S3 バケットに含まれている場合に、スナップショットのリストを取得しようとすると発生する場合があります。

バケットからスナップショットを復元する必要がある場合は、Glacier からオブジェクトを復元し、オブジェクトを新しいバケットにコピーして、スナップショットリポジトリとして新しいバケットを登録 (p. 99)します。

無効なホストヘッダーAmazon ES では、クライアントがリクエストヘッダーで Host を指定する必要があります。有効な Host値は、次のような、https:// のないドメインエンドポイントです。

Host: search-my-sample-domain-ih2lhn2ew2scurji.us-west-2.es.amazonaws.com

リクエスト作成時に Invalid Host Header エラーを受け取った場合、クライアントが Host ヘッダーに Amazon ES ドメインエンドポイント (IP アドレスなどではなく) を含めているかどうかを確認してください。

アップグレード後はダウングレードできないインプレースアップグレード (p. 105)は元に戻すことができませんが、AWSサポートに連絡すれば、新しいドメインで自動的なアップグレード前のスナップショットを復元する支援が得られます。たとえば、Elasticsearch 5.6 から 6.4 にアップグレードする場合、AWS サポートは新しい Elasticsearch 5.6 ドメインでアップグレード前のスナップショットの復元を支援できます。元のドメインの手動スナップショットを作成した場合は、このステップを自分で実行 (p. 97)することができます。

すべてのリージョンのドメインの概要が必要次のスクリプトでは、Amazon EC2 describe-regions AWS CLI コマンドを使用して、Amazon ES を利用できる可能性のあるすべてのリージョンのリストを作成できます。次に、リージョンごとに list-domain-names を呼び出します。

for region in `aws ec2 describe-regions --output text | cut -f4`do echo "\nListing domains in region '$region':" aws es list-domain-names --region $region --query 'DomainNames'done

リージョンごとに次の出力が表示されます。

Listing domains in region:'us-west-2'...[ { "DomainName": "sample-domain" }

API バージョン 2015-01-01169

Page 178: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドKibana 使用時のブラウザエラー

]

リージョンで Amazon ES が利用できない場合は、「エンドポイント URL に接続できませんでした」というメッセージが返されます。

Kibana 使用時のブラウザエラーKibana を使用して、Amazon ES ドメインのデータを表示する場合、ブラウザは HTTP レスポンスオブジェクトのサービスエラーメッセージをラップします。原因となるサービスエラーを表示し、デバッグを支援するため、Chrome の開発者モードなどのウェブブラウザで一般的に利用されている開発ツールを使用できます。

Chrome でサービスエラーを表示する

1. メニューから、[View (表示)]、[Developer (開発者)]、[Developer Tools (開発者用ツール)] の順に選択します。

2. [Network (ネットワーク)] タブを選択します。3. [Status (ステータス)] 列で、ステータスが 500 の任意の HTTP セッションを選択します。

Firefox でサービスエラーを表示する

1. メニューで、[Tools (ツール)]、[Web Developer (ウェブ開発者)]、[Network (ネットワーク)] の順に選択します。

2. ステータスが 500 の任意の HTTP セッションを選択します。3. [Response (レスポンス)] タブを選択して、サービス応答を表示します。

VPC アクセス選択後の許可されていない操作Amazon ES コンソールを使用して新しいドメインを作成する場合、VPC またはパブリックアクセスを選択するオプションがあります。[VPC access (VPC アクセス)] を選択した場合、Amazon ES は VPC 情報をクエリし、適切なアクセス許可がない場合は失敗します。

You are not authorized to perform this operation. (Service: AmazonEC2; Status Code: 403; Error Code: UnauthorizedOperation

このクエリを有効にするには、ec2:DescribeVpcs、ec2:DescribeSubnets、およびec2:DescribeSecurityGroups オペレーションへのアクセス権を持っている必要があります。この要件は、コンソールのみを対象としています。AWS CLI を使用して VPC エンドポイントでドメインを作成して設定する場合、この操作へのアクセス権は必要ありません。

VPC ドメイン作成後、読み込みでスタックするVPC アクセスを使用した新規のドメインを作成後、ドメインの [Configuration state (設定の状態)] が[Loading (読み込み中)] から先に進行しない場合があります。この問題が発生する場合、お使いのリージョンに対して AWS Security Token Service (AWS STS) が無効になっている可能性があります。

VPC に VPC エンドポイントを追加するには、Amazon ES がAWSServiceRoleForAmazonElasticsearchService ロールを引き受ける必要があります。したがって、指定するリージョンに VPC アクセスを使用する新規のドメインを作成するために AWS STS が有効

API バージョン 2015-01-01170

Page 179: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドAlpine Linux から接続できない

化されている必要があります。AWS STS の有効化と無効化の詳細については、「IAM ユーザーガイド」を参照してください。

Alpine Linux から接続できないAlpine Linux では、DNS レスポンスのサイズが 512 バイトに制限されています。Alpine Linux からAmazon ES ドメインに接続しようとした場合、ドメインが VPC 内にあり、ノードが 20 を超えていると、DNS 解決が失敗することがあります。ドメインが VPC 内にある場合は、他の Linux ディストリビューション (Debian、Ubuntu、CentOS、Red Hat Enterprise Linux、Amazon Linux 2 など) を使用して接続することをお勧めします。

SDK を使用する場合の証明書のエラーAWS SDK ではご使用のコンピュータ上の CA 証明書が使用されるため、AWS サーバー上の証明書が変更されると、SDK を使用しようとした際に接続エラーが発生することがあります。エラーメッセージはさまざまですが、通常は次のテキストが含まれています。

Failed to query Elasticsearch...SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

このようなエラーは、コンピュータ上の CA 証明書とオペレーティングシステムを最新の状態にしておくことで回避できます。ユーザーが自分のコンピュータを管理していない企業環境でこの問題が発生した場合は、必要に応じて管理者から支援を得て更新プロセスを行う必要があります。

以下のリストは、オペレーティングシステムと Java の最小バージョンを示しています。

• 2005 年 1 月以降の更新プログラムがインストールされた Microsoft Windows バージョンでは、必要なCA が信頼リストに 1 つ以上含まれています。

• Mac OS X 10.4 with Java for Mac OS X 10.4 Release 5 (2007 年 2 月)、Mac OS X 10.5 (2007 年 10月)、および以降のバージョンでは、必要な CA が信頼リストに 1 つ以上含まれています。

• Red Hat Enterprise Linux 5 (2007 年 3 月)、6、7、および CentOS 5、6、および 7 では、必要な CA がデフォルトの CA 信頼リストに 1 つ以上含まれています。

• Java 1.4.2_12 (2006 年 5 月)、5 Update 2 (2005 年 3 月)、および以降のすべてのバージョン (Java 6(2006 年 12 月)、7、8 を含む) では、必要な CA がデフォルトの CA 信頼リストに 1 つ以上含まれています。

以下に示す 3 つの証明機関があります。

• Amazon Root CA 1• Starfield Services Root Certificate Authority - G2• Starfield Class 2 Certification Authority

最初の 2 つの機関からのルート証明書は Amazon Trust Services から入手できますが、もっと簡単なソリューションは、コンピュータを最新の状態にしておくことです。ACM から提供される証明書の詳細については、AWS Certificate Manager に関するよくある質問を参照してください。

Note

現時点では、us-east-1 リージョン内の Amazon ES ドメインには別の機関からの証明書が使用されます。近い将来、これらの新しい証明機関が使用されるように、リージョンを更新する予定です。

API バージョン 2015-01-01171

Page 180: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドサポートされるインスタンスタイプ

Amazon Elasticsearch Service の全般的なリファレンス

Amazon Elasticsearch Service (Amazon ES) は、さまざまなインスタンス、オペレーション、プラグイン、他のリソースをサポートしています。

トピック• サポートされるインスタンスタイプ (p. 172)• Elasticsearch バージョン別の機能 (p. 173)• サポートされている Elasticsearch オペレーション (p. 174)• サポートされるプラグイン (p. 186)• サポートされている他のリソース (p. 191)

サポートされるインスタンスタイプAmazon ES では、次のインスタンスタイプがサポートされています。すべてのリージョンで、すべてのインスタンスタイプがサポートされているわけではありません。可用性に関する詳細については、AmazonElasticsearch Service 料金表を参照してください。

お客様のユースケースに適切なインスタンスタイプ関する情報についてはthe section called “Amazon ESドメインのサイジング” (p. 141)、the section called “EBS ボリュームサイズの制限” (p. 238)、およびthesection called “ネットワークの制限” (p. 240) を参照してください。

インスタンスタイプ

制限

C4

C5 C5 インスタンスタイプには、Elasticsearch バージョン 5.1 以降が必要です。

I2

I3 I3 インスタンスタイプには、Elasticsearch バージョン 5.1 以降が必要であり、EBSストレージボリュームはサポートされません。

M3 M3 インスタンスタイプは、保管時のデータの暗号化をサポートしていません。

M4

M5 M5 インスタンスタイプには、Elasticsearch バージョン 5.1 以降が必要です。

R3 R3 インスタンスタイプは、保管時のデータの暗号化をサポートしていません。

R4

R5 R5 インスタンスタイプには、Elasticsearch バージョン 5.1 以降が必要です。

API バージョン 2015-01-01172

Page 181: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドElasticsearch バージョン別の機能

インスタンスタイプ

制限

T2 • T2 インスタンスタイプは、ドメインのインスタンス数が 10 以下の場合のみ使用できます。

• t2.micro.elasticsearch インスタンスタイプは、Elasticsearch 1.5 および 2.3のみをサポートします。

• T2 インスタンスタイプは、保管時のデータの暗号化や UltraWarm ストレージをサポートしていません。

Tip

専用マスターノード (p. 144)およびデータノードの異なるインスタンスタイプを使用できます。

Elasticsearch バージョン別の機能Amazon ES の多くの機能には、Elasticsearch の最小バージョン要件があります。

機能 Elasticsearch の最小バージョン

エラーおよびスローログの発行

5.1

Curator CLI のサポート

5.1

保管時のデータの暗号化

5.1

Kibana のCognito 認証

5.1

Elasticsearch のインプレースアップグレード

5.1

時間単位の自動スナップショット

5.3

ノード間の暗号化

6.0

Java 高レベルREST クライアントのサポート

6.0

アラート 6.2

SQL 6.5

他の機能には、最小バージョン要件はありません。

• VPC サポート

API バージョン 2015-01-01173

Page 182: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドサポートされている Elasticsearch オペレーション

• ドメインへのすべてのトラフィックに HTTPS を要求する• マルチ AZ のサポート• 専用マスターノード

各バージョンの Elasticsearch API の詳細については、「the section called “サポートされているElasticsearch オペレーション” (p. 174)」を参照してください。

サポートされている Elasticsearch オペレーションAmazon ES は、多くのバージョンの Elasticsearch をサポートしています。以下のトピックでは、各バージョンで Amazon ES がサポートするオペレーションを示します。

トピック• API の重要な相違点 (p. 174)• バージョン 7.1 (p. 175)• バージョン 6.8 (p. 176)• バージョン 6.7 (p. 177)• バージョン 6.5 (p. 178)• バージョン 6.4 (p. 179)• バージョン 6.3 (p. 180)• バージョン 6.2 (p. 181)• バージョン 6.0 (p. 181)• バージョン 5.6 (p. 182)• バージョン 5.5 (p. 183)• バージョン 5.3 (p. 184)• バージョン 5.1 (p. 185)• バージョン 2.3 (p. 186)• バージョン 1.5 (p. 186)

API の重要な相違点クラスター設定Elasticsearch 5.3 まで、Amazon ES ドメインに対する _cluster/settings API では、HTTP PUT メソッドのみがサポートされており、GET メソッドはサポートされていませんでした。より新しいバージョンでは、以下の例に示すように、GET メソッドもサポートされるようになっています。

GET https://domain.region.es.amazonaws.com/_cluster/settings?pretty

戻り値の例を次に示します。

{ "persistent": { "cluster": { "routing": { "allocation": { "cluster_concurrent_rebalance": "2", "node_concurrent_recoveries": "2", "disk": {

API バージョン 2015-01-01174

Page 183: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドバージョン 7.1

"watermark": { "low": "1.35gb", "flood_stage": "0.45gb", "high": "0.9gb" } }, "node_initial_primaries_recoveries": "4" } } }, "indices": { "recovery": { "max_bytes_per_sec": "40mb" } } }}

縮小_shrink API により、アップグレード、設定変更、ドメインの削除が失敗する場合があります。Elasticsearch バージョン 5.3 または 5.1 を実行するドメインでは、使用しないことをお勧めします。これらのバージョンは収縮させたインデックススナップショットの復元の失敗を引き起こす可能性があるバグがあります。

他の Elasticsearch バージョンの _shrink API を使用している場合は、縮小操作を開始する前に次のリクエストを作成します。

PUT https://domain.region.es.amazonaws.com/source-index/_settings{ "settings": { "index.routing.allocation.require._name": "name-of-the-node-to-shrink-to", "index.blocks.read_only": true }}

縮小操作の完了後に次のリクエストを作成します。

PUT https://domain.region.es.amazonaws.com/source-index/_settings{ "settings": { "index.routing.allocation.require._name": null, "index.blocks.read_only": false }}

バージョン 7.1Elasticsearch 7.1 の場合、Amazon ES では次のオペレーションをサポートしています。

• /_alias

• /_aliases

• /_all

• /_analyze

• /_bulk

• /_delete_by_query1

• /_explain

• /_field_stats

• /_flush

• /_forcemerge (インデックスのみ)

• /_scripts3

/_search2

• /_search profile

• /_segments (インデックスのみ)

• /_shard_stores

API バージョン 2015-01-01175

Page 184: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドバージョン 6.8

• /_cache/clear (インデックスのみ)

• /_cat

• /_cluster/allocation/explain

• /_cluster/health

• /_cluster/pending_tasks

• /_cluster/settings を使用する複数のプロパティ 4:• action.auto_create_index

• action.search.shard_count.limit

• indices.breaker.fielddata.limit

• indices.breaker.request.limit

• indices.breaker.total.limit

• cluster.max_shards_per_node

• cluster.blocks.read_only

• /_cluster/state

• /_cluster/stats

• /_count

• /_ingest

• /_mapping

• /_mget

• /_msearch

• /_mtermvectors

• /_nodes

• /_plugin/kibana

• /_rank_eval

• /_recovery (インデックスのみ)

• /_refresh

• /_reindex1

• /_rollover

• /_shrink5

• /_snapshot

• /_split

• /_stats

• /_status

• /_tasks

• /_template

• /_termvectors (インデックスのみ)

• /_update3

• /_update_by_query1

• /_validate

1. クラスター設定を変更すると、これらの操作が完了する前に中断される可能性があります。リクエストが正常に完了したことを確認するには、これらの操作とともに /_tasks 操作を使用することをお勧めします。

2. メッセージ本文の /_search/scroll に対する DELETE リクエストでは、"Content-Length" をHTTP ヘッダーに指定する必要があります。ほとんどのクライアントでは、このヘッダーがデフォルトで追加されます。scroll_id 値で = 文字に関する問題を回避するには、クエリ文字列ではなくリクエストボディを使用して、scroll_id 値を Amazon ES に渡します。

3. スクリプトの使用に関する考慮事項については、「the section called “サポートされている他のリソース” (p. 191)」を参照してください。

4. PUT メソッドを参照してください。GET メソッドの詳細については、「the section called “API の重要な相違点” (p. 174)」を参照してください。

5. 「the section called “縮小” (p. 175)」を参照してください。

バージョン 6.8Elasticsearch 6.8 の場合、Amazon ES では次のオペレーションをサポートしています。

• /_alias

• /_aliases

• /_all

• /_analyze

• /_bulk

• /_cache/clear (インデックスのみ)

• /_cat

• /_cluster/allocation/explain

• /_delete_by_query1

• /_explain

• /_field_stats

• /_flush

• /_forcemerge (インデックスのみ)

• /_ingest

• /_mapping

• /_mget

• /_msearch

• /_scripts3

/_search2

• /_search profile

• /_segments (インデックスのみ)

• /_shard_stores

• /_shrink5

• /_snapshot

• /_split

API バージョン 2015-01-01176

Page 185: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドバージョン 6.7

• /_cluster/health

• /_cluster/pending_tasks

• /_cluster/settings を使用する複数のプロパティ 4:• action.auto_create_index

• action.search.shard_count.limit

• indices.breaker.fielddata.limit

• indices.breaker.request.limit

• indices.breaker.total.limit

• cluster.max_shards_per_node

• /_cluster/state

• /_cluster/stats

• /_count

• /_mtermvectors

• /_nodes

• /_plugin/kibana

• /_rank_eval

• /_recovery (インデックスのみ)

• /_refresh

• /_reindex1

• /_rollover

• /_stats

• /_status

• /_tasks

• /_template

• /_termvectors (インデックスのみ)

• /_update3

• /_update_by_query1

• /_validate

1. クラスター設定を変更すると、これらの操作が完了する前に中断される可能性があります。リクエストが正常に完了したことを確認するには、これらの操作とともに /_tasks 操作を使用することをお勧めします。

2. メッセージ本文の /_search/scroll に対する DELETE リクエストでは、"Content-Length" をHTTP ヘッダーに指定する必要があります。ほとんどのクライアントでは、このヘッダーがデフォルトで追加されます。scroll_id 値で = 文字に関する問題を回避するには、クエリ文字列ではなくリクエストボディを使用して、scroll_id 値を Amazon ES に渡します。

3. スクリプトの使用に関する考慮事項については、「the section called “サポートされている他のリソース” (p. 191)」を参照してください。

4. PUT メソッドを参照してください。GET メソッドの詳細については、「the section called “API の重要な相違点” (p. 174)」を参照してください。

5. 「the section called “縮小” (p. 175)」を参照してください。

バージョン 6.7Elasticsearch 6.7 の場合、Amazon ES では次の操作がサポートされています。

• /_alias

• /_aliases

• /_all

• /_analyze

• /_bulk

• /_cache/clear (インデックスのみ)

• /_cat

• /_cluster/allocation/explain

• /_cluster/health

• /_cluster/pending_tasks

• /_cluster/settings を使用する複数のプロパティ 4:• action.auto_create_index

• /_delete_by_query1

• /_explain

• /_field_stats

• /_flush

• /_forcemerge (インデックスのみ)

• /_ingest

• /_mapping

• /_mget

• /_msearch

• /_mtermvectors

• /_nodes

• /_plugin/kibana

• /_rank_eval

• /_scripts3

/_search2

• /_search profile

• /_segments (インデックスのみ)

• /_shard_stores

• /_shrink5

• /_snapshot

• /_split

• /_stats

• /_status

• /_tasks

• /_template

• /_termvectors (インデックスのみ)

API バージョン 2015-01-01177

Page 186: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドバージョン 6.5

• action.search.shard_count.limit

• indices.breaker.fielddata.limit

• indices.breaker.request.limit

• indices.breaker.total.limit

• cluster.max_shards_per_node

• /_cluster/state

• /_cluster/stats

• /_count

• /_recovery (インデックスのみ)

• /_refresh

• /_reindex1

• /_rollover

• /_update3

• /_update_by_query1

• /_validate

1. クラスター設定を変更すると、これらの操作が完了する前に中断される可能性があります。リクエストが正常に完了したことを確認するには、これらの操作とともに /_tasks 操作を使用することをお勧めします。

2. メッセージ本文の /_search/scroll に対する DELETE リクエストでは、"Content-Length" をHTTP ヘッダーに指定する必要があります。ほとんどのクライアントでは、このヘッダーがデフォルトで追加されます。scroll_id 値で = 文字に関する問題を回避するには、クエリ文字列ではなくリクエストボディを使用して、scroll_id 値を Amazon ES に渡します。

3. スクリプトの使用に関する考慮事項については、「the section called “サポートされている他のリソース” (p. 191)」を参照してください。

4. PUT メソッドを参照してください。GET メソッドの詳細については、「the section called “API の重要な相違点” (p. 174)」を参照してください。

5. 「the section called “縮小” (p. 175)」を参照してください。

バージョン 6.5Elasticsearch 6.5 の Amazon ES では、次の操作がサポートされています。

• /_alias

• /_aliases

• /_all

• /_analyze

• /_bulk

• /_cache/clear (インデックスのみ)

• /_cat

• /_cluster/allocation/explain

• /_cluster/health

• /_cluster/pending_tasks

• /_cluster/settings を使用する複数のプロパティ 4:• action.auto_create_index

• action.search.shard_count.limit

• indices.breaker.fielddata.limit

• indices.breaker.request.limit

• indices.breaker.total.limit

• /_cluster/state

• /_cluster/stats

• /_delete_by_query1

• /_explain

• /_field_stats

• /_flush

• /_forcemerge (インデックスのみ)

• /_ingest

• /_mapping

• /_mget

• /_msearch

• /_mtermvectors

• /_nodes

• /_plugin/kibana

• /_rank_eval

• /_recovery (インデックスのみ)

• /_refresh

• /_reindex1

• /_rollover

• /_scripts3

/_search2

• /_search profile

• /_segments (インデックスのみ)

• /_shard_stores

• /_shrink5

• /_snapshot

• /_split

• /_stats

• /_status

• /_tasks

• /_template

• /_termvectors (インデックスのみ)

• /_update3

• /_update_by_query1

• /_validate

API バージョン 2015-01-01178

Page 187: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドバージョン 6.4

• /_count

1. クラスター設定を変更すると、これらの操作が完了する前に中断される可能性があります。リクエストが正常に完了したことを確認するには、これらの操作とともに /_tasks 操作を使用することをお勧めします。

2. メッセージ本文の /_search/scroll に対する DELETE リクエストでは、"Content-Length" をHTTP ヘッダーに指定する必要があります。ほとんどのクライアントでは、このヘッダーがデフォルトで追加されます。scroll_id 値で = 文字に関する問題を回避するには、クエリ文字列ではなくリクエストボディを使用して、scroll_id 値を Amazon ES に渡します。

3. スクリプトの使用に関する考慮事項については、「the section called “サポートされている他のリソース” (p. 191)」を参照してください。

4. PUT メソッドを参照してください。GET メソッドの詳細については、「the section called “API の重要な相違点” (p. 174)」を参照してください。

5. 「the section called “縮小” (p. 175)」を参照してください。

バージョン 6.4Elasticsearch 6.4 の Amazon ES では次の操作がサポートされています。

• /_alias

• /_aliases

• /_all

• /_analyze

• /_bulk

• /_cache/clear (インデックスのみ)

• /_cat

• /_cluster/allocation/explain

• /_cluster/health

• /_cluster/pending_tasks

• /_cluster/settings を使用する複数のプロパティ 4:• action.auto_create_index

• action.search.shard_count.limit

• indices.breaker.fielddata.limit

• indices.breaker.request.limit

• indices.breaker.total.limit

• /_cluster/state

• /_cluster/stats

• /_count

• /_delete_by_query1

• /_explain

• /_field_stats

• /_flush

• /_forcemerge (インデックスのみ)

• /_ingest

• /_mapping

• /_mget

• /_msearch

• /_mtermvectors

• /_nodes

• /_plugin/kibana

• /_rank_eval

• /_recovery (インデックスのみ)

• /_refresh

• /_reindex1

• /_rollover

• /_scripts3

/_search2

• /_search profile

• /_segments (インデックスのみ)

• /_shard_stores

• /_shrink5

• /_snapshot

• /_split

• /_stats

• /_status

• /_tasks

• /_template

• /_termvectors (インデックスのみ)

• /_update3

• /_update_by_query1

• /_validate

1. クラスター設定を変更すると、これらの操作が完了する前に中断される可能性があります。リクエストが正常に完了したことを確認するには、これらの操作とともに /_tasks 操作を使用することをお勧めします。

2. メッセージ本文の /_search/scroll に対する DELETE リクエストでは、"Content-Length" をHTTP ヘッダーに指定する必要があります。ほとんどのクライアントでは、このヘッダーがデフォルト

API バージョン 2015-01-01179

Page 188: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドバージョン 6.3

で追加されます。scroll_id 値で = 文字に関する問題を回避するには、クエリ文字列ではなくリクエストボディを使用して、scroll_id 値を Amazon ES に渡します。

3. スクリプトの使用に関する考慮事項については、「the section called “サポートされている他のリソース” (p. 191)」を参照してください。

4. PUT メソッドを参照してください。GET メソッドの詳細については、「the section called “API の重要な相違点” (p. 174)」を参照してください。

5. 「the section called “縮小” (p. 175)」を参照してください。

バージョン 6.3Elasticsearch 6.3 の Amazon ES では次の操作がサポートされています。

• /_alias

• /_aliases

• /_all

• /_analyze

• /_bulk

• /_cache/clear (インデックスのみ)

• /_cat

• /_cluster/allocation/explain

• /_cluster/health

• /_cluster/pending_tasks

• /_cluster/settings を使用する複数のプロパティ 4:• action.auto_create_index

• action.search.shard_count.limit

• indices.breaker.fielddata.limit

• indices.breaker.request.limit

• indices.breaker.total.limit

• /_cluster/state

• /_cluster/stats

• /_count

• /_delete_by_query1

• /_explain

• /_field_stats

• /_flush

• /_forcemerge (インデックスのみ)

• /_ingest

• /_mapping

• /_mget

• /_msearch

• /_mtermvectors

• /_nodes

• /_plugin/kibana

• /_rank_eval

• /_recovery (インデックスのみ)

• /_refresh

• /_reindex1

• /_rollover

• /_scripts3

/_search2

• /_search profile

• /_segments (インデックスのみ)

• /_shard_stores

• /_shrink5

• /_snapshot

• /_split

• /_stats

• /_status

• /_tasks

• /_template

• /_termvectors (インデックスのみ)

• /_update3

• /_update_by_query1

• /_validate

1. クラスター設定を変更すると、これらの操作が完了する前に中断される可能性があります。リクエストが正常に完了したことを確認するには、これらの操作とともに /_tasks 操作を使用することをお勧めします。

2. メッセージ本文の /_search/scroll に対する DELETE リクエストでは、"Content-Length" をHTTP ヘッダーに指定する必要があります。ほとんどのクライアントでは、このヘッダーがデフォルトで追加されます。scroll_id 値で = 文字に関する問題を回避するには、クエリ文字列ではなくリクエストボディを使用して、scroll_id 値を Amazon ES に渡します。

3. スクリプトの使用に関する考慮事項については、「the section called “サポートされている他のリソース” (p. 191)」を参照してください。

4. PUT メソッドを参照してください。GET メソッドの詳細については、「the section called “API の重要な相違点” (p. 174)」を参照してください。

5. 「the section called “縮小” (p. 175)」を参照してください。

API バージョン 2015-01-01180

Page 189: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドバージョン 6.2

バージョン 6.2Elasticsearch 6.2 の Amazon ES では次の操作がサポートされています。

• /_alias

• /_aliases

• /_all

• /_analyze

• /_bulk

• /_cache/clear (インデックスのみ)

• /_cat

• /_cluster/allocation/explain

• /_cluster/health

• /_cluster/pending_tasks

• /_cluster/settings を使用する複数のプロパティ 4:• action.auto_create_index

• action.search.shard_count.limit

• indices.breaker.fielddata.limit

• indices.breaker.request.limit

• indices.breaker.total.limit

• /_cluster/state

• /_cluster/stats

• /_count

• /_delete_by_query1

• /_explain

• /_field_stats

• /_flush

• /_forcemerge (インデックスのみ)

• /_ingest

• /_mapping

• /_mget

• /_msearch

• /_mtermvectors

• /_nodes

• /_plugin/kibana

• /_rank_eval

• /_recovery (インデックスのみ)

• /_refresh

• /_reindex1

• /_rollover

• /_scripts3

/_search2

• /_search profile

• /_segments (インデックスのみ)

• /_shard_stores

• /_shrink5

• /_snapshot

• /_split

• /_stats

• /_status

• /_tasks

• /_template

• /_termvectors (インデックスのみ)

• /_update3

• /_update_by_query1

• /_validate

1. クラスター設定を変更すると、これらの操作が完了する前に中断される可能性があります。リクエストが正常に完了したことを確認するには、これらの操作とともに /_tasks 操作を使用することをお勧めします。

2. メッセージ本文の /_search/scroll に対する DELETE リクエストでは、"Content-Length" をHTTP ヘッダーに指定する必要があります。ほとんどのクライアントでは、このヘッダーがデフォルトで追加されます。scroll_id 値で = 文字に関する問題を回避するには、クエリ文字列ではなくリクエストボディを使用して、scroll_id 値を Amazon ES に渡します。

3. スクリプトの使用に関する考慮事項については、「the section called “サポートされている他のリソース” (p. 191)」を参照してください。

4. PUT メソッドを参照してください。GET メソッドの詳細については、「the section called “API の重要な相違点” (p. 174)」を参照してください。

5. 「the section called “縮小” (p. 175)」を参照してください。

バージョン 6.0Elasticsearch 6.0 の Amazon ES では次の操作がサポートされています。

• /_alias

• /_aliases

• /_delete_by_query1

• /_explain

• /_scripts3

/_search2

API バージョン 2015-01-01181

Page 190: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドバージョン 5.6

• /_all

• /_analyze

• /_bulk

• /_cache/clear (インデックスのみ)

• /_cat

• /_cluster/allocation/explain

• /_cluster/health

• /_cluster/pending_tasks

• /_cluster/settings を使用する複数のプロパティ 4:• action.auto_create_index

• action.search.shard_count.limit

• indices.breaker.fielddata.limit

• indices.breaker.request.limit

• indices.breaker.total.limit

• /_cluster/state

• /_cluster/stats

• /_count

• /_field_stats

• /_flush

• /_forcemerge (インデックスのみ)

• /_ingest

• /_mapping

• /_mget

• /_msearch

• /_mtermvectors

• /_nodes

• /_plugin/kibana

• /_recovery (インデックスのみ)

• /_refresh

• /_reindex1

• /_rollover

• /_search profile

• /_segments (インデックスのみ)

• /_shard_stores

• /_shrink5

• /_snapshot

• /_stats

• /_status

• /_tasks

• /_template

• /_termvectors (インデックスのみ)

• /_update3

• /_update_by_query1

• /_validate

1. クラスター設定を変更すると、これらの操作が完了する前に中断される可能性があります。リクエストが正常に完了したことを確認するには、これらの操作とともに /_tasks 操作を使用することをお勧めします。

2. メッセージ本文の /_search/scroll に対する DELETE リクエストでは、"Content-Length" をHTTP ヘッダーに指定する必要があります。ほとんどのクライアントでは、このヘッダーがデフォルトで追加されます。scroll_id 値で = 文字に関する問題を回避するには、クエリ文字列ではなくリクエストボディを使用して、scroll_id 値を Amazon ES に渡します。

3. スクリプトの使用に関する考慮事項については、「the section called “サポートされている他のリソース” (p. 191)」を参照してください。

4. PUT メソッドを参照してください。GET メソッドの詳細については、「the section called “API の重要な相違点” (p. 174)」を参照してください。

5. 「the section called “縮小” (p. 175)」を参照してください。

バージョン 5.6Elasticsearch 5.6 の Amazon ES では次の操作がサポートされています。

• /_alias

• /_aliases

• /_all

• /_analyze

• /_bulk

• /_cache/clear (インデックスのみ)

• /_cat

• /_delete_by_query1

• /_explain

• /_field_stats

• /_flush

• /_forcemerge (インデックスのみ)

• /_ingest

• /_mapping

• /_mget

• /_scripts3

/_search2

• /_search profile

• /_segments (インデックスのみ)

• /_shard_stores

• /_shrink5

• /_snapshot

API バージョン 2015-01-01182

Page 191: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドバージョン 5.5

• /_cluster/allocation/explain

• /_cluster/health

• /_cluster/pending_tasks

• /_cluster/settings を使用する複数のプロパティ 4:• action.auto_create_index

• action.search.shard_count.limit

• indices.breaker.fielddata.limit

• indices.breaker.request.limit

• indices.breaker.total.limit

• /_cluster/state

• /_cluster/stats

• /_count

• /_msearch

• /_mtermvectors

• /_nodes

• /_plugin/kibana

• /_recovery (インデックスのみ)

• /_refresh

• /_reindex1

• /_rollover

• /_stats

• /_status

• /_tasks

• /_template

• /_termvectors (インデックスのみ)

• /_update3

• /_update_by_query1

• /_validate

1. クラスター設定を変更すると、これらの操作が完了する前に中断される可能性があります。リクエストが正常に完了したことを確認するには、これらの操作とともに /_tasks 操作を使用することをお勧めします。

2. メッセージ本文の /_search/scroll に対する DELETE リクエストでは、"Content-Length" をHTTP ヘッダーに指定する必要があります。ほとんどのクライアントでは、このヘッダーがデフォルトで追加されます。scroll_id 値で = 文字に関する問題を回避するには、クエリ文字列ではなくリクエストボディを使用して、scroll_id 値を Amazon ES に渡します。

3. スクリプトの使用に関する考慮事項については、「the section called “サポートされている他のリソース” (p. 191)」を参照してください。

4. PUT メソッドを参照してください。GET メソッドの詳細については、「the section called “API の重要な相違点” (p. 174)」を参照してください。

5. 「the section called “縮小” (p. 175)」を参照してください。

バージョン 5.5Elasticsearch 5.5 の Amazon ES では次の操作がサポートされています。

• /_alias

• /_aliases

• /_all

• /_analyze

• /_bulk

• /_cache/clear (インデックスのみ)

• /_cat

• /_cluster/allocation/explain

• /_cluster/health

• /_cluster/pending_tasks

• /_cluster/settings を使用する複数のプロパティ 4:

• /_delete_by_query1

• /_explain

• /_field_stats

• /_flush

• /_forcemerge (インデックスのみ)

• /_ingest

• /_mapping

• /_mget

• /_msearch

• /_mtermvectors

• /_nodes

• /_plugin/kibana

• /_scripts3

/_search2

• /_search profile

• /_segments (インデックスのみ)

• /_shard_stores

• /_shrink5

• /_snapshot

• /_stats

• /_status

• /_tasks

• /_template

• /_termvectors (インデックスのみ)

API バージョン 2015-01-01183

Page 192: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドバージョン 5.3

• action.auto_create_index

• action.search.shard_count.limit

• indices.breaker.fielddata.limit

• indices.breaker.request.limit

• indices.breaker.total.limit

• /_cluster/state

• /_cluster/stats

• /_count

• /_recovery (インデックスのみ)

• /_refresh

• /_reindex1

• /_rollover

• /_update3

• /_update_by_query1

• /_validate

1. クラスター設定を変更すると、これらの操作が完了する前に中断される可能性があります。リクエストが正常に完了したことを確認するには、これらの操作とともに /_tasks 操作を使用することをお勧めします。

2. メッセージ本文の /_search/scroll に対する DELETE リクエストでは、"Content-Length" をHTTP ヘッダーに指定する必要があります。ほとんどのクライアントでは、このヘッダーがデフォルトで追加されます。scroll_id 値で = 文字に関する問題を回避するには、クエリ文字列ではなくリクエストボディを使用して、scroll_id 値を Amazon ES に渡します。

3. スクリプトの使用に関する考慮事項については、「the section called “サポートされている他のリソース” (p. 191)」を参照してください。

4. PUT メソッドを参照してください。GET メソッドの詳細については、「the section called “API の重要な相違点” (p. 174)」を参照してください。

5. 「the section called “縮小” (p. 175)」を参照してください。

バージョン 5.3Elasticsearch 5.3 の Amazon ES では次の操作がサポートされています。

• /_alias

• /_aliases

• /_all

• /_analyze

• /_bulk

• /_cache/clear (インデックスのみ)• /_cat

• /_cluster/allocation/explain

• /_cluster/health

• /_cluster/pending_tasks

• /_cluster/settings を使用する複数のプロパティ 4:• action.auto_create_index

• action.search.shard_count.limit

• indices.breaker.fielddata.limit

• indices.breaker.request.limit

• indices.breaker.total.limit

• /_cluster/state

• /_cluster/stats

• /_count

• /_delete_by_query1

• /_explain

• /_field_stats

• /_flush

• /_forcemerge (インデックスのみ)

• /_ingest

• /_mapping

• /_mget

• /_msearch

• /_mtermvectors

• /_nodes

• /_plugin/kibana

• /_recovery (インデックスのみ)

• /_refresh

• /_reindex1

• /_rollover

• /_search2

• /_search profile

• /_segments (インデックスのみ)

• /_shard_stores

• /_shrink5

• /_snapshot

• /_stats

• /_status

• /_tasks

• /_template

• /_termvectors (インデックスのみ)

• /_update3

• /_update_by_query1

• /_validate

API バージョン 2015-01-01184

Page 193: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドバージョン 5.1

1. クラスター設定を変更すると、これらの操作が完了する前に中断される可能性があります。リクエストが正常に完了したことを確認するには、これらの操作とともに /_tasks 操作を使用することをお勧めします。

2. メッセージ本文の /_search/scroll に対する DELETE リクエストでは、"Content-Length" をHTTP ヘッダーに指定する必要があります。ほとんどのクライアントでは、このヘッダーがデフォルトで追加されます。scroll_id 値で = 文字に関する問題を回避するには、クエリ文字列ではなくリクエストボディを使用して、scroll_id 値を Amazon ES に渡します。

3. スクリプトの使用に関する考慮事項については、「the section called “サポートされている他のリソース” (p. 191)」を参照してください。

4. PUT メソッドを参照してください。GET メソッドの詳細については、「the section called “API の重要な相違点” (p. 174)」を参照してください。

5. 「the section called “縮小” (p. 175)」を参照してください。

バージョン 5.1Elasticsearch 5.1 の Amazon ES では次の操作がサポートされています。

• /_alias

• /_aliases

• /_all

• /_analyze

• /_bulk

• /_cache/clear (インデックスのみ)• /_cat

• /_cluster/allocation/explain

• /_cluster/health

• /_cluster/pending_tasks

• /_cluster/settings を使用する複数のプロパティ (PUT のみ):• action.auto_create_index

• action.search.shard_count.limit

• indices.breaker.fielddata.limit

• indices.breaker.request.limit

• indices.breaker.total.limit

• /_cluster/state

• /_cluster/stats

• /_count

• /_delete_by_query1

• /_explain

• /_field_stats

• /_flush

• /_forcemerge (インデックスのみ)

• /_ingest

• /_mapping

• /_mget

• /_msearch

• /_mtermvectors

• /_nodes

• /_plugin/kibana

• /_recovery (インデックスのみ)

• /_refresh

• /_reindex1

• /_rollover

• /_search2

• /_search profile

• /_segments (インデックスのみ)

• /_shard_stores

• /_shrink4

• /_snapshot

• /_stats

• /_status

• /_tasks

• /_template

• /_termvectors (インデックスのみ)

• /_update3

• /_update_by_query1

• /_validate

1. クラスター設定を変更すると、これらの操作が完了する前に中断される可能性があります。リクエストが正常に完了したことを確認するには、これらの操作とともに /_tasks 操作を使用することをお勧めします。

2. メッセージ本文の /_search/scroll に対する DELETE リクエストでは、"Content-Length" をHTTP ヘッダーに指定する必要があります。ほとんどのクライアントでは、このヘッダーがデフォルトで追加されます。scroll_id 値で = 文字に関する問題を回避するには、クエリ文字列ではなくリクエストボディを使用して、scroll_id 値を Amazon ES に渡します。

3. スクリプトの使用に関する考慮事項については、「the section called “サポートされている他のリソース” (p. 191)」を参照してください。

4. 「the section called “縮小” (p. 175)」を参照してください。

API バージョン 2015-01-01185

Page 194: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドバージョン 2.3

バージョン 2.3Elasticsearch 2.3 の Amazon ES では次の操作がサポートされています。

• /_alias

• /_aliases

• /_all

• /_analyze

• /_bulk

• /_cache/clear (インデックスのみ)• /_cat

• /_cluster/health

• /_cluster/settings を使用する 4 つのプロパティ (PUT のみ):• indices.breaker.fielddata.limit

• indices.breaker.request.limit

• indices.breaker.total.limit

• threadpool.bulk.queue_size

• /_cluster/stats

• /_count

• /_flush

• /_forcemerge (インデックスのみ)

• /_mapping

• /_mget

• /_msearch

• /_nodes

• /_percolate

• /_plugin/kibana

• /_recovery (インデックスのみ)

• /_refresh

• /_search

• /_segments (インデックスのみ)

• /_snapshot

• /_stats

• /_status

• /_template

バージョン 1.5Elasticsearch 1.5 の Amazon ES では次の操作がサポートされています。

• /_alias

• /_aliases

• /_all

• /_analyze

• /_bulk

• /_cat

• /_cluster/health

• /_cluster/settings を使用する 4 つのプロパティ (PUT のみ):• indices.breaker.fielddata.limit

• indices.breaker.request.limit

• indices.breaker.total.limit

• threadpool.bulk.queue_size

• /_cluster/stats

• /_count

• /_flush

• /_mapping

• /_mget

• /_msearch

• /_nodes

• /_percolate

• /_plugin/kibana

• /_plugin/kibana3

• /_refresh

• /_search

• /_snapshot

• /_stats

• /_status

• /_template

サポートされるプラグインAmazon ES ドメインには、Elasticsearch コミュニティによるプラグインがパッケージされています。このサービスは、プラグインを自動的にデプロイおよび管理します。

Note

Kibana は、古いバージョンの Amazon ES、および新しいバージョンの Node.js アプリケーション用のプラグインです。すべての Amazon ES ドメインには、プリインストールされたバージョンの Kibana が含まれています。

API バージョン 2015-01-01186

Page 195: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドサポートされるプラグイン

Elasticsearch バージョン プラグイン

7.1 • ICU Analysis• Ingest Attachment Processor• Ingest User Agent Processor• Japanese (kuromoji) Analysis• Mapper Murmur3• Mapper Size• Phonetic Analysis• Smart Chinese Analysis• Stempel Polish Analysis• Ukrainian Analysis• Seunjeon 韓国語分析

6.8 • ICU Analysis• Ingest Attachment Processor• Ingest User Agent Processor• Japanese (kuromoji) Analysis• Mapper Murmur3• Mapper Size• Phonetic Analysis• Smart Chinese Analysis• Stempel Polish Analysis• Ukrainian Analysis• Seunjeon 韓国語分析

6.7 • ICU Analysis• Ingest Attachment Processor• Ingest User Agent Processor• Japanese (kuromoji) Analysis• Mapper Murmur3• Mapper Size• Phonetic Analysis• Smart Chinese Analysis• Stempel Polish Analysis• Ukrainian Analysis• Seunjeon 韓国語分析

6.5 • ICU Analysis• Ingest Attachment Processor• Ingest User Agent Processor• Japanese (kuromoji) Analysis• Mapper Murmur3• Mapper Size• Phonetic Analysis• Smart Chinese Analysis• Stempel Polish Analysis

API バージョン 2015-01-01187

Page 196: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドサポートされるプラグイン

Elasticsearch バージョン プラグイン• Ukrainian Analysis• Seunjeon 韓国語分析

6.4 • ICU Analysis• Ingest Attachment Processor• Ingest User Agent Processor• Japanese (kuromoji) Analysis• Mapper Murmur3• Mapper Size• Phonetic Analysis• Smart Chinese Analysis• Stempel Polish Analysis• Ukrainian Analysis• Seunjeon 韓国語分析

6.3 • ICU Analysis• Ingest Attachment Processor• Ingest User Agent Processor• Japanese (kuromoji) Analysis• Mapper Murmur3• Mapper Size• Phonetic Analysis• Smart Chinese Analysis• Stempel Polish Analysis• Ukrainian Analysis• Seunjeon 韓国語分析

6.2 • ICU Analysis• Ingest Attachment Processor• Ingest User Agent Processor• Japanese (kuromoji) Analysis• Mapper Murmur3• Mapper Size• Phonetic Analysis• Smart Chinese Analysis• Stempel Polish Analysis• Ukrainian Analysis• Seunjeon 韓国語分析

API バージョン 2015-01-01188

Page 197: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドサポートされるプラグイン

Elasticsearch バージョン プラグイン

6.0 • ICU Analysis• Ingest Attachment Processor• Ingest User Agent Processor• Japanese (kuromoji) Analysis• Mapper Murmur3• Mapper Size• Phonetic Analysis• Smart Chinese Analysis• Stempel Polish Analysis• Ukrainian Analysis• Seunjeon 韓国語分析

5.6 • ICU Analysis• Ingest Attachment Processor• Ingest User Agent Processor• Japanese (kuromoji) Analysis• Mapper Attachments• Mapper Murmur3• Mapper Size• Phonetic Analysis• Smart Chinese Analysis• Stempel Polish Analysis• Ukrainian Analysis• Seunjeon 韓国語分析

5.5 • ICU Analysis• Ingest Attachment Processor• Ingest User Agent Processor• Japanese (kuromoji) Analysis• Mapper Attachments• Mapper Murmur3• Mapper Size• Phonetic Analysis• Smart Chinese Analysis• Stempel Polish Analysis• Ukrainian Analysis• Seunjeon 韓国語分析

API バージョン 2015-01-01189

Page 198: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド出力プラグイン

Elasticsearch バージョン プラグイン

5.3 • ICU Analysis• Ingest Attachment Processor• Ingest User Agent Processor• Japanese (kuromoji) Analysis• Mapper Attachments• Mapper Murmur3• Mapper Size• Phonetic Analysis• Smart Chinese Analysis• Stempel Polish Analysis• Ukrainian Analysis• Seunjeon 韓国語分析

5.1 • ICU Analysis• Ingest Attachment Processor• Ingest User Agent Processor• Japanese (kuromoji) Analysis• Mapper Murmur3• Phonetic Analysis• Smart Chinese Analysis• Stempel Polish Analysis• Seunjeon 韓国語分析

2.3 • ICU Analysis• Japanese (kuromoji) Analysis• Kibana 4• Phonetic Analysis

1.5 • ICU Analysis• Japanese (kuromoji) Analysis• Kibana 3 (_plugin/kibana3/ エンドポイント)• Kibana 4

出力プラグインAmazon ES は、Amazon ES にデータをストリーミングするための Logstash 出力プラグインとして Elasticsearch 出力プラグインと、Logstash イベントに署名して Amazon ES にエクスポートするlogstash-output-amazon_es の 2 つをサポートしています。

Logstash の詳細については、「the section called “Logstash プラグインを使用した、データの一括読み込み” (p. 115)」を参照してください。

API バージョン 2015-01-01190

Page 199: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドサポートされている他のリソース

サポートされている他のリソースbootstrap.mlockall

サービスにより、bootstrap.mlockall の elasticsearch.yml が有効になります。これにより、JVM メモリがロックされ、オペレーティングシステムがディスクにスワップされなくなります。これは、以下を除いて、サポートされているすべてのインスタンスタイプに適用されます。• t2.micro.elasticsearch

• t2.small.elasticsearch

• t2.medium.elasticsearch

スクリプト モジュール

サービスでは、Elasticsearch 5.x 以降のドメインでスクリプティングがサポートされています。このサービスでは、1.5 または 2.3 用のスクリプティングがサポートされていません。

サポートされているスクリプトオプションには、以下が含まれます。• Painless• Lucene Expressions• Mustache

Elasticsearch 5.5 以降のドメインでは、Amazon ES で _scripts エンドポイントを使用するストアドスクリプトがサポートされています。Elasticsearch 5.3 および 5.1 ドメインでは、インラインスクリプトのみがサポートされています。

TCP トランスポート

このサービスは、ポート 80 の HTTP をサポートしていますが、TCP トランスポートはサポートしていません。

API バージョン 2015-01-01191

Page 200: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドJava

Amazon Elasticsearch Service でのAWS SDK の使用

この章には、AWS SDK を使用して Amazon Elasticsearch Service 設定 API を操作する方法の例が含まれています。これらのコードサンプルは、Amazon ES ドメインの作成、更新、削除方法を示しています。

Important

Elasticsearch API (_index、_bulk、_search、_snapshot など) を操作する方法の例については、「HTTP リクエストの署名 (p. 71)」を参照してください。

Javaこの最初の例では、AWS SDK for Java を使用してドメインの作成、その設定の更新、および削除を行います。waitForDomainProcessing への呼び出しのコメント (および deleteDomain への呼び出しのコメント) を削除し、ドメインをオンラインにして使用できるようにします。

package com.amazonaws.samples;

import java.util.concurrent.TimeUnit;

import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;import com.amazonaws.regions.Regions;import com.amazonaws.services.elasticsearch.AWSElasticsearch;import com.amazonaws.services.elasticsearch.AWSElasticsearchClientBuilder;import com.amazonaws.services.elasticsearch.model.CreateElasticsearchDomainRequest;import com.amazonaws.services.elasticsearch.model.CreateElasticsearchDomainResult;import com.amazonaws.services.elasticsearch.model.DeleteElasticsearchDomainRequest;import com.amazonaws.services.elasticsearch.model.DeleteElasticsearchDomainResult;import com.amazonaws.services.elasticsearch.model.DescribeElasticsearchDomainRequest;import com.amazonaws.services.elasticsearch.model.DescribeElasticsearchDomainResult;import com.amazonaws.services.elasticsearch.model.EBSOptions;import com.amazonaws.services.elasticsearch.model.ElasticsearchClusterConfig;import com.amazonaws.services.elasticsearch.model.NodeToNodeEncryptionOptions;import com.amazonaws.services.elasticsearch.model.ResourceNotFoundException;import com.amazonaws.services.elasticsearch.model.SnapshotOptions;import com.amazonaws.services.elasticsearch.model.UpdateElasticsearchDomainConfigRequest;import com.amazonaws.services.elasticsearch.model.UpdateElasticsearchDomainConfigResult;import com.amazonaws.services.elasticsearch.model.VolumeType;

/** * Sample class demonstrating how to use the AWS SDK for Java to create, update, * and delete Amazon Elasticsearch Service domains. */

public class AESSample {

public static void main(String[] args) {

final String domainName = "my-test-domain";

// Build the client using the default credentials chain. // You can use the AWS CLI and run `aws configure` to set access key, secret // key, and default region. final AWSElasticsearch client = AWSElasticsearchClientBuilder

API バージョン 2015-01-01192

Page 201: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドJava

.standard() // Unnecessary, but lets you use a region different than your default. .withRegion(Regions.US_WEST_2) // Unnecessary, but if desired, you can use a different provider chain. .withCredentials(new DefaultAWSCredentialsProviderChain()) .build();

// Create a new domain, update its configuration, and delete it. createDomain(client, domainName); // waitForDomainProcessing(client, domainName); updateDomain(client, domainName); // waitForDomainProcessing(client, domainName); deleteDomain(client, domainName); }

/** * Creates an Amazon Elasticsearch Service domain with the specified options. * Some options require other AWS resources, such as an Amazon Cognito user pool * and identity pool, whereas others require just an instance type or instance * count. * * @param client * The AWSElasticsearch client to use for the requests to Amazon * Elasticsearch Service * @param domainName * The name of the domain you want to create */ private static void createDomain(final AWSElasticsearch client, final String domainName) {

// Create the request and set the desired configuration options CreateElasticsearchDomainRequest createRequest = new CreateElasticsearchDomainRequest() .withDomainName(domainName) .withElasticsearchVersion("6.3") .withElasticsearchClusterConfig(new ElasticsearchClusterConfig() .withDedicatedMasterEnabled(true) .withDedicatedMasterCount(3) // Small, inexpensive instance types for testing. Not recommended for production // domains. .withDedicatedMasterType("t2.small.elasticsearch") .withInstanceType("t2.small.elasticsearch") .withInstanceCount(5)) // Many instance types require EBS storage. .withEBSOptions(new EBSOptions() .withEBSEnabled(true) .withVolumeSize(10) .withVolumeType(VolumeType.Gp2)) // You can uncomment this line and add your account ID, a user name, and the // domain name to add an access policy. // .withAccessPolicies("{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"arn:aws:iam::123456789012:user/user-name\"]},\"Action\":[\"es:*\"],\"Resource\":\"arn:aws:es:region:123456789012:domain/domain-name/*\"}]}") .withNodeToNodeEncryptionOptions(new NodeToNodeEncryptionOptions() .withEnabled(true));

// Make the request. System.out.println("Sending domain creation request..."); CreateElasticsearchDomainResult createResponse = client.createElasticsearchDomain(createRequest); System.out.println("Domain creation response from Amazon Elasticsearch Service:"); System.out.println(createResponse.getDomainStatus().toString()); }

API バージョン 2015-01-01193

Page 202: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドJava

/** * Updates the configuration of an Amazon Elasticsearch Service domain with the * specified options. Some options require other AWS resources, such as an * Amazon Cognito user pool and identity pool, whereas others require just an * instance type or instance count. * * @param client * The AWSElasticsearch client to use for the requests to Amazon * Elasticsearch Service * @param domainName * The name of the domain to update */ private static void updateDomain(final AWSElasticsearch client, final String domainName) { try { // Updates the domain to use three data instances instead of five. // You can uncomment the Cognito lines and fill in the strings to enable Cognito // authentication for Kibana. final UpdateElasticsearchDomainConfigRequest updateRequest = new UpdateElasticsearchDomainConfigRequest() .withDomainName(domainName) // .withCognitoOptions(new CognitoOptions() // .withEnabled(true) // .withUserPoolId("user-pool-id") // .withIdentityPoolId("identity-pool-id") // .withRoleArn("role-arn")) .withElasticsearchClusterConfig(new ElasticsearchClusterConfig() .withInstanceCount(3));

System.out.println("Sending domain update request..."); final UpdateElasticsearchDomainConfigResult updateResponse = client .updateElasticsearchDomainConfig(updateRequest); System.out.println("Domain update response from Amazon Elasticsearch Service:"); System.out.println(updateResponse.toString()); } catch (ResourceNotFoundException e) { System.out.println("Domain not found. Please check the domain name."); } }

/** * Deletes an Amazon Elasticsearch Service domain. Deleting a domain can take * several minutes. * * @param client * The AWSElasticsearch client to use for the requests to Amazon * Elasticsearch Service * @param domainName * The name of the domain that you want to delete */ private static void deleteDomain(final AWSElasticsearch client, final String domainName) { try { final DeleteElasticsearchDomainRequest deleteRequest = new DeleteElasticsearchDomainRequest() .withDomainName(domainName);

System.out.println("Sending domain deletion request..."); final DeleteElasticsearchDomainResult deleteResponse = client.deleteElasticsearchDomain(deleteRequest); System.out.println("Domain deletion response from Amazon Elasticsearch Service:"); System.out.println(deleteResponse.toString()); } catch (ResourceNotFoundException e) {

API バージョン 2015-01-01194

Page 203: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドJava

System.out.println("Domain not found. Please check the domain name."); } }

/** * Waits for the domain to finish processing changes. New domains typically take * 10-15 minutes to initialize. Most updates to existing domains take a similar * amount of time. This method checks every 15 seconds and finishes only when * the domain's processing status changes to false. * * @param client * The AWSElasticsearch client to use for the requests to Amazon * Elasticsearch Service * @param domainName * The name of the domain that you want to check */ private static void waitForDomainProcessing(final AWSElasticsearch client, final String domainName) { // Create a new request to check the domain status. final DescribeElasticsearchDomainRequest describeRequest = new DescribeElasticsearchDomainRequest() .withDomainName(domainName);

// Check whether the domain is processing, which usually takes 10-15 minutes // after creation or a configuration change. // This loop checks every 15 seconds. DescribeElasticsearchDomainResult describeResponse = client.describeElasticsearchDomain(describeRequest); while (describeResponse.getDomainStatus().isProcessing()) { try { System.out.println("Domain still processing..."); TimeUnit.SECONDS.sleep(15); describeResponse = client.describeElasticsearchDomain(describeRequest); } catch (InterruptedException e) { e.printStackTrace(); } }

// Once we exit that loop, the domain is available System.out.println("Amazon Elasticsearch Service has finished processing changes for your domain."); System.out.println("Domain description response from Amazon Elasticsearch Service:"); System.out.println(describeResponse.toString()); }}

API バージョン 2015-01-01195

Page 204: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドアクション

Amazon Elasticsearch Service 設定API リファレンス

このリファレンスでは、Amazon Elasticsearch Service 設定 API のアクション、データタイプ、エラーについて説明します。設定 API は、HTTP 経由で Amazon ES ドメインを作成および設定するのに使用できる REST API です。AWS CLI とコンソールを使用して Amazon ES ドメインを設定することもできます。詳細については、「Amazon ES ドメインの作成と設定 (p. 10)」を参照してください。

• アクション (p. 196)• データ型 (p. 223)• エラー (p. 236)

アクション次の表では、Amazon Elasticsearch Service 設定 API に対して REST インターフェイスがとる各オペレーションに必要な、HTTP メソッドへのクイックリファレンスをご覧いただけます。各オペレーションの説明には、必要な HTTP メソッドも記載されています。

Note

すべての設定サービスリクエストに、必ず署名してください。詳細については、このガイドの「Amazon Elasticsearch サービスリクエストの署名 (p. 53)」、および AWS General Referenceの「署名バージョン 4 の署名プロセス」を参照してください。

アクション HTTP メソッド

AddTags (p. 197) POST

CreateElasticsearchDomain (p. 198) POST

DeleteElasticsearchDomain (p. 201) DELETE

DeleteElasticsearchServiceRole (p. 202) DELETE

DescribeElasticsearchDomain (p. 203) GET

DescribeElasticsearchDomainConfig (p. 203) GET

DescribeElasticsearchDomains (p. 204) POST

DescribeElasticsearchInstanceTypeLimits (p. 205)GET

DescribeReservedElasticsearchInstanceOfferings (p. 206)GET

DescribeReservedElasticsearchInstances (p. 207)GET

GetCompatibleElasticsearchVersions (p. 208)GET

GetUpgradeHistory (p. 209) GET

GetUpgradeStatus (p. 211) GET

ListDomainNames (p. 211) GET

ListElasticsearchInstanceTypeDetails (p. 212)GET

API バージョン 2015-01-01196

Page 205: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドAddTags

アクション HTTP メソッド

ListElasticsearchInstanceTypes (p. 213) GET

ListElasticsearchVersions (p. 214) GET

ListTags (p. 215) GET

PurchaseReservedElasticsearchInstance (p. 216)POST

RemoveTags (p. 217) POST

StartElasticsearchServiceSoftwareUpdate (p. 218)POST

StopElasticsearchServiceSoftwareUpdate (p. 219)POST

UpdateElasticsearchDomainConfig (p. 220) POST

UpgradeElasticsearchDomain (p. 222) POST

AddTagsAmazon ES ドメインにリソースタグを添付します。詳細については、「Amazon ES ドメインのタグ付け (p. 43)」を参照してください。

構文

POST https://es.us-east-1.amazonaws.com/2015-01-01/es/domain{ "ARN": "domain-arn", "TagList": [{ "Key": "tag-key", "Value": "tag-value" }]}

リクエストパラメータこのオペレーションではリクエストパラメータを使用しません。

リクエストボディ

パラメータ データ型 必須? 説明

TagList TagList (p. 234) はい リソースタグの一覧。

ARN ARN (p. 224) はい リソースタグを添付するAmazon ES ドメインのAmazon リソースネーム(ARN)。

レスポンス要素適用されません。AddTags オペレーションはデータ構造を返しません。

API バージョン 2015-01-01197

Page 206: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドCreateElasticsearchDomain

エラーAddTags オペレーションは次のエラーを返すことができます。

• BaseException (p. )• LimitExceededException (p. )• ValidationException (p. )• InternalException (p. )

CreateElasticsearchDomainAmazon ES ドメインを作成します。詳細については、「the section called “ Amazon ES ドメインの作成” (p. 10)」を参照してください。

Note

Amazon ES ドメインを作成する際に、同じ名前のドメインが既に存在しても、API からエラーは報告されません。その代わりに、既存ドメインの詳細が返されます。

構文

POST https://es.us-east-1.amazonaws.com/2015-01-01/es/domain{ "ElasticsearchClusterConfig": { "ZoneAwarenessConfig": { "AvailabilityZoneCount": 3 }, "ZoneAwarenessEnabled": true|false, "InstanceCount": 3, "DedicatedMasterEnabled": true|false, "DedicatedMasterType": "c5.large.elasticsearch", "DedicatedMasterCount": 3, "InstanceType": "r5.large.elasticsearch", "WarmCount": 3, "WarmEnabled": true|false, "WarmType": "ultrawarm1.large.elasticsearch" }, "EBSOptions": { "EBSEnabled": true|false, "VolumeType": "io1|gp2|standard", "Iops": 1000, "VolumeSize": 35 }, "EncryptionAtRestOptions": { "Enabled": true|false, "KmsKeyId":"arn:aws:kms:us-east-1:123456789012:alias/my-key" }, "SnapshotOptions": { "AutomatedSnapshotStartHour": 3 }, "VPCOptions": { "VPCId": "vpc-12345678", "SubnetIds": ["subnet-abcdefg1", "subnet-abcdefg2", "subnet-abcdefg3"], "SecurityGroupIds": ["sg-12345678"] }, "AdvancedOptions": { "rest.action.multi.allow_explicit_index": "true|false", "indices.fielddata.cache.size": "40", "indices.query.bool.max_clause_count": "1024"

API バージョン 2015-01-01198

Page 207: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドCreateElasticsearchDomain

}, "CognitoOptions": { "Enabled": true|false, "UserPoolId": "us-east-1_121234567", "IdentityPoolId": "us-east-1:12345678-1234-1234-1234-123456789012", "RoleArn": "arn:aws:iam::123456789012:role/service-role/CognitoAccessForAmazonES" }, "NodeToNodeEncryptionOptions": { "Enabled": true|false }, "DomainEndpointOptions": { "EnforceHTTPS": true|false, "TLSSecurityPolicy": "Policy-Min-TLS-1-2-2019-07|Policy-Min-TLS-1-0-2019-07" }, "LogPublishingOptions": { "SEARCH_SLOW_LOGS": { "CloudWatchLogsLogGroupArn":"arn:aws:logs:us-east-1:264071961897:log-group1:sample-domain", "Enabled":true|false }, "INDEX_SLOW_LOGS": { "CloudWatchLogsLogGroupArn":"arn:aws:logs:us-east-1:264071961897:log-group2:sample-domain", "Enabled":true|false }, "ES_APPLICATION_LOGS": { "CloudWatchLogsLogGroupArn":"arn:aws:logs:us-east-1:264071961897:log-group3:sample-domain", "Enabled":true|false } }, "ElasticsearchVersion": "7.1", "DomainName": "my-domain", "AccessPolicies": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"*\"]},\"Action\":[\"es:*\"],\"Resource\":\"arn:aws:es:us-east-1:123456789012:domain/my-domain/*\"}]}"}

リクエストパラメータこのオペレーションでは HTTP リクエストパラメータを使用しません。

リクエストボディ

パラメータ データ型 必須? 説明

DomainName the section called“DomainName” (p. 226)

あり 作成する Amazon ES ドメインの名前。

ElasticsearchVersion文字列 いいえ Elasticsearch のバージョン。指定されない場合、デフォルトとして 1.5 が使用されます。サポートされているバージョンの詳細なリストについては、「thesection called “サポートされるElasticsearch バージョン” (p. 2)」を参照してください。

ElasticsearchClusterConfigthe section called“ElasticsearchClusterConfig” (p. 227)

いいえ Amazon ES ドメインのクラスター設定のコンテナ。

API バージョン 2015-01-01199

Page 208: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドCreateElasticsearchDomain

パラメータ データ型 必須? 説明

EBSOptions the section called“EBSOptions” (p. 227)

いいえ Amazon ES ドメインの EBS ベースのストレージを有効にするために必要な、パラメータのコンテナ。詳細については、「EBS ベースのストレージの設定 (p. 15)」を参照してください。

VPCOptions the section called“VPCOptions” (p. 235)

いいえ VPC アクセスドメインを設定するために必要な値のコンテナ。これらの値を指定しない場合、Amazon ES はパブリックエンドポイントでドメインを作成します。詳細については、「AmazonElasticsearch Service ドメインのVPC サポート (p. 132)」を参照してください。

CognitoOptions the section called“CognitoOptions” (p. 225)

いいえ Kibana で Amazon Cognito 認証を使用するように Amazon ES を設定するためのキーと値のペア。

AccessPolicies 文字列 いいえ 新しい Amazon ES ドメインのアクセスポリシーを指定する IAM ポリシードキュメント。詳細については、「thesection called “Identity and AccessManagement” (p. 50)」を参照してください。

SnapshotOptions the section called“SnapshotOptions” (p. 234)

いいえ DEPRECATED.Elasticsearch 5.3以降を実行しているドメインの場合、Amazon ES は 1 時間ごとに自動的にスナップショットを作成するため、この設定は適用されません。

Elasticsearch の以前のバージョンを実行しているドメインでは、Amazon ES は 1 日ごとに自動的にスナップショットを作成します。この値は、サービスでスナップショットを作成する時刻のコンテナとして動作します。

AdvancedOptions the section called“AdvancedOptions” (p. 223)

いいえ 詳細な設定オプションを指定するためのキーと値のペア。詳細については「詳細オプションの設定 (p. 20)」を参照してください。

LogPublishingOptionsthe section called“LogPublishingOptions” (p. 231)

いいえ スローログの発行を設定するためのキーと値のペア。

EncryptionAtRestOptionsthe section called“EncryptionAtRestOptions” (p. 231)

いいえ 保管時に暗号化するためのキーと値のペア。

API バージョン 2015-01-01200

Page 209: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドDeleteElasticsearchDomain

パラメータ データ型 必須? 説明

NodeToNodeEncryptionOptionsthe section called“NodeToNodeEncryptionOptions” (p. 232)

いいえ ノード間の暗号化を有効にします。

DomainEndpointOptionsthe section called“DomainEndpointOptions” (p. 226)

いいえ ドメインエンドポイントの追加オプション (すべてのトラフィックで HTTPS を必須にするかどうかなど)。

レスポンス要素

フィールド データタイプ

DomainStatus the section called“ElasticsearchDomainStatus” (p. 229)

エラーCreateElasticsearchDomain は次のエラーを返すことができます。

• BaseException (p. )• DisabledOperationException (p. )• InternalException (p. )• InvalidTypeException (p. )• LimitExceededException (p. )• ResourceAlreadyExistsException (p. )• ValidationException (p. )

DeleteElasticsearchDomainAmazon ES ドメインと、ドメインにあるすべてのデータを削除します。ドメインは削除された後、復元できません。

構文DELETE https://es.us-east-1.amazonaws.com/2015-01-01/es/domain/domain-name

リクエストパラメータ

パラメータ データ型 必須? 説明

DomainName the section called“DomainName” (p. 226)

あり 削除する Amazon ES ドメインの名前。

リクエストボディこのオペレーションでは HTTP リクエストボディを使用しません。

API バージョン 2015-01-01201

Page 210: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドDeleteElasticsearchServiceRole

レスポンス要素

フィールド データタイプ

DomainStatus the section called“ElasticsearchDomainStatus” (p. 229)

エラーDeleteElasticsearchDomain オペレーションは次のエラーを返すことができます。

• BaseException (p. )• InternalException (p. )• ResourceNotFoundException (p. )• ValidationException (p. )

DeleteElasticsearchServiceRoleAmazon ES と Amazon EC2 間のサービスにリンクされたロールを削除します。このロールは、VPC 内にVPC エンドポイントを配置する許可を Amazon ES に付与します。サービスにリンクされたロールは、正常に機能するように VPC エンドポイントが作成されるドメインに配置する必要があります。

Note

このアクションは、ドメインがサービスにリンクされたロールを使用していない場合のみ成功します。

構文

DELETE https://es.us-east-1.amazonaws.com/2015-01-01/es/role

リクエストパラメータこのオペレーションではリクエストパラメータを使用しません。

リクエストボディこのオペレーションでは HTTP リクエストボディを使用しません。

レスポンス要素適用されません。DeleteElasticsearchServiceRole オペレーションはデータ構造を返しません。

エラーDeleteElasticsearchServiceRole は次のエラーを返すことができます。

• BaseException (p. )• InternalException (p. )

API バージョン 2015-01-01202

Page 211: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドDescribeElasticsearchDomain

• ValidationException (p. )

DescribeElasticsearchDomainドメイン ID、ドメインサービスエンドポイント、ドメイン ARN など、指定された Amazon ES ドメインの設定を説明します。

構文GET https://es.us-east-1.amazonaws.com/2015-01-01/es/domain/domain-name

リクエストパラメータ

パラメータ データ型 必須? 説明

DomainName the section called“DomainName” (p. 226)

あり 説明するAmazon ES ドメインの名前。

リクエストボディこのオペレーションでは HTTP リクエストボディを使用しません。

レスポンス要素

フィールド データタイプ

DomainStatus the section called“ElasticsearchDomainStatus” (p. 229)

エラーDescribeElasticsearchDomain は次のエラーを返すことができます。

• BaseException (p. )• InternalException (p. )• ResourceNotFoundException (p. )• ValidationException (p. )

DescribeElasticsearchDomainConfigAmazon ES ドメインの設定を表示します。

構文GET https://es.us-east-1.amazonaws.com/2015-01-01/es/domain/domain-name/config

API バージョン 2015-01-01203

Page 212: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドDescribeElasticsearchDomains

リクエストパラメータ

パラメータ データ型 必須? 説明

DomainName the section called “DomainName” (p. 226) あり 説明する必要があるAmazon ESドメイン設定の名前。

リクエストボディこのオペレーションでは HTTP リクエストボディを使用しません。

レスポンス要素

フィールド データタイプ

DomainConfig the section called“ElasticsearchDomainConfig” (p. 228)

エラーDescribeElasticsearchDomainConfig オペレーションは次のエラーを返すことができます。

• BaseException (p. )• InternalException (p. )• ResourceNotFoundException (p. )

DescribeElasticsearchDomains最大 5 つの指定された Amazon ES ドメインの、ドメイン設定を説明します。情報には、ドメイン ID、ドメインのサービスエンドポイント、ドメイン ARN が含まれます。

構文

POST https://es.us-east-1.amazonaws.com/2015-01-01/es/domain-info{ "DomainNames": [ "domain-name1", "domain-name2", ]}

リクエストパラメータこのオペレーションでは HTTP リクエストパラメータを使用しません。

API バージョン 2015-01-01204

Page 213: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドDescribeElasticsearchInstanceTypeLimits

リクエストボディ

フィールド データ型 必須? 説明

DomainNames the section called“DomainNameList” (p. 226)

あり Amazon ES ドメイン名の配列。

レスポンス要素

フィールド データタイプ

DomainStatusList the section called“ElasticsearchDomainStatusList” (p. 231)

エラーDescribeElasticsearchDomains オペレーションは次のエラーを返すことができます。

• BaseException (p. )• InternalException (p. )• ValidationException (p. )

DescribeElasticsearchInstanceTypeLimits特定の Elasticsearch バージョンとインスタンスタイプのインスタンス数、ストレージ、およびマスターノードの制限について説明します。

構文

GET https://es.us-east-1.amazonaws.com/2015-01-01/es/instanceTypeLimits/elasticsearch-version/instance-type?domainName=domain-name

リクエストパラメータ

パラメータ データ型 必須? 説明

ElasticsearchVersionString はい Elasticsearch バージョン。サポートされているバージョンのリストについては、「thesection called “サポートされる Elasticsearch バージョン” (p. 2)」を参照してください。

InstanceType String はい インスタンスタイプ。リージョン別のインスタンスタイプを表示するには、「Amazon

API バージョン 2015-01-01205

Page 214: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドDescribeReservedElasticsearchInstanceOfferings

パラメータ データ型 必須? 説明Elasticsearch Service 料金表」を参照してください。

DomainName the section called“DomainName” (p. 226)

いいえ 既存のドメインの名前。既存のドメインの制限が必要な場合にのみ指定します。

リクエストボディこのオペレーションでは HTTP リクエストボディを使用しません。

レスポンス要素

フィールド データタイプ 説明

LimitsByRole マップ 該当するすべてのインスタンスタイプの制限を含むマップです。"data" はデータノードを指します。"master" は専用マスターノードを指します。

エラーDescribeElasticsearchInstanceTypeLimits オペレーションは次のエラーを返すことができます。

• BaseException (p. )• InternalException (p. )• InvalidTypeException (p. )• LimitExceededException (p. )• ResourceNotFoundException (p. )• ValidationException (p. )

DescribeReservedElasticsearchInstanceOfferings指定されたリージョンで利用できるリザーブドインスタンスの提供タイプについて説明します。

構文

GET https://es.us-east-1.amazonaws.com/2015-01-01/es/reservedInstanceOfferings?offeringId=offering-id&maxResults=max-results&nextToken=next-token

リクエストパラメータ

パラメータ データ型 必須? 説明

OfferingId String いいえ 提供 ID。

API バージョン 2015-01-01206

Page 215: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドDescribeReservedElasticsearchInstances

パラメータ データ型 必須? 説明

MaxResults Integer いいえ 結果の数を制限します。30~100 を指定する必要があります。

NextToken String いいえ ページ分割に使用されます。以前の API 呼び出しでNextToken を含む結果が生成された場合のみ必要です。次のトークンの入力を受け入れて次のページの結果を返し、応答として次のトークンの出力を提供します。クライアントは、このトークンを使用してさらに結果を取得できます。

リクエストボディこのオペレーションでは HTTP リクエストボディを使用しません。

レスポンス要素

フィールド データタイプ 説明

ReservedElasticsearchInstanceOfferingsReservedElasticsearchInstanceOfferingsリザーブドインスタンスの提供タイプに関するすべての情報のコンテナ。詳細については、「the section called “リザーブドインスタンスを購入する (AWSCLI)” (p. 244)」を参照してください。

エラーDescribeReservedElasticsearchInstanceOfferings オペレーションは次のエラーを返すことができます。

• DisabledOperationException (p. )• InternalException (p. )• ResourceNotFoundException (p. )• ValidationException (p. )

DescribeReservedElasticsearchInstances指定されたリージョンで予約しているインスタンスについて説明します。

構文

GET https://es.us-east-1.amazonaws.com/2015-01-01/es/reservedInstances?reservationId=reservation-id&maxResults=max-results&nextToken=next-token

API バージョン 2015-01-01207

Page 216: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドGetCompatibleElasticsearchVersions

リクエストパラメータ

パラメータ データ型 必須? 説明

ReservationId String いいえ 予約 ID。予約を購入した後に割り当てられます。

MaxResults Integer いいえ 結果の数を制限します。30~100 を指定する必要があります。

NextToken String いいえ ページ分割に使用されます。以前の API 呼び出しでNextToken を含む結果が生成された場合のみ必要です。次のトークンの入力を受け入れて次のページの結果を返し、応答として次のトークンの出力を提供します。クライアントは、このトークンを使用してさらに結果を取得できます。

リクエストボディこのオペレーションでは HTTP リクエストボディを使用しません。

レスポンス要素

フィールド データタイプ 説明

ReservedElasticsearchInstancesReservedElasticsearchInstances予約したインスタンスに関するすべての情報のコンテナ。詳細については、「thesection called “リザーブドインスタンスを購入する (AWS CLI)” (p. 244)」を参照してください。

エラーDescribeReservedElasticsearchInstances オペレーションは次のエラーを返すことができます。

• DisabledOperationException (p. )• InternalException (p. )• ResourceNotFoundException (p. )• ValidationException (p. )

GetCompatibleElasticsearchVersionsElasticsearch バージョンのマップ、およびアップグレード可能なバージョンを返します。

API バージョン 2015-01-01208

Page 217: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドGetUpgradeHistory

構文

GET https://es.us-east-1.amazonaws.com/2015-01-01/es/compatibleVersions?domainName=domain-name

リクエストパラメータ

パラメータ データ型 必須? 説明

DomainName the section called“DomainName” (p. 226)

いいえ 既存のドメインの名前。

リクエストボディこのオペレーションでは HTTP リクエストボディを使用しません。

レスポンス要素

フィールド データタイプ 説明

CompatibleElasticsearchVersionsMap Elasticsearch バージョンのマップ、およびアップグレード可能なバージョン。

{ "CompatibleElasticsearchVersions": [{ "SourceVersion": "6.7", "TargetVersions": ["6.8"] }]}

エラーGetCompatibleElasticsearchVersions オペレーションは次のエラーを返すことができます。

• BaseException (p. )• ResourceNotFoundException (p. )• DisabledOperationException (p. )• ValidationException (p. )• InternalException (p. )

GetUpgradeHistoryドメインの最新の 10 個のアップグレードオペレーションのリストを返します。

API バージョン 2015-01-01209

Page 218: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドGetUpgradeHistory

構文

GET https://es.us-east-1.amazonaws.com/2015-01-01/es/upgradeDomain/domain-name/history?maxResults=max-results&amp;nextToken=next-token

リクエストパラメータ

パラメータ データ型 必須? 説明

MaxResults Integer いいえ 結果の数を制限します。30~100 を指定する必要があります。

DomainName the section called“DomainName” (p. 226)

あり 既存のドメインの名前。

NextToken String いいえ ページ分割に使用されます。以前の API 呼び出しでNextToken を含む結果が生成された場合のみ必要です。次のトークンの入力を受け入れて次のページの結果を返し、応答として次のトークンの出力を提供します。クライアントは、このトークンを使用してさらに結果を取得できます。

リクエストボディこのオペレーションでは HTTP リクエストボディを使用しません。

レスポンス要素

フィールド データタイプ 説明

UpgradeHistoryList UpgradeHistoryList 過去 10 のアップグレードオペレーションの結果のログのコンテナ。

エラーGetCompatibleElasticsearchVersions オペレーションは次のエラーを返すことができます。

• BaseException (p. )• ResourceNotFoundException (p. )• DisabledOperationException (p. )• ValidationException (p. )• InternalException (p. )

API バージョン 2015-01-01210

Page 219: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドGetUpgradeStatus

GetUpgradeStatusドメインの Elasticsearch バージョンアップグレードの最新のステータスを返します。

構文

GET https://es.us-east-1.amazonaws.com/2015-01-01/es/upgradeDomain/domain-name/status

リクエストパラメータ

パラメータ データ型 必須? 説明

DomainName the section called“DomainName” (p. 226)

あり 既存のドメインの名前。

リクエストボディこのオペレーションでは HTTP リクエストボディを使用しません。

レスポンス要素

フィールド データタイプ 説明

UpgradeStepItem UpgradeStepItem ドメインのバージョンアップグレードの最新のステータスのコンテナ。

エラーGetCompatibleElasticsearchVersions オペレーションは次のエラーを返すことができます。

• BaseException (p. )• ResourceNotFoundException (p. )• DisabledOperationException (p. )• ValidationException (p. )• InternalException (p. )

ListDomainNamesアクティブリージョン内で現在のユーザーが所有するすべての Amazon ES ドメイン名を表示します。

構文

GET https://es.us-east-1.amazonaws.com/2015-01-01/domain

API バージョン 2015-01-01211

Page 220: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドListElasticsearchInstanceTypeDetails

リクエストパラメータこのオペレーションではリクエストパラメータを使用しません。

リクエストボディこのオペレーションでは HTTP リクエストボディを使用しません。

レスポンス要素

フィールド データタイプ 説明

DomainNameList DomainNameList (p. 226) 現在のユーザーが所有するすべての Amazon ES ドメイン名。

エラーListDomainNames オペレーションは次のエラーを返すことができます。

• BaseException (p. )• ValidationException (p. )

ListElasticsearchInstanceTypeDetails指定された Elasticsearch バージョンでサポートされているすべての Elasticsearch インスタンスタイプ、およびこれらのインスタンスタイプでサポートされている機能を一覧表示します。

構文GET https://es.us-east-1.amazonaws.com/2015-01-01/es/instanceTypeDetails/elasticsearch-version?domainName=domain-name&maxResults=max-results&nextToken=next-token

リクエストパラメータ

パラメータ データ型 必須? 説明

ElasticsearchVersionString はい Elasticsearch バージョン。

DomainName String いいえ Amazon ES ドメイン名。

MaxResults Integer いいえ 結果の数を制限します。30~100を指定する必要があります。

NextToken String いいえ ページ分割に使用されます。以前の API 呼び出しで NextToken を含む結果が生成された場合のみ必要です。次のトークンの入力を受け入れて次のページの結果を返し、応答として次のトークンの出力を提供します。クライアントは、このトークンを使用してさらに結果を取得できます。

API バージョン 2015-01-01212

Page 221: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドListElasticsearchInstanceTypes (廃止)

リクエストボディこのオペレーションでは HTTP リクエストボディを使用しません。

レスポンス要素

フィールド データタイプ 説明

ElasticsearchInstanceTypesList 指定された Elasticsearch バージョンでサポートされるインスタンスタイプ、およびこれらのインスタンスタイプでサポートされている機能を一覧表示します。

NextToken String ページ分割に使用されます。以前の API 呼び出しで NextToken を含む結果が生成された場合のみ必要です。次のトークンの入力を受け入れて次のページの結果を返し、応答として次のトークンの出力を提供します。クライアントは、このトークンを使用してさらに結果を取得できます。

エラーListElasticsearchInstanceTypeDetails は次のエラーを返すことができます。

• BaseException (p. )• InternalException (p. )• ResourceNotFoundException (p. )• ValidationException (p. )

ListElasticsearchInstanceTypes (廃止)指定された Elasticsearch バージョンでサポートされているすべての Elasticsearch インスタンスタイプを一覧表示します。このアクションは廃止されました。代わりにListElasticsearchInstanceTypeDetails (p. 212) を使用してください。

構文GET https://es.us-east-1.amazonaws.com/2015-01-01/es/instanceTypes/elasticsearch-version?domainName=domain-name&maxResults=max-results&nextToken=next-token

リクエストパラメータ

パラメータ データ型 必須? 説明

ElasticsearchVersionString はい Elasticsearch バージョン。

DomainName String いいえ Amazon ES ドメイン名。

MaxResults Integer いいえ 結果の数を制限します。30~100を指定する必要があります。

API バージョン 2015-01-01213

Page 222: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドListElasticsearchVersions

パラメータ データ型 必須? 説明

NextToken String いいえ ページ分割に使用されます。以前の API 呼び出しで NextToken を含む結果が生成された場合のみ必要です。次のトークンの入力を受け入れて次のページの結果を返し、応答として次のトークンの出力を提供します。クライアントは、このトークンを使用してさらに結果を取得できます。

リクエストボディこのオペレーションでは HTTP リクエストボディを使用しません。

レスポンス要素

フィールド データタイプ 説明

ElasticsearchInstanceTypesList 指定された Elasticsearch バージョンでサポートされるインスタンスタイプのリスト。

NextToken String ページ分割に使用されます。以前の API 呼び出しで NextToken を含む結果が生成された場合のみ必要です。次のトークンの入力を受け入れて次のページの結果を返し、応答として次のトークンの出力を提供します。クライアントは、このトークンを使用してさらに結果を取得できます。

エラーListElasticsearchInstanceTypes は次のエラーを返すことができます。

• BaseException (p. )• InternalException (p. )• ResourceNotFoundException (p. )• ValidationException (p. )

ListElasticsearchVersionsAmazon ES でサポートされている Elasticsearch バージョンをすべて一覧表示します。

構文

GET https://es.us-east-1.amazonaws.com/2015-01-01/es/versions?maxResults=max-results&nextToken=next-token

API バージョン 2015-01-01214

Page 223: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドListTags

リクエストパラメータ

パラメータ データ型 必須? 説明

MaxResults Integer いいえ 結果の数を制限します。30~100を指定する必要があります。

NextToken String いいえ ページ分割に使用されます。以前の API 呼び出しで NextToken を含む結果が生成された場合のみ必要です。次のトークンの入力を受け入れて次のページの結果を返し、応答として次のトークンの出力を提供します。クライアントは、このトークンを使用してさらに結果を取得できます。

リクエストボディこのオペレーションでは HTTP リクエストボディを使用しません。

レスポンス要素

フィールド データタイプ 説明

ElasticsearchVersions List サポートされている Elasticsearch バージョンをすべて一覧表示します。

NextToken String ページ分割に使用されます。以前の API 呼び出しで NextToken を含む結果が生成された場合のみ必要です。次のトークンの入力を受け入れて次のページの結果を返し、応答として次のトークンの出力を提供します。クライアントは、このトークンを使用してさらに結果を取得できます。

エラーListElasticsearchVersions は次のエラーを返すことができます。

• BaseException (p. )• InternalException (p. )• ResourceNotFoundException (p. )• ValidationException (p. )

ListTagsAmazon ES ドメインのリソースタグをすべて表示します。

API バージョン 2015-01-01215

Page 224: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドPurchaseReservedElasticsearchInstanceOffering

構文GET https://es.us-east-1.amazonaws.com/2015-01-01/tags?arn=domain-arn

リクエストパラメータ

パラメータ データ型 必須? 説明

ARN ARN (p. 224) はい Amazon ES ドメインの Amazon リソースネーム (ARN)。

リクエストボディこのオペレーションでは HTTP リクエストボディを使用しません。

レスポンス要素

フィールド データタイプ 説明

TagList TagList (p. 234) リソースタグの一覧。詳細については、「AmazonElasticsearch Service ドメインのタグ付け (p. 43)」を参照してください。

エラーListTags オペレーションは次のエラーを返すことができます。

• BaseException (p. )• ResourceNotFoundException (p. )• ValidationException (p. )• InternalException (p. )

PurchaseReservedElasticsearchInstanceOfferingリザーブドインスタンスを購入します。

構文POST https://es.us-east-1.amazonaws.com/2015-01-01/es/purchaseReservedInstanceOffering{ "ReservationName" : "my-reservation", "ReservedElasticsearchInstanceOfferingId" : "1a2a3a4a5-1a2a-3a4a-5a6a-1a2a3a4a5a6a", "InstanceCount" : 3}

リクエストパラメータこのオペレーションでは HTTP リクエストパラメータを使用しません。

API バージョン 2015-01-01216

Page 225: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドRemoveTags

リクエストボディ

名前 データ型 必須? 説明

ReservationName文字列 はい 予約のわかりやすい名前。

ReservedElasticsearchInstanceOfferingId文字列 はい 提供 ID。

InstanceCount 整数 はい 予約する必要があるインスタンスの数。

レスポンス要素

フィールド データタイプ 説明

ReservationName 文字列 予約の名前。

ReservedElasticsearchInstanceId文字列 予約 ID。

エラーPurchaseReservedElasticsearchInstance オペレーションは次のエラーを返すことができます。

• DisabledOperationException (p. )• InternalException (p. )• ResourceNotFoundException (p. )• ValidationException (p. )• LimitExceededException (p. )• ResourceAlreadyExistsException (p. )

RemoveTagsAmazon ES ドメインから指定したリソースタグを削除します。

構文

POST https://es.us-east-1.amazonaws.com/2015-01-01/tags-removal{ "ARN": "arn:aws:es:us-east-1:123456789012:domain/my-domain", "TagKeys": [ "tag-key1", "tag-key2" ]}

リクエストパラメータこのオペレーションでは HTTP リクエストパラメータを使用しません。

API バージョン 2015-01-01217

Page 226: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドStartElasticsearchServiceSoftwareUpdate

リクエストボディ

パラメータ データ型 必須? 説明

ARN ARN (p. 224) はい Amazon ES ドメインの Amazon リソースネーム (ARN)。詳細については、AWSIdentity and Access Management の使用の「IAM エンティティのための ID」を参照してください。

TagKeys TagKey (p. 234) はい Amazon ES ドメインから削除するリソースタグのタグキーのリスト。

レスポンス要素適用されません。RemoveTags オペレーションでは、レスポンス要素は返しません。

エラーRemoveTags オペレーションは次のエラーを返すことができます。

• BaseException (p. )• ValidationException (p. )• InternalException (p. )

StartElasticsearchServiceSoftwareUpdateAmazon ES ドメインのサービスソフトウェア更新をスケジュール設定します。

構文

POST https://es.us-east-1.amazonaws.com/2015-01-01/es/serviceSoftwareUpdate/start{ "DomainName": "domain-name"}

リクエストパラメータこのオペレーションでは HTTP リクエストパラメータを使用しません。

リクエストボディ

パラメータ データ型 必須? 説明

DomainName DomainName (p. 226) はい 最新のサービスソフトウェアに更新するAmazon ES ドメインの名前。

API バージョン 2015-01-01218

Page 227: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドStopElasticsearchServiceSoftwareUpdate

レスポンス要素

フィールド データタイプ 説明

ServiceSoftwareOptionsServiceSoftwareOptions最新のサービスソフトウェアに対するドメインの状態を表すコンテナ。

エラーRemoveTags オペレーションは次のエラーを返すことができます。

• BaseException (p. )• ValidationException (p. )• InternalException (p. )• ResourceNotFoundException (p. )

StopElasticsearchServiceSoftwareUpdateAmazon ES ドメイン用にスケジュール設定されたサービスソフトウェア更新を停止します。ドメインのUpdateStatus が PENDING_UPDATE の場合にのみ機能します。

構文

POST https://es.us-east-1.amazonaws.com/2015-01-01/es/serviceSoftwareUpdate/stop{ "DomainName": "domain-name"}

リクエストパラメータこのオペレーションでは HTTP リクエストパラメータを使用しません。

リクエストボディ

パラメータ データ型 必須? 説明

DomainName DomainName (p. 226) はい 最新のサービスソフトウェアに更新するAmazon ES ドメインの名前。

レスポンス要素

フィールド データタイプ 説明

ServiceSoftwareOptionsServiceSoftwareOptions (p. 233)最新のサービスソフトウェアに対するドメインの状態を表すコンテナ。

API バージョン 2015-01-01219

Page 228: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドUpdateElasticsearchDomainConfig

エラーRemoveTags オペレーションは次のエラーを返すことができます。

• BaseException (p. )• ValidationException (p. )• InternalException (p. )• ResourceNotFoundException (p. )

UpdateElasticsearchDomainConfigインスタンスタイプやインスタンス数など、Amazon ES ドメインの設定を調整します。更新する値の指定のみ必要です。

構文

POST https://es.us-east-1.amazonaws.com/2015-01-01/es/domain/<DOMAIN_NAME>/config{ "ElasticsearchClusterConfig": { "ZoneAwarenessConfig": { "AvailabilityZoneCount": 3 }, "ZoneAwarenessEnabled": true|false, "InstanceCount": 3, "DedicatedMasterEnabled": true|false, "DedicatedMasterType": "c5.large.elasticsearch", "DedicatedMasterCount": 3, "InstanceType": "r5.large.elasticsearch", "WarmCount": 6, "WarmType": "ultrawarm1.medium.elasticsearch" }, "EBSOptions": { "EBSEnabled": true|false, "VolumeType": "io1|gp2|standard", "Iops": 1000, "VolumeSize": 35 }, "SnapshotOptions": { "AutomatedSnapshotStartHour": 3 }, "VPCOptions": { "SubnetIds": ["subnet-abcdefg1", "subnet-abcdefg2", "subnet-abcdefg3"], "SecurityGroupIds": ["sg-12345678"] }, "AdvancedOptions": { "rest.action.multi.allow_explicit_index": "true|false", "indices.fielddata.cache.size": "40", "indices.query.bool.max_clause_count": "1024" }, "CognitoOptions": { "Enabled": true|false, "UserPoolId": "us-east-1_121234567", "IdentityPoolId": "us-east-1:12345678-1234-1234-1234-123456789012", "RoleArn": "arn:aws:iam::123456789012:role/service-role/CognitoAccessForAmazonES" }, "DomainEndpointOptions": { "EnforceHTTPS": true|false, "TLSSecurityPolicy": "Policy-Min-TLS-1-2-2019-07|Policy-Min-TLS-1-0-2019-07" },

API バージョン 2015-01-01220

Page 229: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドUpdateElasticsearchDomainConfig

"LogPublishingOptions": { "SEARCH_SLOW_LOGS": { "CloudWatchLogsLogGroupArn":"arn:aws:logs:us-east-1:264071961897:log-group1:sample-domain", "Enabled":true|false }, "INDEX_SLOW_LOGS": { "CloudWatchLogsLogGroupArn":"arn:aws:logs:us-east-1:264071961897:log-group2:sample-domain", "Enabled":true|false }, "ES_APPLICATION_LOGS": { "CloudWatchLogsLogGroupArn":"arn:aws:logs:us-east-1:264071961897:log-group3:sample-domain", "Enabled":true|false } }, "DomainName": "my-domain", "AccessPolicies": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"*\"]},\"Action\":[\"es:*\"],\"Resource\":\"arn:aws:es:us-east-1:123456789012:domain/my-domain/*\"}]}"}

リクエストパラメータこのオペレーションでは HTTP リクエストパラメータを使用しません。

リクエストボディ

パラメータ データ型 必須? 説明

DomainName DomainName (p. 226) はい 設定を更新する Amazon ES ドメインの名前。

ElasticsearchClusterConfigElasticsearchClusterConfig (p. 227)いいえ EC2 インスタンスのインスタンスタイプや数など、クラスター設定に対して行う変更。

EBSOptions EBSOptions (p. 227) いいえ データノードにアタッチされた EBSボリュームのサイズ。

VPCOptions VPCOptions (p. 235) いいえ VPC で動作するように Amazon ESを設定するために必要な値のコンテナ。詳細については、「AmazonElasticsearch Service ドメインのVPC サポート (p. 132)」を参照してください。

SnapshotOptions SnapshotOptions (p. 234) いいえ DEPRECATED.Amazon ES ドメインでサービスがインデックスの自動スナップショットを毎日作成する時間。

AdvancedOptions AdvancedOptions (p. 223) いいえ 詳細な設定オプションを指定するためのキーと値のペア。詳細については「詳細オプションの設定 (p. 20)」を参照してください。

AccessPolicies 文字列 いいえ Amazon ES ドメインへのアクセスポリシーを指定します。詳細につ

API バージョン 2015-01-01221

Page 230: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドUpgradeElasticsearchDomain

パラメータ データ型 必須? 説明いては、「アクセスポリシーの設定 (p. 18)」を参照してください。

LogPublishingOptionsLogPublishingOptions (p. 231)いいえ スローログの発行を設定するためのキーと値の文字列のペア。

CognitoOptions CognitoOptions (p. 225) いいえ Kibana で Amazon Cognito 認証を使用するように Amazon ES を設定するためのキーと値のペア。

DomainEndpointOptionsthe section called“DomainEndpointOptions” (p. 226)

いいえ ドメインエンドポイントの追加オプション (すべてのトラフィックで HTTPS を必須にするかどうかなど)。

レスポンス要素

フィールド データタイプ

DomainConfig the section called“ElasticsearchDomainConfig” (p. 228)

エラーUpdateElasticsearchDomainConfig は次のエラーを返すことができます。

• BaseException (p. )• InternalException (p. )• InvalidTypeException (p. )• LimitExceededException (p. )• ValidationException (p. )

UpgradeElasticsearchDomainAmazon ES ドメインを Elasticsearch の新しいバージョンにアップグレードします。または、アップグレードの適格性を確認します。

構文

POST https://es.us-east-1.amazonaws.com/2015-01-01/es/upgradeDomain{ "DomainName": "domain-name", "TargetVersion": "7.1", "PerformCheckOnly": true|false}

リクエストパラメータこのオペレーションでは HTTP リクエストパラメータを使用しません。

API バージョン 2015-01-01222

Page 231: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドデータ型

リクエストボディ

パラメータ データ型 必須? 説明

DomainName 文字列 はい アップグレードする Amazon ES ドメインの名前。

TargetVersion 文字列 はい アップグレードする Elasticsearchバージョン。「the section called“GetCompatibleElasticsearchVersions” (p. 208)」を参照してください。

PerformCheckOnly Boolean いいえ デフォルトは false です。true の場合、Amazon ES はドメインの適格性を確認しますが、アップグレードは実行しません。

レスポンス要素

フィールド データタイプ 説明

UpgradeElasticsearchDomainResponseマップ オペレーションの詳細を確認する基本レスポンス。

エラーUpdateElasticsearchDomainConfig は次のエラーを返すことができます。

• BaseException (p. )• ResourceNotFound (p. )

• ResourceAlreadyExists (p. )

• DisabledOperation (p. )

• ValidationException (p. )• Internal (p. )

データ型このセクションでは、REST 設定 API で使用されるデータタイプについて説明します。

AdvancedOptionsElasticsearch の詳細設定オプションを指定するためのキーと値のペア。

フィールド データタイプ 説明

rest.action.multi.allow_explicit_indexキーと値のペア:

"rest.action.multi.allow_explicit_index":"true"

文字列の使用に注意してください。HTTP リ

API バージョン 2015-01-01223

Page 232: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドARN

フィールド データタイプ 説明クエストボディ中で、インデックスへの明示参照を許可するかどうかを指定します。特定のインデックスやドメイン API など、ドメインのサブリソースのアクセスポリシーを設定する場合、このプロパティを無効にする必要があります。詳細については、「URL-basedAccess Control」を参照してください。サブリソースのためのアクセスポリシーについては、「アクセスポリシーの設定 (p. 18)」を参照してください。

indices.fielddata.cache.sizeキーと値のペア:

"indices.fielddata.cache.size":"80"

文字列の使用に注意してください。フィールドデータに割り当てられる Java ヒープスペースの割合を指定します。デフォルトでは、この設定は unboundedです。

indices.query.bool.max_clause_countキーと値のペア:

"indices.query.bool.max_clause_count":"1024"

文字列の使用に注意してください。Luceneのブールクエリで許可される句の最大数を指定します。デフォルト値は 1,024 です。クエリに含まれる句の数が最大数を超えていると、TooManyClausesエラーが発生します。詳細については、Lucene のドキュメントを参照してください。

ARN

フィールド データタイプ 説明

ARN 文字列 Amazon ES ドメインの Amazon リソースネーム (ARN)。詳細については、AWSIdentity and Access Management ドキュメントの「IAM ARN」を参照してください。

API バージョン 2015-01-01224

Page 233: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドCognitoOptions

CognitoOptions

フィールド データタイプ 説明

Enabled ブール値 Kibana の Amazon Cognito 認証を有効または無効にするかどうか。「Kibana の認証 (p. 117)」を参照してください。

UserPoolId 文字列 Amazon ES で Kibana 認証に使用する AmazonCognito ユーザープール ID。

IdentityPoolId 文字列 Amazon ES で Kibana 認証に使用する AmazonCognito ID プール ID。

RoleArn 文字列 Amazon ES でユーザープールと ID プールの設定を許可する AmazonESCognitoAccess ロール。

CreateElasticsearchDomainRequestCreateElasticsearchDomain サービス運用に必要なパラメータのコンテナ。

フィールド データタイプ 説明

DomainName DomainName (p. 226) 作成する Amazon ES ドメインの名前。

ElasticsearchClusterConfigElasticsearchClusterConfig (p. 227)Amazon ES ドメインのクラスター設定のコンテナ。

EBSOptions EBSOptions (p. 227) Amazon ES ドメインの EBS ベースのストレージを有効にするために必要な、パラメータのコンテナ。詳細については、「EBS ベースのストレージの設定 (p. 15)」を参照してください。

AccessPolicies 文字列 新しい Amazon ES ドメインのアクセスポリシーを指定する IAM ポリシードキュメント。詳細については、「アクセスポリシーの設定 (p. 18)」を参照してください。

DomainEndpointOptions DomainEndpointOptions (p. 226)ドメインエンドポイントの追加オプション(すべてのトラフィックで HTTPS を必須にするかどうかなど)。

SnapshotOptions SnapshotOptions (p. 234) DEPRECATED.ドメインインデックスの自動スナップショットを設定するために必要なパラメータのコンテナ。

VPCOptions VPCOptions (p. 235) VPC で動作するように Amazon ES を設定するために必要な値のコンテナ。

LogPublishingOptions LogPublishingOptions (p. 231)スローログの発行を設定するためのキーと値の文字列のペア。

AdvancedOptions the section called“AdvancedOptions” (p. 223)

詳細な設定オプションを指定するためのキーと値のペア。

API バージョン 2015-01-01225

Page 234: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドDomainEndpointOptions

フィールド データタイプ 説明

CognitoOptions CognitoOptions (p. 225) Kibana で Amazon Cognito 認証を使用するように Amazon ES を設定するためのキーと値のペア。

NodeToNodeEncryptionOptionsNodeToNodeEncryptionOptions (p. 232)ノード間の暗号化を有効にするには trueを指定します。

DomainEndpointOptions

フィールド データタイプ 説明

EnforceHTTPS Boolean ドメインへのすべてのトラフィックがHTTPS 経由で到着することを要求する場合は true。

TLSSecurityPolicy 文字列 ドメインへのトラフィックに必要な最小TLS バージョン。有効な値は TLS 1.0 (デフォルト) または 1.2 です。

• Policy-Min-TLS-1-0-2019-07

• Policy-Min-TLS-1-2-2019-07

DomainID

データ型 説明

文字列 Amazon ES ドメイン用の一意の識別子。

DomainNameAmazon ES ドメインの名前。

データ型 説明

文字列 Amazon ES ドメインの名前。ドメイン名は、AWS リージョン内の同じアカウントによって所有されるドメイン間で一意です。ドメイン名は小文字で始まり、3~28 文字で構成される必要があります。有効な文字は、a ~ z(小文字のみ)、0 ~ 9、– (ハイフン) です。

DomainNameListAmazon ES ドメイン名の文字列。

データ型 説明

文字列配列 次の形式の Amazon ES ドメインの配列:

API バージョン 2015-01-01226

Page 235: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドEBSOptions

データ型 説明["<Domain_Name>","<Domain_Name>"...]

EBSOptionsAmazon ES ドメインの EBS ベースのストレージを有効にするために必要な、パラメータのコンテナ。詳細については、「EBS ベースのストレージの設定 (p. 15)」を参照してください。

フィールド データタイプ 説明

EBSEnabled ブール値 EBS ボリュームを Amazon ES ドメインのデータノードにアタッチするかどうかを表します。

VolumeType 文字列 データノードにアタッチされた EBS ボリュームのタイプを指定します。

VolumeSize 文字列 データノードにアタッチされた EBS ボリュームのサイズ (GiB) を指定します。

Iops 文字列 データノードにアタッチされた EBS ボリュームのベースライン入出力 (I/O) パフォーマンスを指定します。プロビジョニングされた IOPS EBS ボリュームタイプに対してのみ適用できます。

ElasticsearchClusterConfigAmazon ES ドメインのクラスター設定のコンテナ。

フィールド データタイプ 説明

InstanceType 文字列 クラスターのデータノードのインスタンスタイプ。

InstanceCount 整数 クラスターのインスタンスの数。

DedicatedMasterEnabled ブール値 専用マスターノードがクラスターに対して有効かどうかを表します。クラスターが専用マスターノードを使用する場合は、True。クラスターが専用マスターノードを使用しない場合は、False。詳細については、「専用マスターノードについて (p. 144)」を参照してください。

DedicatedMasterType 文字列 クラスターの専用マスターノードの Amazon ES インスタンスタイプ。

DedicatedMasterCount 整数 クラスター内の専用マスターノードの数。

ZoneAwarenessEnabled ブール値 複数のアベイラビリティーゾーンが有効になっているかどうかを示します。詳細については、「the section called “マルチ AZ ドメインの設定” (p. 29)」を参照してください。

API バージョン 2015-01-01227

Page 236: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドElasticsearchDomainConfig

フィールド データタイプ 説明

ZoneAwarenessConfig ZoneAwarenessConfig (p. 236)ゾーン対応設定オプションのコンテナ。ZoneAwarenessEnabled が true の場合のみ必須です。

WarmEnabled Boolean クラスターのウォームストレージを有効にするかどうか。

WarmCount 整数 クラスターのウォームノード数。

WarmType 文字列 クラスターのウォームノードのインスタンスタイプ。

WarmStorage 整数 プロビジョニングされたウォームストレージの総量 (GiB)。

ElasticsearchDomainConfigAmazon ES ドメイン設定のコンテナ。

フィールド データタイプ 説明

ElasticsearchVersion 文字列 Elasticsearch バージョン。

ElasticsearchClusterConfig ElasticsearchClusterConfig (p. 227)Amazon ES ドメインのクラスター設定のコンテナ。

EBSOptions EBSOptions (p. 227) Amazon ES ドメイン用に設定された EBS オプションのコンテナ。

AccessPolicies 文字列 Amazon ES ドメインへのアクセスポリシーを指定します。詳細については、「アクセスポリシーの設定 (p. 18)」を参照してください。

SnapshotOptions SnapshotOptions (p. 234) DEPRECATED.Amazon ES ドメインでサービスがインデックスの自動スナップショットを毎日作成する時間。

DomainEndpointOptions DomainEndpointOptions (p. 226)ドメインエンドポイントの追加オプション (すべてのトラフィックで HTTPS を必須にするかどうかなど)。

VPCOptions VPCDerivedInfo (p. 235) ドメインの現在のVPCOptions (p. 235) と設定におけるすべての更新状態。

LogPublishingOptions LogPublishingOptions (p. 231)スローログの発行を設定するためのキーと値のペア。

AdvancedOptions AdvancedOptions (p. 223) 詳細な設定オプションを指定するためのキーと値のペア。

API バージョン 2015-01-01228

Page 237: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドElasticsearchDomainStatus

フィールド データタイプ 説明

EncryptionAtRestOptions EncryptionAtRestOptions (p. 231)保管時に暗号化するためのキーと値のペア。

NodeToNodeEncryptionOptions NodeToNodeEncryptionOptions (p. 232)ノード間の暗号化が有効か無効か。

ElasticsearchDomainStatusDomainStatus データ構造のコンテンツのコンテナ。

フィールド データタイプ 説明

DomainID DomainID (p. 226) Amazon ES ドメイン用の一意の識別子。

DomainName DomainName (p. 226) Amazon ES ドメインの名前。ドメイン名は、AWS リージョン内の同じアカウントによって所有されるドメイン間で一意です。ドメイン名は小文字で始まり、3~28 文字で構成される必要があります。有効な文字は、a ~z (小文字のみ)、0 ~ 9、– (ハイフン) です。

ARN ARN (p. 224) Amazon ES ドメインの Amazonリソースネーム (ARN)。詳細については、AWS Identity andAccess Management の使用の「IAM エンティティのためのID」を参照してください。

Created ブール値 Amazon ES ドメインの作成のステータス。ドメイン作成が完了している場合、True。ドメイン作成が進行中の場合、False。

Deleted ブール値 Amazon ES ドメインの削除のステータス。ドメイン削除が完了している場合、True。ドメイン削除が進行中の場合、False。

Endpoint ServiceUrl (p. 233) インデックス、検索、データアップロードのリクエストをAmazon ES ドメインに送信するために使用されるドメイン固有のエンドポイント。

Endpoints EndpointsMap (p. 231) Amazon ES ドメインが VPC エンドポイントを使用する場合に存在するキー値ペア。

Processing ブール値 Amazon ES ドメインの設定変更のステータス。サービスが、まだ設定変更を処理している場

API バージョン 2015-01-01229

Page 238: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドElasticsearchDomainStatus

フィールド データタイプ 説明合、True。設定変更がアクティブである場合、False。ドメインのステータスがアクティブになるのを待ってから、インデックス、検索、データアップロードのリクエストを送信する必要があります。

ElasticsearchVersion 文字列 Elasticsearch バージョン。

ElasticsearchClusterConfig ElasticsearchClusterConfig (p. 227)Amazon ES ドメインのクラスター設定のコンテナ。

EBSOptions EBSOptions (p. 227) Amazon ES ドメインの EBSベースのストレージを有効にするために必要な、パラメータのコンテナ。詳細については、「EBS ベースのストレージの設定 (p. 15)」を参照してください。

AccessPolicies 文字列 新しい Amazon ES ドメインのアクセスポリシーを指定する IAMポリシードキュメント。詳細については、「アクセスポリシーの設定 (p. 18)」を参照してください。

SnapshotOptions SnapshotOptions (p. 234) DEPRECATED.毎日実行される、Amazon ES ドメインのインデックスの自動スナップショットの時刻を設定するために必要なパラメータのコンテナ。

VPCOptions VPCDerivedInfo (p. 235) ドメインのVPCOptions (p. 235) に基づいて Amazon ES が取得する情報。

LogPublishingOptions LogPublishingOptions (p. 231)スローログの発行を設定するためのキーと値のペア。

AdvancedOptions AdvancedOptions (p. 223) 詳細な設定オプションを指定するためのキーと値のペア。

EncryptionAtRestOptions EncryptionAtRestOptions (p. 231)保管時に暗号化するためのキーと値のペア。

CognitoOptions CognitoOptions (p. 225) Kibana で Amazon Cognito 認証を使用するように Amazon ESを設定するためのキーと値のペア。

NodeToNodeEncryptionOptionsNodeToNodeEncryptionOptions (p. 232)ノード間の暗号化が有効か無効か。

API バージョン 2015-01-01230

Page 239: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドElasticsearchDomainStatusList

フィールド データタイプ 説明

UpgradeProcessing Boolean 新しい Elasticsearch バージョンへのアップグレードが進行中の場合は True。

ServiceSoftwareOptions the section called“ServiceSoftwareOptions” (p. 233)

ドメインのサービスソフトウェアのステータス。

ElasticsearchDomainStatusList指定された各 Amazon ES ドメインのステータスを格納するリスト。

フィールド データタイプ 説明

DomainStatusList ElasticsearchDomainStatus (p. 229)指定された各 Amazon ES ドメインのステータスを格納するリスト。

EncryptionAtRestOptionsドメインで保管時のデータを暗号化するかどうかと、暗号化する場合は使用する AWS Key ManagementService (KMS) キーを指定します。新しいドメインの作成にのみ使用でき、既存のドメインの更新には使用できません。

フィールド データタイプ 説明

Enabled ブール値 保管時に暗号化するにはtrue を指定します。

KmsKeyId 文字列 KMS キー ID。形式は1a2a3a4-1a2a-3a4a-5a6a-1a2a3a4a5a6aです。

EndpointsMapVPC エンドポイントを含むキー値ペア。Amazon ES ドメインが VPC 内にある場合にのみ存在します。

フィールド データタイプ 説明

Endpoints キー値文字列のペア: "vpc":"<VPC_ENDPOINT>"

ドメインの VPC エンドポイント。

LogPublishingOptionsAmazon ES ドメインから Elasticsearch アプリケーションとスローログを Amazon CloudWatch に発行するかどうかを指定します。さらに、Elasticsearch REST API を使用してスローログのコレクションを有効にする必要があります。詳細については、「the section called “スローログの Elasticsearch ログしきい値の設定” (p. 24)」を参照してください。

API バージョン 2015-01-01231

Page 240: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドNodeToNodeEncryptionOptions

フィールド データタイプ 説明

INDEX_SLOW_LOGS Key-value CloudWatch ロググループや、そのロググループに Elasticsearch インデックススローログを発行するかどうかを定義するキーと値のペア。

"CloudWatchLogsLogGroupArn":"arn:aws:logs:us-east-1:264071961897:log-group:sample-domain","Enabled":true

SEARCH_SLOW_LOGS Key-value CloudWatch ロググループや、そのロググループに Elasticsearch 検索スローログを発行するかどうかを定義するキーと値のペア。

"CloudWatchLogsLogGroupArn":"arn:aws:logs:us-east-1:264071961897:log-group:sample-domain","Enabled":true

ES_APPLICATION_LOGS Key-value CloudWatch ロググループや、そのロググループに Elasticsearch エラーログを発行するかどうかを定義するキーと値のペア。

"CloudWatchLogsLogGroupArn":"arn:aws:logs:us-east-1:264071961897:log-group:sample-domain","Enabled":true

NodeToNodeEncryptionOptionsノード間の暗号化を有効または無効にします。

フィールド データタイプ 説明

Enabled ブール値 true で有効化します。

OptionStateAmazon ES ドメインの詳細オプションの更新の状態。

フィールド データタイプ 説明

OptionStatus 文字列 3 つの有効な値のうちの 1 つ:

• RequiresIndexDocuments• Processing• Active

API バージョン 2015-01-01232

Page 241: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドOptionStatus

OptionStatusAmazon ES ドメイン用設定オプションの更新のステータス。

フィールド データタイプ 説明

CreationDate タイムスタンプ Amazon ES ドメインが作成された日時。

UpdateDate タイムスタンプ Amazon ES ドメインが更新された日時。

UpdateVersion 整数 エンティティの最新バージョンを指定する整数

State OptionState (p. 232) Amazon ES ドメイン用設定オプションの更新の状態。

PendingDeletion Boolean Amazon ES ドメインとそのリソースすべてを完全に削除するリクエストを、サービスが処理しているかどうかを表します。

ServiceSoftwareOptions最新のサービスソフトウェアに対するドメインの状態を表すコンテナ。

フィールド データタイプ 説明

UpdateAvailable ブール値 ドメインでサービスソフトウェア更新が利用可能かどうか。

Cancellable ブール値 ドメインの更新をリクエストしている場合は、更新をキャンセルできるかどうか。

AutomatedUpdateDate Timestamp デプロイのウィンドウが閉じられるエポック時間。この時間を過ぎると、Amazon ESは自動的にソフトウェアアップグレードのスケジュールを設定します。

UpdateStatus 文字列 更新のステータス。値は、ELIGIBLE、PENDING_UPDATE、IN_PROGRESS、COMPLETED、および NOT_ELIGIBLE です。

Description 文字列 ステータスに関する詳細な説明。

CurrentVersion 文字列 現在のサービスソフトウェアバージョン。

NewVersion 文字列 最新のサービスソフトウェアバージョン。

ServiceURLインデックス、検索、データアップロードのリクエストを Amazon ES ドメインに送信するために使用されるドメイン固有のエンドポイント。

API バージョン 2015-01-01233

Page 242: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドSnapshotOptions

フィールド データタイプ 説明

ServiceURL 文字列 インデックス、検索、データアップロードのリクエストをAmazon ES ドメインに送信するために使用されるドメイン固有のエンドポイント。

SnapshotOptionsDEPRECATED.「インデックススナップショットの使用 (p. 97)」を参照してください。Amazon ES ドメインで、毎日実行されるインデックスの自動スナップショットの時刻を設定するために必要なパラメータのコンテナ。

フィールド データタイプ 説明

AutomatedSnapshotStartHour 整数 DEPRECATED.Amazon ES ドメインでサービスがインデックスの自動スナップショットを毎日作成する時間。

Tag

フィールド データタイプ 説明

Key TagKey (p. 234) タグに必要な名前。タグキーは添付されるAmazon ES ドメインで一意にする必要があります。詳細については、「Amazon ElasticsearchService ドメインのタグ付け (p. 43)」を参照してください。

Value TagValue (p. 235) タグの文字列値 (オプション)。タグ値は null を指定できます。また、タグセット内で一意である必要はありません。例えば、project/Trinity とcost-center/Trinity のタグセット内に 1 つのキーと値のペアを使用できます。

TagKey

フィールド データタイプ 説明

Key 文字列 タグの名前。文字列は 128 文字まで設定できます。

TagList

フィールド データタイプ 説明

Tag Tag (p. 234) Amazon ES ドメインに添付されたリソースタグ。

API バージョン 2015-01-01234

Page 243: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドTagValue

TagValue

フィールド データタイプ 説明

Value 文字列 TagKey に対し、値を保持します。文字列は 256文字まで設定できます。

VPCDerivedInfo

フィールド データタイプ 説明

VPCId 文字列 VPC の ID。VPC を作成する場合に Amazon VPCはこの値を生成します。

SubnetIds StringList ドメインの VPC エンドポイントに関連付けられるサブネット ID のリスト。詳細については、『Amazon VPC ユーザーガイド』の「VPC とサブネット」を参照してください。

AvailabilityZones StringList VPC サブネットに関連付けられるアベイラビリティゾーンのリスト。詳細については、「Amazon VPC ユーザーガイド」の「VPC とサブネットの基本」を参照してください。

SecurityGroupIds StringList ドメインの VPC エンドポイントに関連付けられるセキュリティグループ ID のリスト。詳細については、「Amazon VPC ユーザーガイド」の「VPC のセキュリティグループ」を参照してください。

VPCOptions

フィールド データタイプ 説明

SubnetIds StringList ドメインの VPC エンドポイントに関連付けられるサブネット ID のリスト。ドメインで複数のアベイラビリティーゾーンが使用されている場合は、ゾーンごとに 1 つずつ、2 つのサブネット ID を提供する必要があります。それ以外の場合は、1 つのみを指定します。詳細については、Amazon VPC ユーザーガイドの「VPC とサブネット」を参照してください。

SecurityGroupIds StringList ドメインの VPC エンドポイントに関連付けられるセキュリティグループ ID のリスト。セキュリティグループ ID を提供しない場合、Amazon ESは VPC にデフォルトのセキュリティグループを使用します。詳細については、Amazon VPC ユーザーガイドの「VPC のセキュリティグループ」を参照してください。

VPCId 文字列 VPC の ID。

API バージョン 2015-01-01235

Page 244: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドZoneAwarenessConfig

ZoneAwarenessConfig

フィールド データタイプ 説明

AvailabilityZoneCount 整数 複数のアベイラビリティーゾーン (AZ) を有効にした場合、このフィールドはドメインで使用するゾーンの数です。有効な値は、2 および 3 です。

エラーAmazon ES は次のエラーをスローします。

Exception 説明

BaseException すべてのサービスエラーにスローされます。エラーの HTTP ステータスコードを格納します。

ValidationException HTTP リクエストに無効な入力が含まれているか、必要な入力が欠けていると、スローされます。HTTP ステータスコード 400 を返します。

DisabledOperationException クライアントがサポート対象外のオペレーションを実行しようとするとスローされます。HTTP ステータスコード 409 を返します。

InternalException リクエストの処理中にサービスの内部エラーが発生するとスローされます。HTTP ステータスコード 500 を返します。

InvalidTypeException Amazon ES ドメインの、無効、またはサポートされていないサブリソースを作成、またはアクセスしようとするとスローされます。HTTP ステータスコード 409 を返します。

LimitExceededException Amazon ES ドメインのリソースとサブリソースを、許可された数以上作成しようとしたり、許可されていないタイプを作成しようとすると、スローされます。HTTP ステータスコード 409 を返します。

ResourceNotFoundException 存在しないリソースにアクセスしたり、削除すると、スローされます。HTTP ステータスコード 400 を返します。

ResourceAlreadyExistsExceptionクライアントが、Amazon ES ドメイン内にすでに存在するリソースを作成しようとすると、スローされます。HTTP ステータスコード 400 を返します。

API バージョン 2015-01-01236

Page 245: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドクラスターとインスタンスの制限

Amazon Elasticsearch Service の制限次のテーブルは、クラスターあたりのノード数、EBS ボリュームの最小サイズと最大サイズ、ネットワーク制限など、Amazon ES リソースの制限を示しています。

クラスターとインスタンスの制限次の表は、Amazon ES におけるクラスターとインスタンスの制限について示しています。

クラスターとインスタンス 制限

クラスターあたりのデータノード(ウォームノードを含む) の最大数

40 (最大 10 の T2 インスタンスタイプを除く)。

Note

デフォルトの制限は、クラスターあたり 40 個のデータノードです。ドメインあたり 200 までの引き上げ(Elasticsearch 2.3 以降の場合) をリクエストするには、AWS サポートセンターでサポートケースを作成してください。引き上げのリクエストの詳細については、「AWS サービスの制限」を参照してください。

クラスターあたりのウォームノードの最大数

45

専用マスターノードの最大数 5

Note

データノード数が 10 以下の場合にのみ、専用マスターノードに T2 インスタンスタイプを使用できます (本稼働ドメインには推奨されません)。

サポートされる最小インスタンスタイプ

t2.micro.elasticsearch (バージョン 1.5 および 2.3) とt2.small.elasticsearch (バージョン 5.x および 6.x)。

1 アカウント (1 リージョン) あたりのドメインの最大数

100

Amazon ES がサポートするインスタンスタイプのリストについては、「サポートされるインスタンスタイプ (p. 172)」を参照してください。

UltraWarm ストレージの制限次のテーブルに、UltraWarm インスタンスタイプと、各タイプで使用できるストレージの最大容量を示します。UltraWarm の詳細については、「UltraWarm ストレージ (プレビュー) (p. 149)」を参照してください。

インスタンスタイプ 最大ストレージ

ultrawarm1.medium.elasticsearch 1.5 TiB

API バージョン 2015-01-01237

Page 246: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドEBS ボリュームサイズの制限

インスタンスタイプ 最大ストレージ

ultrawarm1.large.elasticsearch 20 TiB

EBS ボリュームサイズの制限次の表は、Amazon ES がサポートする各インスタンスタイプの EBS ボリュームの最小サイズと最大サイズを示しています。どのインスタンスタイプにインスタンスストレージが含まれるか、およびハードウェアのその他の詳細については、「Amazon Elasticsearch Service 料金表」を参照してください。

• ドメインの作成時に [EBS volume type (EBS ボリュームタイプ)] でマグネティックストレージを選択した場合、t2.micro、t2.small、t2.medium を除くすべてのインスタンスタイプの最大ボリュームサイズは 100 GiB です。次のテーブルに示されている最大サイズを使用する場合は、いずれかの SSD オプションを選択してください。

• 512 GiB は、Elasticsearch バージョン 1.5 でサポートされる最大ボリュームサイズです。• 一部の旧世代のインスタンスタイプにはインスタンスストレージが含まれますが、EBS ストレージをサ

ポートしています。これらのインスタンスタイプの 1 つに対して EBS ストレージを選択した場合、ストレージボリュームは加算されません。EBS ボリュームまたはインスタンスストレージを使用できますが、両方を使用することはできません。

インスタンスタイプ 最小 EBS サイズ 最大 EBS サイズ

t2.micro.elasticsearch 10 GiB 35 GiB

t2.small.elasticsearch 10 GiB 35 GiB

t2.medium.elasticsearch 10 GiB 35 GiB

m3.medium.elasticsearch 10 GiB 100 GiB

m3.large.elasticsearch 10 GiB 512 GiB

m3.xlarge.elasticsearch 10 GiB 512 GiB

m3.2xlarge.elasticsearch 10 GiB 512 GiB

m4.large.elasticsearch 10 GiB 512 GiB

m4.xlarge.elasticsearch 10 GiB 1 TiB

m4.2xlarge.elasticsearch 10 GiB 1.5 TiB

m4.4xlarge.elasticsearch 10 GiB 1.5 TiB

m4.10xlarge.elasticsearch 10 GiB 1.5 TiB

m5.large.elasticsearch 10 GiB 512 GiB

m5.xlarge.elasticsearch 10 GiB 1 TiB

m5.2xlarge.elasticsearch 10 GiB 1.5 TiB

m5.4xlarge.elasticsearch 10 GiB 3 TiB

m5.12xlarge.elasticsearch 10 GiB 9 TiB

c4.large.elasticsearch 10 GiB 100 GiB

API バージョン 2015-01-01238

Page 247: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドEBS ボリュームサイズの制限

インスタンスタイプ 最小 EBS サイズ 最大 EBS サイズ

c4.xlarge.elasticsearch 10 GiB 512 GiB

c4.2xlarge.elasticsearch 10 GiB 1 TiB

c4.4xlarge.elasticsearch 10 GiB 1.5 TiB

c4.8xlarge.elasticsearch 10 GiB 1.5 TiB

c5.large.elasticsearch 10 GiB 256 GiB

c5.xlarge.elasticsearch 10 GiB 512 GiB

c5.2xlarge.elasticsearch 10 GiB 1 TiB

c5.4xlarge.elasticsearch 10 GiB 1.5 TiB

c5.9xlarge.elasticsearch 10 GiB 3.5 TiB

c5.18xlarge.elasticsearch 10 GiB 7 TiB

r3.large.elasticsearch 10 GiB 512 GiB

r3.xlarge.elasticsearch 10 GiB 512 GiB

r3.2xlarge.elasticsearch 10 GiB 512 GiB

r3.4xlarge.elasticsearch 10 GiB 512 GiB

r3.8xlarge.elasticsearch 10 GiB 512 GiB

r4.large.elasticsearch 10 GiB 1 TiB

r4.xlarge.elasticsearch 10 GiB 1.5 TiB

r4.2xlarge.elasticsearch 10 GiB 1.5 TiB

r4.4xlarge.elasticsearch 10 GiB 1.5 TiB

r4.8xlarge.elasticsearch 10 GiB 1.5 TiB

r4.16xlarge.elasticsearch 10 GiB 1.5 TiB

r5.large.elasticsearch 10 GiB 1 TiB

r5.xlarge.elasticsearch 10 GiB 1.5 TiB

r5.2xlarge.elasticsearch 10 GiB 3 TiB

r5.4xlarge.elasticsearch 10 GiB 6 TiB

r5.12xlarge.elasticsearch 10 GiB 12 TiB

i2.xlarge.elasticsearch 10 GiB 512 GiB

i2.2xlarge.elasticsearch 10 GiB 512 GiB

i3.large.elasticsearch 該当なし 該当なし

i3.xlarge.elasticsearch 該当なし 該当なし

i3.2xlarge.elasticsearch 該当なし 該当なし

API バージョン 2015-01-01239

Page 248: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドネットワークの制限

インスタンスタイプ 最小 EBS サイズ 最大 EBS サイズ

i3.4xlarge.elasticsearch 該当なし 該当なし

i3.8xlarge.elasticsearch 該当なし 該当なし

i3.16xlarge.elasticsearch 該当なし 該当なし

ネットワークの制限次の表は、HTTP リクエストペイロードの最大サイズを示しています。

インスタンスタイプ HTTP リクエストペイロードの最大サイズ

t2.micro.elasticsearch 10 MiB

t2.small.elasticsearch 10 MiB

t2.medium.elasticsearch10 MiB

m3.medium.elasticsearch10 MiB

m3.large.elasticsearch 10 MiB

m3.xlarge.elasticsearch100 MiB

m3.2xlarge.elasticsearch100 MiB

m4.large.elasticsearch 10 MiB

m4.xlarge.elasticsearch100 MiB

m4.2xlarge.elasticsearch100 MiB

m4.4xlarge.elasticsearch100 MiB

m4.10xlarge.elasticsearch100 MiB

m5.large.elasticsearch 10 MiB

m5.xlarge.elasticsearch100 MiB

m5.2xlarge.elasticsearch100 MiB

m5.4xlarge.elasticsearch100 MiB

m5.12xlarge.elasticsearch100 MiB

c4.large.elasticsearch 10 MiB

c4.xlarge.elasticsearch100 MiB

c4.2xlarge.elasticsearch100 MiB

c4.4xlarge.elasticsearch100 MiB

c4.8xlarge.elasticsearch100 MiB

c5.large.elasticsearch 10 MiB

API バージョン 2015-01-01240

Page 249: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドネットワークの制限

インスタンスタイプ HTTP リクエストペイロードの最大サイズ

c5.xlarge.elasticsearch100 MiB

c5.2xlarge.elasticsearch100 MiB

c5.4xlarge.elasticsearch100 MiB

c5.9xlarge.elasticsearch100 MiB

c5.18xlarge.elasticsearch100 MiB

r3.large.elasticsearch 10 MiB

r3.xlarge.elasticsearch100 MiB

r3.2xlarge.elasticsearch100 MiB

r3.4xlarge.elasticsearch100 MiB

r3.8xlarge.elasticsearch100 MiB

r4.large.elasticsearch 100 MiB

r4.xlarge.elasticsearch100 MiB

r4.2xlarge.elasticsearch100 MiB

r4.4xlarge.elasticsearch100 MiB

r4.8xlarge.elasticsearch100 MiB

r4.16xlarge.elasticsearch100 MiB

r5.large.elasticsearch 100 MiB

r5.xlarge.elasticsearch100 MiB

r5.2xlarge.elasticsearch100 MiB

r5.4xlarge.elasticsearch100 MiB

r5.12xlarge.elasticsearch100 MiB

i2.xlarge.elasticsearch100 MiB

i2.2xlarge.elasticsearch100 MiB

i3.large.elasticsearch 100 MiB

i3.xlarge.elasticsearch100 MiB

i3.2xlarge.elasticsearch100 MiB

i3.4xlarge.elasticsearch100 MiB

i3.8xlarge.elasticsearch100 MiB

i3.16xlarge.elasticsearch100 MiB

API バージョン 2015-01-01241

Page 250: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドJava プロセス制限

Java プロセス制限Amazon ES では、Java プロセスのヒープサイズが 32 GiB に制限されます。上級ユーザーは、フィールドデータに使用されるヒープのパーセンテージを指定できます。詳細については、「the section called “詳細オプションの設定” (p. 20)」および「the section called “JVM OutOfMemoryError” (p. 167)」を参照してください。

ドメインポリシーの制限Amazon ES は、ドメインのアクセスポリシー (p. 50)を 100 KiB に制限します。

API バージョン 2015-01-01242

Page 251: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドリザーブドインスタンスの購入 (コンソール)

Amazon Elasticsearch Service リザーブドインスタンス

Amazon Elasticsearch Service リザーブドインスタンス (RI) では、標準オンデマンドインスタンスと比べて大幅な割引を受けられます。インスタンス自体は同一です。RI は、アカウントでのオンデマンドインスタンスに適用される請求の割引にすぎません。使用状況が予想可能な存続時間の長いアプリケーションについては、RI により時間の経過と共に大幅なコスト削減が可能になります。

Amazon ES RI には 1 年または 3 年の期間が必要で、割引レートに影響を与える 3 つのお支払い方法があります。

• 前払いなし – 前払いはありません。期間内の時間ごとに割引された時間料金を支払います。• 一部前払い – 料金の一部を前払いし、期間内の時間ごとに割引された時間料金を支払います。• 全前払い – 料金を全額前払いします。期間内に時間料金は支払いません。

一般的に、前払い料金が多いほど割引率がなくなります。リザーブドインスタンスをキャンセルすることはできません — 予約するときに、全期間に対して支払う契約を結びます — 前払い料金は払い戻しできません。詳細については、「Amazon Elasticsearch Service の料金表」および「よくある質問」を参照してください。

トピック• リザーブドインスタンスの購入 (コンソール) (p. 243)• リザーブドインスタンスを購入する (AWS CLI) (p. 244)• リザーブドインスタンスを購入する (AWS SDK) (p. 245)• コストを確認する (p. 246)

リザーブドインスタンスの購入 (コンソール)コンソールでは、既存のリザーブドインスタンスを表示したり、新しいリザーブドインスタンスを購入したりできます。

予約を購入するには

1. https://aws.amazon.com にアクセスし、[Sign In to the Console] を選択します。2. [分析] で、[Elasticsearch Service] を選択します。3. [Reserved Instances (リザーブドインスタンス)] を選択します。

このページでは、既存の予約を見ることができます。多くの予約がある場合、フィルタリングして特定の予約を識別して見やすくすることができます。

Tip

[Reserved Instances (リザーブドインスタンス)] リンクが表示されない場合は、リージョンでドメインを作成します (p. 10)。

4. [Purchase Reserved Instance (リザーブドインスタンスの購入)] を選択します。5. [Reservation Name (予約名)] に、一意のわかりやすい名前を入力します。6. インスタンスタイプ、サイズ、インスタンスの数を選択します。ガイダンスについては、「the

section called “Amazon ES ドメインのサイジング” (p. 141)」を参照してください。

API バージョン 2015-01-01243

Page 252: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドリザーブドインスタンスを購入する (AWS CLI)

7. 期間の長さと支払いオプションを選択します。8. 支払いの詳細を慎重に確認します。9. [Submit] を選択します。10. 購入概要を慎重に確認します。リザーブドインスタンスの購入は払い戻しできません。11. [Purchase (購入)] を選択します。

リザーブドインスタンスを購入する (AWS CLI)AWS CLI には、提供タイプの表示、予約の購入、予約の表示を行うためのコマンドがあります。次のコマンドとサンプルレスポンスは、指定された AWS リージョンの提供タイプを示しています。

aws es describe-reserved-elasticsearch-instance-offerings --region us-east-1{ "ReservedElasticsearchInstanceOfferings": [ { "FixedPrice": x, "ReservedElasticsearchInstanceOfferingId": "1a2a3a4a5-1a2a-3a4a-5a6a-1a2a3a4a5a6a", "RecurringCharges": [ { "RecurringChargeAmount": y, "RecurringChargeFrequency": "Hourly" } ], "UsagePrice": 0.0, "PaymentOption": "PARTIAL_UPFRONT", "Duration": 31536000, "ElasticsearchInstanceType": "m4.2xlarge.elasticsearch", "CurrencyCode": "USD" } ]}

各戻り値の説明については、次の表を参照してください。

フィールド 説明

FixedPrice 予約の前払いコスト。

ReservedElasticsearchInstanceOfferingId 提供 ID。製品を予約する場合は、この値をメモしておきます。

RecurringCharges 予約の時間料金。

UsagePrice レガシーフィールド。Amazon ES の場合、この値は常に 0 です。

PaymentOption 前払いなし、一部前払い、または全額前払い。

Duration 期間の長さ (秒)。

• 31536000 秒が 1 年です。• 94608000 秒が 3 年です。

ElasticsearchInstanceType 予約のインスタンスタイプ。各インスタンスタイプに割り当てられるハードウェアリソースについては、「Amazon Elasticsearch Service の料金表」を参照してください。

API バージョン 2015-01-01244

Page 253: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドリザーブドインスタンスを購入する (AWS SDK)

フィールド 説明

CurrencyCode FixedPrice と RecurringChargeAmount の通貨。

この次の例では、予約を購入します。

aws es purchase-reserved-elasticsearch-instance-offering --reserved-elasticsearch-instance-offering-id 1a2a3a4a5-1a2a-3a4a-5a6a-1a2a3a4a5a6a --reservation-name my-reservation --instance-count 3 --region us-east-1{ "ReservationName": "my-reservation", "ReservedElasticsearchInstanceId": "9a8a7a6a-5a4a-3a2a-1a0a-9a8a7a6a5a4a"}

最後に、以下の例を使用して特定のリージョンの予約をリストできます。

aws es describe-reserved-elasticsearch-instances --region us-east-1{ "ReservedElasticsearchInstances": [ { "FixedPrice": x, "ReservedElasticsearchInstanceOfferingId": "1a2a3a4a5-1a2a-3a4a-5a6a-1a2a3a4a5a6a", "ReservationName": "my-reservation", "PaymentOption": "PARTIAL_UPFRONT", "UsagePrice": 0.0, "ReservedElasticsearchInstanceId": "9a8a7a6a-5a4a-3a2a-1a0a-9a8a7a6a5a4a", "RecurringCharges": [ { "RecurringChargeAmount": y, "RecurringChargeFrequency": "Hourly" } ], "State": "payment-pending", "StartTime": 1522872571.229, "ElasticsearchInstanceCount": 3, "Duration": 31536000, "ElasticsearchInstanceType": "m4.2xlarge.elasticsearch", "CurrencyCode": "USD" } ]}

Note

StartTime は Unix エポック時間 (1970 年 1 月 1 日の午前 00:00 UTC から経過した秒数)。たとえば、1522872571 エポック時間は 2018 年 4 月 4 日の 20:09:31 UTC です。オンラインコンバーターを使用することができます。

前の例で使用されているコマンドの詳細については、「AWS CLI Command Reference」を参照してください。

リザーブドインスタンスを購入する (AWS SDK)AWS SDK (Android および iOS SDK を除く) は、Amazon ES 設定 API リファレンス (p. 196)に定義されているすべてのオペレーションをサポートします。これには、以下も含まれます。

• DescribeReservedElasticsearchInstanceOfferings

API バージョン 2015-01-01245

Page 254: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドコストを確認する

• PurchaseReservedElasticsearchInstanceOffering

• DescribeReservedElasticsearchInstances

AWS SDK のインストールと使用の詳細については、「AWS Software Development Kits」を参照してください。

コストを確認するCost Explorer は、過去 13 か月間の使用量データを表示できる無料のツールです。このデータを分析すると、傾向を見分けて、RI がユースケースに合うかどうかを理解できます。既に RI がある場合、[PurchaseOption (購入オプション)] によってグループ分けし、償却コストを表示してその使用量とオンデマンドインスタンスの使用量を比較できます。また、使用状況の予算を設定して、予約を活用していることを確認することもできます。詳細については、AWS Billing and Cost Management ユーザーガイド の「CostExplorer によるコストの分析」を参照してください。

API バージョン 2015-01-01246

Page 255: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドステップ 1: インデックスサンプルデータ

チュートリアル: AmazonElasticsearch Service での検索アプリケーションの作成

Amazon ES を使用して検索アプリケーションを作成する一般的な方法は、サーバーへのユーザークエリを送信するウェブフォームを使用することです。次に、Elasticsearch API を直接呼び出すようサーバーを承認し、サーバーが Amazon ES にリクエストを送信するようにします。

ただし、サーバーに依存しないクライアント側のコードを記述する場合は、セキュリティとパフォーマンスのリスクを補正する必要があります。Elasticsearch API への、署名されていないパブリックアクセスを許可することはお勧めしません。ユーザーは、保護されていないエンドポイントにアクセスしたり、過度に広範なクエリ (または多すぎるクエリ) によりクラスターのパフォーマンスに影響を及ぼす可能性があります。

この章では、解決方法を提示します。Amazon API Gateway を使用してユーザーを Elasticsearch API のサブセットに制限し、AWS Lambda を使用して API Gateway から Amazon ES へのリクエストに署名します。

Note

スタンダードの API Gateway および Lambda 料金表が適用されますが、このチュートリアル内での使用は限定されているため、費用はごくわずかです。

ステップ 1: インデックスサンプルデータこれらの手順の前提条件は、Amazon ES ドメインです。sample-movies.zip をダウンロードして解凍します。_bulk API を使用して、movies インデックスに 5,000 ドキュメントを追加します。

POST https://search-my-domain.us-west-1.es.amazonaws.com/_bulk{ "index": { "_index": "movies", "_type": "movie", "_id": "tt1979320" } }{"fields":{"directors":["Ron Howard"],"release_date":"2013-09-02T00:00:00Z","rating":8.3,"genres":["Action","Biography","Drama","Sport"],"image_url":"http://ia.media-imdb.com/images/M/MV5BMTQyMDE0MTY0OV5BMl5BanBnXkFtZTcwMjI2OTI0OQ@@._V1_SX400_.jpg","plot":"A re-creation of the merciless 1970s rivalry between Formula One rivals James Hunt and Niki Lauda.","title":"Rush","rank":2,"running_time_secs":7380,"actors":["Daniel Brühl","Chris Hemsworth","Olivia Wilde"],"year":2013},"id":"tt1979320","type":"add"}{ "index": { "_index": "movies", "_type": "movie", "_id": "tt1951264" } }{"fields":{"directors":["Francis Lawrence"],"release_date":"2013-11-11T00:00:00Z","genres":["Action","Adventure","Sci-Fi","Thriller"],"image_url":"http://ia.media-imdb.com/images/M/MV5BMTAyMjQ3OTAxMzNeQTJeQWpwZ15BbWU4MDU0NzA1MzAx._V1_SX400_.jpg","plot":"Katniss Everdeen and Peeta Mellark become targets of the Capitol after their victory in the 74th Hunger Games sparks a rebellion in the Districts of Panem.","title":"The Hunger Games: Catching Fire","rank":4,"running_time_secs":8760,"actors":["Jennifer Lawrence","Josh Hutcherson","Liam Hemsworth"],"year":2013},"id":"tt1951264","type":"add"}...

詳細については、「データのインデックス作成 (p. 67)」を参照してください。

API バージョン 2015-01-01247

Page 256: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドステップ 2: API を作成する

ステップ 2: API を作成するAPI Gateway を使用してさらに制限された API を作成することで、Elasticsearch _search API とのやり取りのプロセスを簡素化することができます。Amazon Cognito 認証やリクエストスロットリングなどのセキュリティ機能を有効にすることもできます。次の表に従って API を作成しデプロイします。

設定 値

API タイプ: 新しい API

設定

API 名: search-es-api

説明: Amazon Elasticsearch Service ドメイン検索用のパブリック API

エンドポイントタイプ: リージョン別

リソース /

HTTP メソッド

GET

メソッドリクエスト

設定

認可: none

リクエストの検証: クエリ文字列パラメータ、およびヘッダーの検証

必要とされる API キー: false

URL クエリ文字列パラメータ

名前: q

必須: はい

統合リクエスト

統合タイプ: Lambda 関数

Lambda プロキシ統合の使用: はい

Lambda リージョン: us-west-1

Lambda 関数: search-es-lambda

発信者の認証情報を使用した呼び出し: いいえ

認証情報キャッシュ: 発信者の認証情報をキャッシュキーに追加しない

デフォルトタイムアウトの使用: はい

ステージ 名前: search-es-api-test

デフォルトのメソッドスロットリング

スロットリングの有効化: はい

Rate: 1000

バースト: 500

API バージョン 2015-01-01248

Page 257: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドステップ 3: Lambda 関数を作成する

これらの設定は、エンドポイントのルート (https://some-id.execute-api.us-west-1.amazonaws.com/search-es-api-test) への GET リクエストという 1 つのメソッドのみを持つ API を設定します。リクエストに必要なのは、検索するクエリ文字列という 1 つのパラメータ (q) です。呼び出されると、メソッドは search-es-lambda 関数を実行する Lambda にリクエストを渡します。詳細については、「Amazon API Gateway での API の作成」および「Amazon API Gateway での APIのデプロイ」を参照してください。

ステップ 3: Lambda 関数を作成するこのソリューションでは、API Gateway は次の Python 2.7 Lambda 関数にリクエストを渡します。この関数は Amazon ES にクエリを送り、結果を返します。

import boto3import jsonimport requestsfrom requests_aws4auth import AWS4Auth

region = '' # For example, us-west-1service = 'es'credentials = boto3.Session().get_credentials()awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)

host = '' # For example, search-mydomain-id.us-west-1.es.amazonaws.comindex = 'movies'url = 'https://' + host + '/' + index + '/_search'

# Lambda execution starts heredef handler(event, context):

# Put the user query into the query DSL for more accurate search results. # Note that certain fields are boosted (^). query = { "size": 25, "query": { "multi_match": { "query": event['queryStringParameters']['q'], "fields": ["fields.title^4", "fields.plot^2", "fields.actors", "fields.directors"] } } }

# ES 6.x requires an explicit Content-Type header headers = { "Content-Type": "application/json" }

# Make the signed HTTP request r = requests.get(url, auth=awsauth, headers=headers, data=json.dumps(query))

# Create the response and add some extra content to support CORS response = { "statusCode": 200, "headers": { "Access-Control-Allow-Origin": '*' }, "isBase64Encoded": False }

# Add the search results to the response response['body'] = r.text return response

API バージョン 2015-01-01249

Page 258: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドステップ 4: ドメインアクセスポリシーを変更する

この関数には、次のトリガーが必要です。

トリガー API デプロイされるステージ

セキュリティ

API Gateway search-es-api search-es-api-test Open

このサンプル関数は外部ライブラリを使用するため、コードを機能させるには、デプロイパッケージを作成して Lambda にアップロードする必要があります。Lambda 関数とデプロイパッケージの作成の詳細については、AWS Lambda Developer Guideの「デプロイパッケージの作成 (Python)」およびこのガイドの「the section called “Lambda デプロイパッケージの作成” (p. 81)」を参照してください。

ステップ 4: ドメインアクセスポリシーを変更するAmazon ES ドメインで、Lambda 関数が movies インデックスへの GET リクエストを行うことを許可する必要があります。次のポリシーは、movies インデックスへの search-es-role (Lambda を通じて作成された) アクセス権を提供します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/service-role/search-es-role" }, "Action": "es:ESHttpGet", "Resource": "arn:aws:es:us-west-1:123456789012:domain/web/movies/_search" } ]}

詳細については、「the section called “アクセス ポリシーの設定” (p. 18)」を参照してください。

ステップ 5: ウェブアプリケーションをテストするウェブアプリケーションをテストするには

1. sample-site.zip をダウンロードして解凍し、お気に入りのテキストエディタで scripts/search.jsを開きます。

2. API Gateway エンドポイントを指すように apigatewayendpoint 変数を更新します。エンドポイントの形式は https://some-id.execute-api.us-west-1.amazonaws.com/search-es-api-test です。

3. index.html を開き、thor、house、および他のいくつかの用語の検索を実行してみてください。

API バージョン 2015-01-01250

Page 259: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドステップ 5: ウェブアプリケーションをテストする

API バージョン 2015-01-01251

Page 260: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド次のステップ

次のステップこの章は、概念を示すための出発点にすぎません。たとえば、次のような変更が考えられます。

• 独自のデータを Amazon ES ドメインに追加します。• API にメソッドを追加します。• Lambda 関数では、検索クエリを変更するか、異なるフィールドを追加します。• 結果のスタイルを変更するか、search.js を変更してユーザーに異なるフィールドを表示します。

API バージョン 2015-01-01252

Page 261: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド

チュートリアル :AmazonElasticsearch Service と Kibana を使用したカスタマーサポートコールの視覚化

この章は、次のような状況の完全なチュートリアルです。ビジネスである程度の数のカスタマーサポートコールを受けており、それらを分析したいと考えています。各問い合わせの件名は何でしょうか? 肯定的なやり取りの数はいくつでしょうか? 否定的なやり取りの数はいくつでしょうか? マネージャーはこれらの問い合わせのトランスクリプトをどのように検索または確認することができますか?

手動ワークフローでは、従業員が通話記録を聴き、各問い合わせの件名をメモし、顧客とのやり取りが肯定的であったかどうかを判断することが考えられます。

このようなプロセスには非常に大きな労力がかかります。1 回の問い合わせの平均時間が 10 分とすると、各従業員が 1 日あたり聴くことができる問い合わせの数は 48 件にすぎません。人間の先入観や偏見を除外することで、生成されるデータは非常に正確なものとなる一方で、データの量は最少となります。つまり、問い合わせの件名と、顧客が満足したかどうかのブール値のみとなります。完全なトランスクリプトなど、それ以上の内容を伴う場合、非常に長い時間がかかる可能性があります。

Amazon S3、Amazon Transcribe、Amazon Comprehend、Amazon Elasticsearch Service (Amazon ES) を使用することで、非常にわずかなコードで同様のプロセスを自動化し、はるかに多くのデータを得ることができます。たとえば、問い合わせの完全なトランスクリプト、トランスクリプトからのキーワード、および問い合わせの全体的な「感情」(肯定的、否定的、中立、混在) を取得できます。次に、Elasticsearchと Kibana を使用して、データを検索および視覚化できます。

このチュートリアルはそのとおりに使用できますが、その意図は、Amazon ES でインデックス化する前に、JSON ドキュメントを強化する方法に関するアイデアを生み出すことです。

推定コスト

一般的に、このチュートリアルのステップを実行するコストは 2 USD 未満です。このチュートリアルでは、以下のリソースを使用します。

• 転送および保存されるデータが 100 MB 未満である S3 バケット

詳細については、「Amazon S3 料金表」を参照してください。• 1 つの t2.medium インスタンスを持つ Amazon ES ドメインと、数時間に対応する 10 GiB の EBS ス

トレージ

詳細については、「Amazon Elasticsearch Service 料金表」を参照してください。• Amazon Transcribe への数回の呼び出し

詳細については、「Amazon Transcribe 料金表」を参照してください。• Amazon Comprehend への数回の自然言語処理の呼び出し

詳細については、「Amazon Comprehend 料金表」を参照してください。

API バージョン 2015-01-01253

Page 262: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドステップ 1: 前提条件を設定する

トピック• ステップ 1: 前提条件を設定する (p. 254)• ステップ 2: サンプルコードをコピーする (p. 254)• (オプション) ステップ 3: サンプルデータを追加する (p. 257)• ステップ 4: データを分析し、視覚化する (p. 258)• ステップ 5: リソースのクリーンアップと次のステップ (p. 262)

ステップ 1: 前提条件を設定する続行する前に、以下のリソースが必要です。

前提条件 説明

Amazon S3 バケット 詳細については、Amazon Simple Storage Service 入門ガイド の「バケットの作成」を参照してください。

Amazon ES ドメイン データのコピー先。詳細については、「Amazon ES ドメインの作成 (p. 10)」を参照してください。

これらのリソースがない場合は、次の AWS CLI コマンドを使用して作成できます。

aws s3 mb s3://my-transcribe-test --region us-west-2

aws es create-elasticsearch-domain --domain-name my-transcribe-test --elasticsearch-version 6.2 --elasticsearch-cluster-config InstanceType=t2.medium.elasticsearch,InstanceCount=1 --ebs-options EBSEnabled=true,VolumeType=standard,VolumeSize=10 --access-policies '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::123456789012:root"},"Action":"es:*","Resource":"arn:aws:es:us-west-2:123456789012:domain/my-transcribe-test/*"}]}' --region us-west-2

Note

これらのコマンドでは us-west-2 リージョンを使用しますが、Amazon Comprehend がサポートしている任意のリージョンを使用することもできます。詳細については、AWS GeneralReference を参照してください。

ステップ 2: サンプルコードをコピーする1. 次のサンプルコードをコピーし、call-center.py という新しいファイルに貼り付けます。

import boto3import datetimeimport jsonimport requestsfrom requests_aws4auth import AWS4Authimport timeimport urllib2

# Variables to updateaudio_file_name = '' # For example, 000001.mp3

API バージョン 2015-01-01254

Page 263: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドステップ 2: サンプルコードをコピーする

bucket_name = '' # For example, my-transcribe-testdomain = '' # For example, https://search-my-transcribe-test-12345.us-west-2.es.amazonaws.comindex = 'support-calls'type = 'call'es_region = 'us-west-2'

# Upload audio file to S3.s3_client = boto3.client('s3')

audio_file = open(audio_file_name, 'r')

print('Uploading ' + audio_file_name + '...')response = s3_client.put_object( Body=audio_file, Bucket=bucket_name, Key=audio_file_name,)

response = s3_client.get_bucket_location( Bucket=bucket_name)

bucket_region = response['LocationConstraint']

# Build the URL to the audio file on S3.mp3_uri = 'https://s3-' + bucket_region + '.amazonaws.com/' + bucket_name + '/' + audio_file_name

# Start transcription job.transcribe_client = boto3.client('transcribe')

print('Starting transcription job...')response = transcribe_client.start_transcription_job( TranscriptionJobName=audio_file_name, LanguageCode='en-US', MediaFormat='mp3', Media={ 'MediaFileUri': mp3_uri }, Settings={ 'ShowSpeakerLabels': True, 'MaxSpeakerLabels': 2 # assumes two people on a phone call })

# Wait for the transcription job to finish.print('Waiting for job to complete...')while True: response = transcribe_client.get_transcription_job(TranscriptionJobName=audio_file_name) if response['TranscriptionJob']['TranscriptionJobStatus'] in ['COMPLETED', 'FAILED']: break else: print('Still waiting...') time.sleep(10)

transcript_uri = response['TranscriptionJob']['Transcript']['TranscriptFileUri']

# Open the JSON file, read it, and get the transcript.response = urllib2.urlopen(transcript_uri)raw_json = response.read()loaded_json = json.loads(raw_json)transcript = loaded_json['results']['transcripts'][0]['transcript']

API バージョン 2015-01-01255

Page 264: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドステップ 2: サンプルコードをコピーする

# Send transcript to Comprehend for key phrases and sentiment.comprehend_client = boto3.client('comprehend')

# If necessary, trim the transcript.# If the transcript is more than 5 KB, the Comprehend calls fail.if len(transcript) > 5000: trimmed_transcript = transcript[:5000]else: trimmed_transcript = transcript

print('Detecting key phrases...')response = comprehend_client.detect_key_phrases( Text=trimmed_transcript, LanguageCode='en')

keywords = []for keyword in response['KeyPhrases']: keywords.append(keyword['Text'])

print('Detecting sentiment...')response = comprehend_client.detect_sentiment( Text=trimmed_transcript, LanguageCode='en')

sentiment = response['Sentiment']

# Build the Amazon Elasticsearch Service URL.id = audio_file_name.strip('.mp3')url = domain + '/' + index + '/' + type + '/' + id

# Create the JSON document.json_document = {'transcript': transcript, 'keywords': keywords, 'sentiment': sentiment, 'timestamp': datetime.datetime.now().isoformat()}

# Provide all details necessary to sign the indexing request.credentials = boto3.Session().get_credentials()awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, es_region, 'es', session_token=credentials.token)

# Add explicit header for Elasticsearch 6.x.headers = {'Content-Type': 'application/json'}

# Index the document.print('Indexing document...')response = requests.put(url, auth=awsauth, json=json_document, headers=headers)

print(response)print(response.json())

2. 最初の 6 つの変数を更新します。3. 次のコマンドを使用して必要なパッケージをインストールします。

pip install boto3pip install requestspip install requests_aws4auth

4. call-center.py と同じディレクトリに MP3 を配置し、スクリプトを実行します。サンプル出力を次に示します。

$ python call-center.pyUploading 000001.mp3...Starting transcription job...

API バージョン 2015-01-01256

Page 265: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド(オプション) ステップ 3: サンプルデータを追加する

Waiting for job to complete...Still waiting...Still waiting...Still waiting...Still waiting...Still waiting...Still waiting...Still waiting...Detecting key phrases...Detecting sentiment...Indexing document...<Response [201]>{u'_type': u'call', u'_seq_no': 0, u'_shards': {u'successful': 1, u'failed': 0, u'total': 2}, u'_index': u'support-calls4', u'_version': 1, u'_primary_term': 1, u'result': u'created', u'_id': u'000001'}

call-center.py は多数のオペレーションを実行します。

1. このスクリプトは、音声ファイル (この例では MP3 ですが、Amazon Transcribe は複数の形式をサポートします) を S3 バケットにアップロードします。

2. オーディオファイルの URL を Amazon Transcribe に送信し、書き起こしジョブの完了を待機します。

書き起こしジョブが完了するまでの時間は、オーディオファイルの長さによって異なります。数秒ではなく、数分であると想定してください。

Tip

書き起こしの品質を向上させるため、Amazon Transcribe 用のカスタム語彙を設定できます。3. 書き起こしジョブが完了すると、スクリプトはトランスクリプトを抽出し、それを 5,000 文字に切り捨

て、キーワードと感情の分析のため Amazon Comprehend に送信します。4. 最後に、スクリプトは完全なトランスクリプト、キーワード、感情、および現在のタイムスタンプを

JSON ドキュメントに追加し、そのインデックスを Amazon ES に作成します。

Tip

LibriVox には、テストに使用できるパブリックドメインオーディオブックがあります。

(オプション) ステップ 3: サンプルデータを追加する

多くの通話記録が手元にない場合—これは一般的です—sample-calls.zip にサンプルドキュメントのインデックス (p. 67)を作成できます。これは call-center.py で生成されるものと同等です。

1. bulk-helper.py という名前のファイルを作成します。

import boto3from elasticsearch import Elasticsearch, RequestsHttpConnectionimport jsonfrom requests_aws4auth import AWS4Auth

host = '' # For example, my-test-domain.us-west-2.es.amazonaws.comregion = '' # For example, us-west-2service = 'es'

bulk_file = open('sample-calls.bulk', 'r').read()

API バージョン 2015-01-01257

Page 266: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドステップ 4: データを分析し、視覚化する

credentials = boto3.Session().get_credentials()awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)

es = Elasticsearch( hosts = [{'host': host, 'port': 443}], http_auth = awsauth, use_ssl = True, verify_certs = True, connection_class = RequestsHttpConnection)

response = es.bulk(bulk_file)print(json.dumps(response, indent=2, sort_keys=True))

Note

このコードサンプルでは Python 2 を使用しています。Python 3 では、変更が必要になる場合があります。

2. host および region の最初の 2 つの変数を更新します。3. 次のコマンドを使用して必要なパッケージをインストールします。

pip install elasticsearch

4. sample-calls.zip をダウンロードして解凍します。5. sample-calls.bulk と同じディレクトリに bulk-helper.py を配置し、ヘルパーを実行します。

サンプル出力を次に示します。

$ python bulk-helper.py{ "errors": false, "items": [ { "index": { "_id": "1", "_index": "test-data", "_primary_term": 1, "_seq_no": 42, "_shards": { "failed": 0, "successful": 1, "total": 2 }, "_type": "call", "_version": 9, "result": "updated", "status": 200 } }, ... ], "took": 27}

ステップ 4: データを分析し、視覚化するAmazon ES にデータを配置したので、Kibana を使用してそのデータを視覚化することができます。

API バージョン 2015-01-01258

Page 267: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドステップ 4: データを分析し、視覚化する

1. https://search-domain.region.es.amazonaws.com/_plugin/kibana に移動します。2. Kibana を使用するには、インデックスパターンが必要です。Kibana はインデックスパターンを使

用して、分析を 1 つまたは複数のインデックスに絞り込みます。call-center.py で作成したsupport-calls インデックスを一致させるには、インデックスパターン support* を定義し、[Next step (次のステップ)] を選択します。

3. [Time Filter field name (タイムフィルタフィールド名)] で、[timestamp (タイムスタンプ)] を選択します。

4. これで、視覚化の作成を開始できます。[Visualize (視覚化)] を選択し、新しい視覚化を追加します。5. 円グラフと support* インデックスパターンを選択します。6. デフォルトの視覚化は基本的です。そこで、より魅力的な視覚化を作成するため、[Split Slices (分割

スライス)] を選択します。

[Aggregation (集約)] で、[Terms (用語)] を選択します。[Field (フィールド)] で、[sentiment.keyword]を選択します。次に、[Apply changes (変更の適用)] を選択し、[Save (保存)] を選択します。

7. [Visualize (視覚化)] ページに戻り、別の視覚化を追加します。今回は、水平棒グラフを選択します。8. [Split Series (シリーズの分割)] を選択します。

[Aggregation (集約)] で、[Terms (用語)] を選択します。[Field (フィールド)] で、[keywords.keyword]を選択し、[Size (サイズ)] を 20 に変更します。次に、[Apply Changes (変更の適用)] を選択し、[Save(保存)] を選択します。

API バージョン 2015-01-01259

Page 268: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドステップ 4: データを分析し、視覚化する

9. [Visualize (視覚化)] ページに戻り、最終的な 1 つの視覚化である垂直棒グラフを追加します。10. [Split Series (シリーズの分割)] を選択します。[Aggregation (集約)] で、[Date Histogram (日付ヒスト

グラム)] を選択します。[Field (フィールド)] の [timestamp (タイムスタンプ)] を選択し、[Interval (間隔)] を [Daily (日別)] に設定します。

11. [Metrics & Axes (メトリクス & 軸)] を選択し、[Mode (モード)] を [normal (法線)] に変更します。12. [Apply Changes (変更の適用)] を選択し、[Save (保存)] を選択します。

API バージョン 2015-01-01260

Page 269: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドステップ 4: データを分析し、視覚化する

13. これで 3 つの視覚化を作成したので、Kibana ダッシュボードに追加することができます。[Dashboard (ダッシュボード)] を選択し、ダッシュボードを作成して、視覚化を追加します。

API バージョン 2015-01-01261

Page 270: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドステップ 5: リソースのクリーンアップと次のステップ

ステップ 5: リソースのクリーンアップと次のステップ

不要な料金が発生しないようにするため、S3 バケットおよび Amazon ES ドメインを削除します。詳細については、Amazon Simple Storage Service 開発者ガイド の「バケットの削除」およびこのガイドの「Amazon ES ドメインの削除 (p. 9)」を参照してください。

トランスクリプトは、MP3 ファイルよりもはるかに少ないディスク容量で済みます。MP3 の保持期間を短くする—たとえば、通話記録の保持期間を 3 か月から 1 か月にする—ことも、数年間のトランスクリプトを保持することもでき、いずれの場合もストレージコストを低減できます。

また、AWS Step Functions と Lambda を使用した書き起こしプロセスの自動化、インデックス作成前のメタデータの追加、またはユースケースに正確に合わせたより複雑な視覚化の作成もできます。

API バージョン 2015-01-01262

Page 271: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドAmazon ES のサービスにリンクされたロールのアクセス許可

Amazon ES のサービスにリンクされたロールの使用

Amazon Elasticsearch Service は、AWS Identity and Access Management (IAM) サービスにリンクされたロールを使用します。サービスにリンクされたロールは、Amazon ES に直接リンクされた一意のタイプのIAM ロールです。サービスにリンクされたロールは、Amazon ES による事前定義済みのロールであり、ユーザーに代わってサービスから AWS の他のサービスを呼び出すために必要なすべてのアクセス権限を備えています。

サービスにリンクされたロールを使用すると、必要なアクセス許可を手動で追加する必要がなくなるため、Amazon ES の設定が簡単になります。Amazon ES はこのサービスにリンクされたロールのアクセス許可を定義し、特に定義されている場合を除き、Amazon ES のみがそのロールを引き受けます。定義されるアクセス権限には、信頼ポリシーやアクセス権限ポリシーなどがあり、そのアクセス権限ポリシーをその他の IAM エンティティにアタッチすることはできません。

サービスにリンクされたロールを削除するには、まずその関連リソースを削除します。これにより、リソースへの意図しないアクセスによるアクセス許可の削除が防止され、Amazon ES リソースは保護されます。

サービスにリンクされたロールをサポートする他のサービスについては、「IAM と連携する AWS サービス」を参照の上、「サービスにリンクされたロール」列が「はい」になっているサービスを検索してください。サービスにリンクされたロールに関するドキュメントをサービスで表示するには、[はい] リンクを選択します。

Amazon ES のサービスにリンクされたロールのアクセス許可

Amazon ES では、サービスにリンクされたロールとしてAWSServiceRoleForAmazonElasticsearchService を使用します。

AWSServiceRoleForAmazonElasticsearchService サービスにリンクされたロールは、ロールを引き受ける上で次のサービスを信頼します。

• es.amazonaws.com

ロールのアクセス権限ポリシーは、指定したリソースに対して以下のアクションを実行することをAmazon ES に許可します。

• アクション: ec2:CreateNetworkInterface で *• アクション: ec2:DeleteNetworkInterface で *• アクション: ec2:DescribeNetworkInterfaces で *• アクション: ec2:ModifyNetworkInterfaceAttribute で *• アクション: ec2:DescribeSecurityGroups で *• アクション: ec2:DescribeSubnets で *

IAM エンティティ (ユーザー、グループ、ロールなど) がサービスにリンクされたロールを作成、編集、削除できるようにするには、アクセス権限を設定する必要があります。詳細については、IAM ユーザーガイドの「サービスにリンクされたロールのアクセス許可」を参照してください。

API バージョン 2015-01-01263

Page 272: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドのサービスにリンクされたロールの作成Amazon ES

のサービスにリンクされたロールの作成AmazonES

サービスにリンクされたロールを手動で作成する必要はありません。AWS マネジメントコンソール を使用して VPC アクセスドメインを作成すると、Amazon ES によってサービスにリンクされたロールが作成されます。この自動作成を成功させるためには、iam:CreateServiceLinkedRole アクションへのアクセス許可が必要です。

サービスにリンクされたこのロールを削除したが、再作成する必要がある場合は、同じプロセスで、アカウントにロールを再作成することができます。

サービスにリンクされたロールは、IAM コンソール、IAM CLI、または IAM API を使用して手動で作成することもできます。詳細については、IAM ユーザーガイド の「サービスにリンクされたロールの作成」を参照してください。

Amazon ES のサービスにリンクされたロールの編集

Amazon ES では、AWSServiceRoleForAmazonElasticsearchService サービスにリンクされたロールを編集することはできません。サービスにリンクされたロールを作成すると、多くのエンティティによってロールが参照される可能性があるため、ロール名を変更することはできません。ただし、IAM を使用したロールの説明の編集はできます。詳細については、IAM ユーザーガイド の「サービスにリンクされたロールの編集」を参照してください。

Amazon ES のサービスにリンクされたロールの削除

サービスにリンクされたロールが必要な機能またはサービスが不要になった場合には、そのロールを削除することをお勧めします。そうすることで、使用していないエンティティがアクティブにモニタリングされたり、メンテナンスされたりすることがなくなります。ただし、手動で削除する前に、サービスにリンクされたロールをクリーンアップする必要があります。

サービスにリンクされたロールのクリーンアップIAM を使用してサービスにリンクされたロールを削除するには、まずそのロールにアクティブなセッションがないことを確認し、そのロールで使用されているリソースをすべて削除する必要があります。

サービスにリンクされたロールが IAM コンソールでアクティブなセッションを持っているかどうかを確認するには

1. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/iam/)を開きます。

2. IAM コンソールのナビゲーションペインで [ロール] を選択します。次に、AWSServiceRoleForAmazonElasticsearchService ロールの名前 (チェックボックスではありません) を選択します。

3. 選択したロールの [Summary] ページで、[Access Advisor] タブを選択します。4. [Access Advisor] タブで、サービスにリンクされたロールの最新のアクティビティを確認します。

API バージョン 2015-01-01264

Page 273: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドサービスにリンクされたロールの手動削除

Note

Amazon ES で AWSServiceRoleForAmazonElasticsearchService ロールが使用されているかどうかが不明な場合は、このロールの削除を試みることができます。サービスでロールが使用されている場合、削除は失敗し、ロールが使用されているリージョンが表示されます。ロールが使用されている場合は、ロールを削除する前にセッションが終了するのを待つ必要があります。サービスにリンクされたロールのセッションを取り消すことはできません。

AWSServiceRoleForAmazonElasticsearchService が使用する Amazon ES リソースを削除するには

1. AWS マネジメントコンソール にサインインして、Amazon ES コンソールを開きます。2. [Endpoint] 列の下で [VPC] と記載されているドメインをすべて削除します。

サービスにリンクされたロールの手動削除AWSServiceRoleForAmazonElasticsearchService のサービスにリンクされたロールを削除するには、Amazon ES 設定 API を使用します。詳細については、「the section called“DeleteElasticsearchServiceRole” (p. 202)」を参照してください。

API バージョン 2015-01-01265

Page 274: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドリリースノート

Amazon Elasticsearch Service のドキュメント履歴

このトピックでは、Amazon Elasticsearch Service への重要な変更について説明します。

この履歴に関連する日付:

• 現行製品バージョン—2015-01-01• 最新の製品リリース—2019 年 10 月 3 日• ドキュメントの最新更新日 — 2019 年 11 月 6 日

リリースノート以下の表は、Amazon ES の重要な変更点をまとめたものです。更新に関する通知については、RSSフィードにサブスクライブできます。

Important

サービスソフトウェアの更新により、新機能、セキュリティパッチ、バグ修正、その他の機能強化のサポートが追加されます。新機能を使用するには、ドメインでのサービスソフトウェアの更新が必要になる場合があります。詳細については、「the section called “サービスソフトウェア更新” (p. 28)」を参照してください。

update-history-change update-history-description update-history-date

UltraWarm ストレージ (プレビュー) (p. 266)

Amazon Elasticsearch Service では、UltraWarm が追加されています。これは、Amazon S3 を使用する新しいウォームストレージ層であり、パフォーマンスを向上させるための高度なキャッシュソリューションです。アクティブに書き込みを行っていないインデックスやクエリの頻度が低いインデックスについては、UltraWarmストレージにより、GiB あたりのコストが大幅に削減されます。詳細については、「ドキュメント」を参照してください。

December 3, 2019

中国リージョンの暗号化機能 (p. 266)

保管中のデータの暗号化およびノード間暗号化が、cn-north-1(北京) および cn-northwest-1(寧夏) リージョンで利用可能になりました。

November 20, 2019

Require HTTPS (HTTPS が必要) (p. 266)

Amazon ES ドメインへのすべてのトラフィックが HTTPS 経由で到着することを要求できるようになりました。ドメインを設定するときは、[Require HTTPS

October 3, 2019

API バージョン 2015-01-01266

Page 275: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドリリースノート

(HTTPS が必要)] チェックボックスをオンにします。この機能では、サービスソフトウェアR20190808 以降が必要です。

Elasticsearch 7.1 および 6.8 のサポート (p. 266)

Amazon Elasticsearch Serviceで Elasticsearch バージョン 7.1および 6.8 がサポートされるようになりました。詳細については、「サポートされているElasticsearch バージョン」および「Elasticsearch のアップグレード」を参照してください。

August 13, 2019

毎時スナップショット (p. 266) 1 日ごとのスナップショットに対して、Amazon ElasticsearchService は Elasticsearch 5.3 移行を実行しているドメインの毎時のスナップショットを作成するようになり、データを復元するためのバックアップをより頻繁に行います。詳細については、「AmazonElasticsearch サービスインデックスのスナップショットを使用する」を参照してください。

July 8, 2019

Elasticsearch 6.7 のサポート (p. 266)

Amazon Elasticsearch Service でElasticsearch バージョン 6.7 がサポートされるようになりました。詳細については、「サポートされている Elasticsearch バージョン」を参照してください。

May 29, 2019

SQL サポート (p. 266) Amazon Elasticsearch Service では、SQL を使用してデータをクエリできるようになりました。詳細については、「SQL サポート」を参照してください。この機能では、サービスソフトウェアR20190418 以降が必要です。

May 15, 2019

5 つのシリーズのインスタンスタイプ (p. 266)

Amazon Elasticsearch Serviceで、M5、C5、R5 のインスタンスタイプがサポートされるようになりました。旧世代のインスタンスタイプと比較して、これらの新しいタイプは低価格で優れたパフォーマンスを提供します。詳細については、「サポートされるインスタンスタイプ」および「制限」を参照してください。

April 24, 2019

Elasticsearch 6.5 のサポート (p. 266)

Amazon Elasticsearch Service でElasticsearch バージョン 6.5 がサポートされるようになりました。詳細については、「サポートされている Elasticsearch バージョン」を参照してください。

April 8, 2019

API バージョン 2015-01-01267

Page 276: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイドリリースノート

アラート (p. 266) 1 つ以上の Elasticsearch インデックスのデータが特定の条件を満たすときに、このアラート機能により通知されます。詳細については、「アラート」を参照してください。この機能では、サービスソフトウェア R20190221 以降が必要です。

March 25, 2019

3 つのアベイラビリティーゾーンのサポート (p. 266)

Amazon Elasticsearch Service では、多くのリージョンで 3 つのアベイラビリティーゾーンがサポートされるようになりました。このリリースには、効率化されたコンソール機能も含まれています。詳細については、「マルチAZ ドメインの設定」を参照してください。この機能では、サービスソフトウェア R20181023 以降が必要です。

February 7, 2019

Elasticsearch 6.4 のサポート (p. 266)

Amazon Elasticsearch Service でElasticsearch バージョン 6.4 がサポートされるようになりました。詳細については、「サポートされている Elasticsearch バージョン」を参照してください。

January 23, 2019

200 ノードクラスター (p. 266) Amazon ES では、ストレージが合計 3 PB の最大 200 個のデータノードを持つクラスターを作成できるようになりました。詳細については、「ペタバイト規模」を参照してください。

January 22, 2019

新しい CloudWatch メトリクス (p. 266)

Amazon ES には、ノードレベルのメトリクスが追加され、新しい[クラスターの状態] および [インスタンスの状態] タブが AmazonES コンソールに追加されました。詳細については、「クラスターメトリクスのモニタリング」を参照してください。

November 20, 2018

サービスソフトウェア更新 (p. 266)

これで、Amazon ES では、ドメインのサービスソフトウェアを手動で更新して、新機能を迅速に利用したり、トラフィックの少ない時間に更新したりできます。詳細については、「サービスのソフトウェア更新」を参照してください。

November 20, 2018

中国 (北京) のサポート (p. 266) Amazon Elasticsearch Service がcn-north-1 リージョンで使用できるようになりました。ここでは、M4、C4、R4 インスタンスタイプがサポートされます。

October 17, 2018

API バージョン 2015-01-01268

Page 277: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド以前の更新

ノード間の暗号化 (p. 266) ノード間の暗号化が AmazonElasticsearch Service によりサポートされるようになりました。これにより、データは暗号化され Elasticsearch がクラスター全体に配信できます。詳細については、「ノード間の暗号化」を参照してください。

September 18, 2018

インプレースバージョンアップグレード (p. 266)

Amazon Elasticsearch Serviceは Elasticsearch のインプレースバージョンアップグレードをサポートするようになりました。詳細については、「Elasticsearchのアップグレード」を参照してください。

August 14, 2018

Elasticsearch6.3 および 5.6 のサポート (p. 266)

Amazon Elasticsearch Serviceで Elasticsearch バージョン 6.3および 5.6 がサポートされるようになりました。詳細については、「サポートされているElasticsearch バージョン」を参照してください。

August 14, 2018

エラーログ (p. 266) Amazon ES では、Elasticsearchエラーログを AmazonCloudWatch に発行するようになりました。詳細については、「ログの設定」を参照してください。

July 31, 2018

中国 (寧夏) のリザーブドインスタンス (p. 266)

Amazon ES が中国 (寧夏) リージョンでリザーブドインスタンスの提供を開始しました。

May 29, 2018

リザーブドインスタンス (p. 266)

Amazon ES がリザーブドインスタンスの提供を開始しました。詳細については、「Amazon ES リザーブドインスタンス」を参照してください。

May 7, 2018

以前の更新以下の表は、2018 年 5 月以前の Amazon ES の重要な変更点をまとめたものです。

変更 説明 日付

Kibana の AmazonCognito 認証

Amazon ES で、Kibana のログインページの保護が追加されました。詳細については、「Kibana の認証 (p. 117)」を参照してください。

2018 年 4 月2 日

Elasticsearch 6.2 のサポート

Amazon Elasticsearch Service で Elasticsearch バージョン 6.2がサポートされるようになりました。

2018 年 3 月14 日

韓国語分析プラグイン Amazon ES で、メモリ最適化バージョンの Seunjeon 韓国語分析プラグインのサポートが開始されました。

2018 年 3 月13 日

API バージョン 2015-01-01269

Page 278: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド以前の更新

変更 説明 日付

アクセスコントロールの瞬時の更新

Amazon ES ドメインでのアクセスコントロールポリシーの変更は、すぐに有効化されるようになりました。

2018 年 3 月7 日

ペタバイト規模 Amazon ES で I3 インスタンスタイプと合計で最大 1.5 PB のドメインストレージがサポートされるようになりました。詳細については、「ペタバイト規模 (p. 156)」を参照してください。

2017 年 12 月19 日

保管時のデータの暗号化

Amazon ES で保管時のデータの暗号化がサポートされるようになりました。詳細については、「the section called “保管時の暗号化” (p. 47)」を参照してください。

2017 年 7 月12 日

Elasticsearch 6.0 のサポート

Amazon ES で Elasticsearch バージョン 6.0 がサポートされるようになりました。移行に関する考慮事項と手順については、「Elasticsearch のアップグレード (p. 105)」を参照してください。

2017 年 6 月12 日

VPC サポート Amazon ES は Amazon Virtual Private Cloud 内でドメインを起動できるようになりました。VPC のサポートはセキュリティに追加のレイヤーを提供し、VPC における Amazon ES とその他のサービス間の通信を簡素化します。詳細については、「VPCサポート (p. 132)」を参照してください。

2017 年 10 月17 日

スローログの公開 Amazon ES は、CloudWatch Logs のスローログの公開をサポートするようになりました。詳細については、「the sectioncalled “ログの設定” (p. 21)」を参照してください。

2017 年 16 月10 日

Elasticsearch 5.5 のサポート

Amazon ES で Elasticsearch バージョン 5.5 がサポートされるようになりました。新しい機能の概要については、可用性に関する「Amazon からのお知らせ」を参照してください。

AWS サポート に問い合わせることなく自動スナップショットを復元し、Elasticsearch _scripts API を使用してスクリプトを保存できるようになりました。

2017 年 9 月7 日

Elasticsearch 5.3 のサポート

Amazon ES に、Elasticsearch のバージョン 5.3 のサポートが追加されました。

2017 年 6 月1 日

クラスターあたりのインスタンスと EBSキャパシティーが増加

Amazon ES では、クラスターあたり最大 100 個のノードと150 TB の EBS キャパシティーがサポートされるようになりました。

2017 年 4 月5 日

カナダ (中部) と欧州(ロンドン) のサポート

Amazon ES は、カナダ (中部) ca-central-1 および欧州 (ロンドン) eu-west-2 リージョンのサポートを追加しました。

2017 年 3 月20 日

より多くのインスタンスと拡大した EBS ボリューム

Amazon ES に、より多くのインスタンスと拡大した EBS ボリュームのサポートが追加されました。

2017 年 2 月21 日

Elasticsearch 5.1 のサポート

Amazon ES は、Elasticsearch のバージョン 5.1 にサポートを追加しました。

2017 年 1 月30 日

Phonetic Analysis プラグインのサポート

Amazon ES には、Phonetic Analysis プラグインとの統合が組み込まれています。これにより、データに対して同音異義のクエリ実行が可能になります。

2016 年 22 月12 日

米国東部 (オハイオ)のサポート

Amazon ES で、米国東部 (オハイオ) リージョン (us-east-2) のサポートが追加されました。

2016 年 10 月17 日

API バージョン 2015-01-01270

Page 279: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド以前の更新

変更 説明 日付

新しいパフォーマンスメトリクス

Amazon ES が新しいパフォーマンスメトリクスClusterUsedSpace を追加しました。

2016 年 7 月29 日

Elasticsearch 2.3 のサポート

Amazon ES は、Elasticsearch のバージョン 2.3 のサポートを追加しました。

2016 年 7 月27 日

アジアパシフィック(ムンバイ) のサポート

Amazon ES は、アジアパシフィック (ムンバイ) ap-south-1リージョンのサポートを追加しました。

2016 年 6 月27 日

クラスターあたりのさらなるインスタンス

Amazon ES は、クラスターごとのインスタンス (インスタンス数) の最大数を 10 から 20 に増やしました。

2016 年 5 月18 日

アジアパシフィック(ソウル) のサポート

Amazon ES は、アジアパシフィック (ソウル) ap-northeast-2リージョンのサポートを追加しました。

2016 年 1 月28 日

Amazon ES 初回リリース. 2015 年 10 月1 日

API バージョン 2015-01-01271

Page 280: 開発者ガイド API バージョン 2015-01-01 · Amazon Elasticsearch Service 開発者ガイド インデックススナップショットの使用.....98

Amazon Elasticsearch Service 開発者ガイド

AWS の用語集最新の AWS の用語については、『AWS General Reference』の「AWS の用語集」を参照してください。

API バージョン 2015-01-01272