31.2. S3_PING 設定オプション
Red Hat JBoss Data Grid は Amazon Web Services と 2 通りの方法で連動します。
- ライブラリーモードでは、JGroups の
default-configs/default-jgroups-ec2.xmlファイル (詳細については、「default-jgroups-ec2.xml」を参照) またはS3_PINGプロトコルを使用します。 - リモートクライアントサーバーモードでは、JGroups の
S3_PINGプロトコルを使用します。
ライブラリーおよびリモートクライアントサーバーモードでは、Amazon AWS で機能するようにクラスター化するために
S3_PING プロトコルを設定する方法として 3 つの方法があります。
- プライベート S3 バケットを使用します。これらのバケットは Amazon AWS のクレデンシャルを使用します。
- 事前署名付き URL を使用します。これらの事前に割り当てられる URL は、プライベートの書き込みアクセスとパブリックの読み取りアクセスを持つバケットに割り当てられます。
- パブリック S3 バケットを使用します。これらのバケットにはクレデンシャルがありません。
31.2.1. プライベート S3 バケットの使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
この設定には、適切な AWS クレデンシャルによってのみアクセスできるプライベートバケットへのアクセスが必要です。適切な権限が利用できることを確認するには、ユーザーにバケットの以下の権限があることを確認してください。
- List
- Upload/Delete
- View Permissions
- Edit Permissions
S3_PING 設定には以下のプロパティーが含まれることを確認してください。
- バケットのある
location。 - AWS ユーザーには
access_keyとsecret_access_keyプロパティー。
注記
この設定の使用時に
403 エラーが表示される場合、プロパティーに正しい値があることを検証してください。問題が存続する場合、EC2 ノードのシステム時間が正しいことを確認してください。Amazon S3 は、セキュリティー上の理由により、サーバーの時間よりも 15 分を超える遅れがあるタイムスタンプを持つ要求を拒否します。
例31.1 プライベートバケットの使用による Red Hat JBoss Data Grid Server の起動
サーバーディレクトリーの上位レベルから次のコマンドを実行して、プライベート S3 バケットを使用して Red Hat JBoss Data Grid サーバーを起動します。
- {node_name} をサーバーの必要なノード名に置き換えます。
- {port_offset} をポートオフセットに置き換えます。デフォルトのポートを使用するには、これを
0に指定します。 - {s3_bucket_name} を適切なバケット名に置き換えます。
- {access_key} をユーザーのアクセスキーに置き換えます。
- {secret_access_key} をユーザーの秘密アクセスキーに置き換えます。
31.2.2. 事前署名付き URL の使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
この設定では、List 権限を Everyone に設定し、パブリックの読み取りアクセスを許可することにより、S3 の一般に読み取り可能なバケットを作成します。クラスター内の各ノードは、
S3_PING プロトコルで要求される場合に、put および delete 操作用に事前署名付き URL を生成します。この URL は固有のファイルを参照し、バケット内のフォルダーパスを組み込むことができます。
注記
パスが長くなると、
S3_PING にエラーが発生します。たとえば、my_bucket/DemoCluster/node1 のようなパスは機能しますが、my_bucket/Demo/Cluster/node1 のようにパスが長くなると機能しません。
31.2.2.1. 事前署名付き URL の生成 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
JGroups の
S3_PING クラスには、事前署名付き URL を生成するためのユーティリティーメソッドが含まれます。このメソッドの最後の引数は、Unix epoch (1970 年 1 月 1 日) からの秒数で表される URL の有効期間です。
事前署名付き URL を生成する構文は次のようになります。
String Url = S3_PING.generatePreSignedUrl("{access_key}", "{secret_access_key}", "{operation}", "{bucket_name}", "{path}", {seconds});
String Url = S3_PING.generatePreSignedUrl("{access_key}", "{secret_access_key}", "{operation}", "{bucket_name}", "{path}", {seconds});
- {operation} を
PUTまたはDELETEのいずれかに置き換えます。 - {access_key} をユーザーのアクセスキーに置き換えます。
- {secret_access_key} をユーザーの秘密アクセスキーに置き換えます。
- {bucket_name} をバケットの名前に置き換えます。
- {path} をバケット内のファイルへの必要なパスに置き換えます。
- {seconds} を、Unix epoch (1970 年 1 月 1 日) からのパスの有効期間を表す秒数に置き換えます。
例31.2 事前署名付き URL の生成
String putUrl = S3_PING.generatePreSignedUrl("access_key", "secret_access_key", "put", "my_bucket", "DemoCluster/jgroups.list", 1234567890);
String putUrl = S3_PING.generatePreSignedUrl("access_key", "secret_access_key", "put", "my_bucket", "DemoCluster/jgroups.list", 1234567890);
S3_PING 設定に、S3_PING.generatePreSignedUrl() の呼び出しで生成された pre_signed_put_url および pre_signed_delete_url プロパティーが含まれていることを確認してください。この設定の場合、AWS クレデンシャルがクラスター内の各ノードに保存されないため、プライベート S3 バケットを使用する設定よりも安全度が高くなります。
注記
事前署名付き URL が XML ファイルに入力される場合、URL 内の
& 文字をその XML エンティティー (&) に置き換える必要があります。
31.2.2.2. コマンドラインを使用した事前署名付き URL の設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインを使用して事前署名付き URL を設定するには、以下のガイドラインを使用します。
- URL を二重引用符 (
"") で囲みます。 - URL では、アンパーサンド (
&) 文字の各出現箇所はバックスラッシュ (\) でエスケープする必要があります。
例31.3 事前署名付き URL による JBoss Data Grid Server の起動
- {node_name} をサーバーの必要なノード名に置き換えます。
- {port_offset} をポートオフセットに置き換えます。デフォルトのポートを使用するには、これを
0に指定します。 - {s3_bucket_name} を適切なバケット名に置き換えます。
- {access_key} をユーザーのアクセスキーに置き換えます。
- {expiration_time} を、
S3_PING.generatePreSignedUrl()メソッドに渡された URL の値に置き換えます。 - {signature} を、
S3_PING.generatePreSignedUrl()メソッドで生成される値に置き換えます。
31.2.3. パブリック S3 バケットの使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
この設定には、パブリックの読み書き権限のある S3 バケットが関係します。つまり、Everyone には、バケットの List、 Upload/Delete の権限、View Permissions、および Edit Permissions が設定されます。
location プロパティーは、この設定のバケット名で指定する必要があります。この設定メソッドは、バケットの名前を知っているいずれのユーザーもバケットにデータをアップロードしたり、保存したりでき、バケット作成者のアカウントはこのデータについてチャージされるため、安全度は最も低くなります。
Red Hat JBoss Data Grid サーバーを起動するには、以下のコマンドを使用します。
- {node_name} をサーバーの必要なノード名に置き換えます。
- {port_offset} をポートオフセットに置き換えます。デフォルトのポートを使用するには、これを
0に指定します。 - {s3_bucket_name} を適切なバケット名に置き換えます。