EdgeOneリアルタイムログプッシュは、IAMロールの一時認証情報(AWS STS)による認証を通じて、お客様のAWSアカウント内のS3バケットへのログプッシュをサポートします。長期の静的アクセスキーを設定する必要はなく、一時認証情報は自動的に有効期限切れとなるため、キーの漏洩やローテーションに伴うセキュリティリスクを低減します。お客様はコンソールまたはAPIを通じて設定できます。
説明:
AWS S3はAWS専用の宛先であり、IAMロール(Role Assumption + STS一時認証情報)による認証を採用しています。AWS S3をログストレージとして使用するお客様に推奨します。
他のS3互換オブジェクトストレージ(Tencent Cloud COS、Google Cloud Storageなど)にプッシュする必要がある場合は、AWS S3互換のオブジェクトストレージ宛先を使用してください。詳細については、S3互換オブジェクトストレージへのプッシュを参照してください。 前提条件
1. AWSアカウントをすでに所有しており、ターゲットリージョンにリアルタイムログを保存するためのS3バケットを作成済みです。
2. AWS IAMでEdgeOneログ配信用のIAMロールを作成し、信頼ポリシー(Trust policy)と権限ポリシー(Permission policy)の設定を完了してください。詳細については、後述のIAMロール設定を参照してください。
IAMロールの設定
1. AWS管理コンソールにログインし、IAM > Rolesに移動して、Create roleをクリックします。
2. Step 1 Select trusted entityで、Trusted entity typeとしてAWS accountを選択し、Another AWS accountを選択して、Account IDにEdgeOneサービスアカウントIDを入力します。EdgeOneサービスアカウントIDは、お客様のターゲット配信バケットが所在するパーティションによって区別されます。お客様のS3バケットが所在するパーティションに基づいて対応する値を入力してください:
バケットがAWSグローバルリージョン(エンドポイントドメインサフィックスはamazonaws.com)にあります:361796580773。
バケットがAWS中国リージョン(エンドポイントドメインサフィックスはamazonaws.com.cn)にあります:382884104370。
注意:
AWSグローバルリージョンと中国リージョンは相互に分離された独立したパーティションです。必ずバケットが所在するパーティションに基づいて、対応するEdgeOneサービスアカウントIDを選択してください。パーティションとアカウントIDが一致しない場合、AssumeRoleが拒否され、コンソールでのリアルタイムログタスク作成の検証が失敗します。
3. Require external IDをチェックし、External IDにお客様のTencent CloudメインアカウントUINを入力して、Nextをクリックします。
説明:
<External ID>は、混乱した代理人(Confused Deputy)攻撃を防ぐためのセキュリティ識別子であり、その値はお客様のTencent CloudメインアカウントUINです。EdgeOneコンソール > サイト詳細 > リアルタイムログ > リアルタイムログタスクの新規作成 > 宛先情報ページのExternal IDで確認およびコピーできます。
4. Step 2 Add permissionsで、Create inline policy(このロールに直接アタッチする新しいポリシーを作成します)を選択し、Policyエディタに以下の内容を貼り付け、<ストレージバケット名>をお客様の実際の値に置き換えてください:
{
"Version": "2012-10-17",
"Statement": {
"Sid": "EdgeOneRealtimeLogDelivery",
"Effect": "Allow",
"Action": ["s3:PutObject", "s3:AbortMultipartUpload"],
"Resource": "arn:aws:s3:::<ストレージバケット名>/*"
}
}
注意:
バケットがAWS中国リージョンにある場合、ResourceのARNをarn:aws-cn:s3:::<ストレージバケット名>/*に変更する必要があります。
説明:
IAM > Policiesで再利用可能な権限ポリシーを作成済みの場合は、Add permissionsステップでUse existing policyを選択し、既存のポリシーをチェックすることで、新しいポリシーを作成する必要はありません。
5. エディタ下部にError表示がないことを確認してから、Nextをクリックします。
6. Step 3 Name, review, and createで、ロールに名前を付け、Trust policyとPermission policyが正しいことを確認し、Tag設定を完了してから、Create Roleをクリックして作成を完了します。
AWSグローバルリージョンのTrust policy例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Principal": {
"AWS": "361796580773"
},
"Condition": {
"StringEquals": {
"sts:ExternalId": "<お客様のTencent CloudメインアカウントUIN>"
}
}
}
]
}
AWS中国リージョンのTrust policy例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Principal": {
"AWS": "382884104370"
},
"Condition": {
"StringEquals": {
"sts:ExternalId": "<お客様のTencent CloudメインアカウントUIN>"
}
}
}
]
}
7. 上記の設定が完了したら、IAM > Rolesに移動し、作成したロールを選択し、EdgeOneコンソールで宛先パラメータを入力するために以下の情報を記録します:
IAMロールARN:形式はarn:aws:iam::<お客様のAWSアカウントID>:role/<ロール名>です(中国リージョンのAWSアカウント形式はarn:aws-cn:iam::<お客様のAWSアカウントID>:role/<ロール名>です)。
操作手順
1. EdgeOneコンソールにログインし、左側のメニューバーで「サービス概要」に入り、「Webサイトセキュリティアクセラレーション」内で設定が必要なサイトをクリックします。
2. サイト詳細ページで、CLS > リアルタイムログをクリックします。
3. リアルタイムログページで、新しい配信タスクを作成をクリックします。
4. ログソース選択ページで、タスク名を入力し、ログタイプ、サービスリージョンを選択し、次へをクリックします。
5. 宛先選択ページで、AWS S3を選択し、次へをクリックします。
6. 配信コンテンツ定義ページ:
(必須)ログを配信するドメイン名/レイヤー4プロキシインスタンス/エッジ関数インスタンスを選択します。
(任意)カスタムログフィールドを追加します。カスタムログフィールド名、および式を使用したカスタムログフィールド値をサポートします。 (任意)詳細設定でサンプリング比率を設定します。デフォルトではサンプリングは無効で、100%のログが宛先に配信されます。
(任意)詳細設定でログ出力形式を設定します。デフォルト形式はJSON Linesです。 次へをクリックします。
7. 宛先情報ページで、以下のパラメータを入力します:
|
バケット名(必須) | AWS S3でEdgeOneリアルタイムログを保存するためのバケット名です。例えばmy-logpush-s3-bucketです。長さは3~63文字で、小文字、数字、ピリオド(.)、ハイフン(-)のみを使用でき、先頭と末尾は英字または数字である必要があります。 |
エンドポイントドメイン名(必須) | S3バケットが所在するリージョンのサービスエンドポイントドメイン名です。形式はs3.<region>.<ドメインサフィックス>です。 AWSグローバルリージョンのサフィックスはamazonaws.comです。例えばs3.us-west-2.amazonaws.comです。完全な選択可能リストについてはAWS公式ドキュメントを参照してください。 AWS中国リージョンのサフィックスはamazonaws.com.cnです。例えばs3.cn-north-1.amazonaws.com.cnです。完全な選択可能リストについてはAWS公式ドキュメントを参照してください。 |
IAMロールARN(必須) | AWSアカウントでEdgeOneログ配信用に作成したIAMロールARNです。EdgeOneはこのロールを使用してAWS STSから一時認証情報を取得し、S3バケットに書き込みます。 AWSグローバルリージョンの形式はarn:aws:iam::<お客様のAWSアカウントID>:role/<ロール名>です。 AWS中国リージョンの形式はarn:aws-cn:iam::<お客様のAWSアカウントID>:role/<ロール名>です。 |
ファイル圧縮(オプション) | ログファイルをGzip圧縮するかどうかを選択します。デフォルトでは圧縮しません。 |
ログディレクトリ(必須) | S3バケット内でログオブジェクトを保存するディレクトリパスです。/で区切って複数階層のサブディレクトリを作成します。使用できるのは安全な文字(英字、数字、! - _ . * ' ( ))のみで、合計長は1024バイトを超えてはなりません。 |
8. プッシュをクリックします。EdgeOneは直ちに接続性の事前チェックを開始し、AWS STSに一時認証情報を申請し、ターゲットストレージバケットにテストファイルを書き込みます:
事前チェックが成功しました:タスクが正常に作成され、リアルタイムログの配信が開始されます。
事前チェックが失敗しました:エラーメッセージに従って、IAMロールの信頼ポリシー、権限ポリシー、および宛先パラメータ設定を確認してください。
ファイル名の説明
ログは{{UploadTime}}_{{Random}}.log形式で指定ディレクトリに書き込まれ、日付(UTC+0)ごとにフォルダにアーカイブされます。例:20261028/20261028T185917Z_2aadf5ce.log。Gzip圧縮を有効にした場合、ファイル名に.gzサフィックスが追加されます。例:20261028/20261028T185917Z_2aadf5ce.log.gz。
UploadTime:ログファイルのアップロード時間です。UTC+0タイムゾーンを採用し、形式はYYYYMMDDTHHmmssZのようになります。
Random:ランダム文字列です。ログ量が多い場合、同じアップロード時間に複数のログファイルが生成される可能性があります。このランダム文字列によって異なるファイルを区別します。
認証フローの説明
EdgeOneバックエンドにおけるログ配信サイクル内の認証および書き込みフローは以下の通りです:
1. 一時認証情報の取得:EdgeOneは、そのサービスアカウント(ストレージバケットが所在するリージョンに応じて、グローバルリージョンでは361796580773、中国リージョンでは382884104370)の身份を使用し、お客様が設定したIAMロールARNとExternal IDを携えてsts:AssumeRoleを呼び出します。AWSは信頼ポリシー内のPrincipalとsts:ExternalId条件を検証した後、有効期間が約1時間の一時認証情報(一時Access Key、Secret Key、Session Token)を返します。EdgeOneは一時認証情報をキャッシュし、有効期限が切れる前に自動的に更新します。
2. ログ書き込み:EdgeOneは一時認証情報を使用してS3リクエストにSignature Version 4署名を行い、お客様が指定したストレージバケットとディレクトリにログを書き込みます。