S3 オブジェクト ストレージの設定
オブジェクト ストレージの仕組みを図に示します。Confluence にアップロードされた添付ファイルは Amazon S3 バケットに保存され、そこから取得されます。
オブジェクト ストレージが適切かどうかを確認する
アトラシアンでは、オブジェクト ストレージ ソリューションの改善に引き続き取り組んでいます。このバージョンの要件と制限をしっかりと確認して、自分に適しているかどうかを確認することをお勧めします。
要件
Amazon S3 オブジェクト ストレージを使用するための要件は次のとおりです。
Data Center ライセンスを使用している必要があります。
Confluence を AWS にプロビジョニングすることを計画しているか、すでに AWS で Confluence を実行している必要があります。この機能は、オンプレミス デプロイや AWS で Confluence を実行していない顧客にはサポートされていません。
- Confluence の添付ファイルを保持するには、専用の Amazon S3 バケットが必要です。S3 バケットを作成して設定し、Confluence に接続する方法の詳細については、こちらのページをご覧ください。
既存のお客様の場合: 添付ファイル データを Amazon S3 に移行する必要があります。方法については「添付ファイルのストレージの設定」をご参照ください。
制限事項
- 現在、Amazon S3 は Confluence がサポートしている唯一のオブジェクト ストレージ ソリューションです。
S3 オブジェクト ストレージは添付ファイル データ専用です。設定データなどの他のデータには、引き続きファイル システム ストレージを使用する必要があります。
添付ファイル データをファイル システムから Amazon S3 に移行したり、Amazon S3 からファイル システムや別のストレージ メディアに移行したりする場合に、現在アトラシアンがサポートしている方法はありません。一般的には、すべての移行作業に Amazon DataSync が推奨されます。
- Using temporary credentials to authenticate to AWS will require a Confluence restart every time they change. Track this issue at CONFSERVER-81610 - Getting issue details... STATUS
- There is a known issue when Amazon S3 object storage is configured where performing attachment-related tasks involving more than 50 attachments causes your instance to become temporarily unresponsive or slow. We are actively investigating this bug, and you can track the issue at CONFSERVER-82499 - Getting issue details... STATUS
ステップ 1. バケットを作成する
Amazon S3 を使用して添付ファイルの保存を始める前に、Amazon S3 バケットが必要です。その方法に関する Amazon の公式ガイドが公開されています。
S3 バケットを保護するためのリマインダー
バケットが正しく保護され、公開されていないことをご確認ください。Amazon S3 バケットの設定とセキュリティ確保はユーザーの責任であり、アトラシアンは S3 の設定に関連する問題を直接サポートすることはできません。
バケットの権限
Confluence に、次に対する読み取り権限と書き込み権限を付与します。
s3:ListBucket
s3:PutObject
s3:GetObject
s3:DeleteObject
バケットの認証方法 (ステップ 2 を参照) によっては、こうした権限を、バケット ポリシーを使用してバケット レベルで適用することも、EC2 の IAM ロールを介して適用することもできます。
下記は、(最小権限モデルに基づいて) 適切な権限を提供する Identity and Access Management (IAM) ポリシーの例です。
{
"Version": "2012-10-17",
"Id": "PolicyForS3Access",
"Statement": [
{
"Sid": "StatementForS3Access",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/ConfluenceS3"
},
"Action": [
"s3:ListBucket",
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::confluence-attachment-data/*",
"arn:aws:s3:::confluence-attachment-data"
]
}
]
}
サポートされているバケット構成
Confluence では、AWS コンソールまたは CLI を介して S3 バケットのプロパティと機能を有効にすることが可能です。
下記にリストされていないプロパティを設定すると、Confluence がバケットで正しく動作しなくなる可能性があります。
プロパティ | 説明 |
---|---|
バケットのバージョニング | バージョニングを有効にすることで、オブジェクトの複数バージョンを 1 つのバケットに保持できます。初期設定では、新しい S3 バケットのバージョニングは無効になっています。 Amazon S3 のバケット バージョニングは、Confluence の添付ファイル バージョン管理方法を補完するものと考えるべきです。この 2 つのアプローチは相互に排他的であり、一方が他方に影響することはありません。 Confluence から完全削除した場合でも、バケットに保存されている全オブジェクトの全バージョンを保存、取得、復元する必要がある場合は、S3 バケットのバージョニングを使用する必要があります。 つまり、添付ファイルを S3 バケットから手動で削除せずに Confluence から完全削除しても、そのファイルは S3 に引き続き存在しています。Confluence 管理者が気付いていない場合、特定の GDPR コンプライアンスに違反する可能性があります。 バージョニングの有効化については、「バケットでのバージョニングを有効化する」をご参照ください。 |
バケットのポリシー | バケットに保存されているオブジェクトへのアクセスを制御します。「Amazon S3 のポリシーと権限」をご参照ください。 |
S3 Intelligent-Tiering | 「自動」とマークされたアクセス階層のみがサポートされています。「S3 Intelligent-Tiering アクセス階層」をご参照ください。 |
ステップ 2. Amazon S3 バケットを認証する
Confluence は Java 2.x 用 AWS SDK を使用して Amazon S3 と通信します。SDK が認証されるまで、次の事前定義された順序で Confluence 環境の認証情報を検索します。
Amazon EC2 インスタンス プロファイル認証情報は Amazonが推奨しています。このオプションを使用する場合は、インスタンス メタ データ サービス v2
を使用することもお勧めします。
- 環境変数
Java システムのプロパティ
Java システム プロパティを使用する場合、これらの値はスタートアップ時に製品によって記録される可能性があることに注意してください。
AWS セキュリティ トークン サービスのウェブ ID トークン
共有認証情報と
config
ファイル(~/.aws/credentials)
Amazon ECS コンテナーの認証情報
Amazon EC2 インスタンス プロファイル認証情報 (Amazon が推奨)
お使いの環境に対する認証情報の設定については、Amazon に次の開発者ガイドが用意されています。
バケット接続をテストする方法は次のとおりです。
AWS S3 CLI と下記の手順を使用して、認証メカニズムが有効であり、正しい権限が指定されていることを確認します。
テスト ファイルを作成します。
touch /tmp/test.txt
ファイルをターゲット バケットに書き込むことで、
S3:PutObject
権限を確認します。aws s3api put-object --bucket <bucket_name> --key conn-test/test.txt --body /tmp/test.txt
S3:ListBucket
権限を確認します。aws s3api list-objects --bucket <bucket_name> --query 'Contents[].{Key: Key, Size: Size}'
S3:GetObject
権限を確認します。aws s3api get-object --bucket <bucket_name> --key conn-test/test.txt /tmp/test.txt
S3: DeleteObject
権限を確認します。aws s3api delete-object --bucket <bucket_name> --key conn-test/test.txt
元のテスト ファイルを削除します。
rm /tmp/test.txt
ステップ 3. S3 バケットを Confluence に接続する
Amazon S3 バケットを Confluence インスタンスに接続する方法は次のとおりです。
バケット名とリージョンのシステム プロパティを設定します。
confluence.filestore.attachments.s3.bucket.name
confluence.filestore.attachments.s3.bucket.region
この方法については「システム プロパティの設定」をご参照ください。
- 注: ローカル ホームまたは共有ホーム (クラスタリングが有効な場合) にある
confluence.cfg.xml
は、これらのプロパティで自動的に更新されます。
次に、Confluence インスタンスを起動/再起動します。
Confluence が起動すると、バケット接続、バケットの名前とリージョンの妥当性、バケットの権限がチェックされます。 必要事項を検証できない場合、起動プロセスは停止し、失敗した理由を伝えるエラー メッセージが表示されます。こうしたエラーに関するヘルプは、下記のトラブルシューティング セクションをご確認ください。
Confluence が Amazon S3 オブジェクト ストレージを使用していることを確認する方法は次のとおりです。
Go to Administration > General Configuration > System Information
Next to Attachment Storage Type, you'll see S3
Additionally, next to Java Runtime Arguments, both the bucket name and region system properties and their respective values will be visible.
注: Amazon S3 ストレージを使用している場合、Confluence は attachments.dir
プロパティ (ストレージ ディレクトリの再配置に使用) を無視します。代わりに、添付ファイル データはルートのプレフィックス /confluence/attachments/v4
を使用して S3 に保存されます。つまり、Confluence が Amazon S3 を使用するように設定されると、attachments.dir
プロパティを変更しても、添付ファイルの保存場所には影響しません。
トラブルシューティング
起動時に、Confluence で一連のヘルス チェックを実行して問題を特定します。その問題と解決に必要なアクションを下記に示します。
主な問題が関連するのは、不適切な S3 構成、権限、または認証です。
また、atlassian-confluence-health-checks.log
でヘルス チェック ログをレビューして、問題の詳細を確認することもできます。「Confluence ログを使用する」のページでは、このログや他のログにアクセスする方法を説明しています。
問題 | ソリューション |
---|---|
S3 設定がありません | この状況で、プロパティ Amazon S3 が機能するには、バケットの名前とリージョンの両方に有効な値を指定する必要があります。 |
バケットのリージョンが有効ではありません | この状況において、プロパティ バケットのリージョンに有効な値を入力して、Confluence を再起動する必要があります。 |
バケット名が無効です | この状況において、プロパティ バケットの名前に有効な値を入力して、Confluence を再起動する必要があります。 |
不正な AWS 認証情報で Confluence を起動しています | この状況では、選択された認証メカニズムの一部として、無効な AWS アクセス キーが提供されました。その結果、AWS での認証に失敗しました。 アクセス キーに有効な値を入力して、Confluence を再起動する必要があります。 |
バケットに読み取り権限が設定されていません ( | この状況では、 正しいバケット権限が設定されていることを確認し、必要に応じて適用します。その後、Confluence を再起動します。 |
バケットに書き込み権限が設定されていません ( | この状況では、 正しいバケット権限が設定されていることを確認し、必要に応じて適用します。その後、Confluence を再起動します。 |
バケットに削除権限が設定されていません ( | この状況では、 正しいバケット権限が設定されていることを確認し、必要に応じて適用します。その後、Confluence を再起動します。 |
リスト権限のないバケットで Confluence を設定しています ( | この状況では、 正しいバケット権限が設定されていることを確認し、必要に応じて適用します。その後、Confluence を再起動します。 |