本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
為 Application Load Balancer 啟用存取日誌
為負載平衡器啟用存取記錄時,必須指定供負載平衡器存放日誌的 S3 儲存貯體名稱。儲存貯體必須具有儲存貯體政策,能授予 Elastic Load Balancing 寫入儲存貯體的許可。
步驟 1:建立 S3 儲存貯體
啟用存取日誌時,必須為存取日誌指定 S3 儲存貯體。您可以使用現有儲存貯體,也可以建立專門用於存取日誌的儲存貯體。儲存貯體必須符合下列需求。
要求
-
儲存貯體與負載平衡器必須位於相同的 Region (區域)。儲存貯體和負載平衡器可以由不同的帳戶擁有。
-
Amazon S3 受管金鑰 (SSE-S3) 是唯一支援的伺服器端加密選項。如需詳細資訊,請參閱 Amazon S3 受管加密金鑰 (SSE-S3)。
使用 Amazon S3 主控台建立 S3 儲存貯體
-
開啟位於 https://console.aws.amazon.com/s3/
的 Amazon S3 主控台。 -
選擇建立儲存貯體。
-
在 Create bucket (建立儲存貯體) 頁面上,執行下列操作:
-
針對 Bucket name (儲存貯體名稱),輸入儲存貯體的名稱。該名稱在 Amazon S3 中所有現有的儲存貯體名稱之間,不得重複。在某些區域,可能會對儲存貯體的名稱進行其他限制。如需詳細資訊,請參閱《Amazon S3 使用者指南》中的儲存貯體限制。
-
針對 AWS 區域,選取您建立負載平衡器時所在的區域。
-
對於預設加密,選擇 Amazon S3 受管金鑰 (SSE-S3)。
-
選擇建立儲存貯體。
-
步驟 2:連接政策到您的 S3 儲存貯體
您的 S3 儲存貯體必須擁有儲存貯體政策,以授權 Elastic Load Balancing 將存取日誌寫入到儲存貯體。儲存貯體政策是以存取政策語言所編寫的 JSON 陳述式集合,可定義儲存貯體的存取許可。每個陳述式包含單一許可的相關資訊,且包含一系列的元素。
如果您目前使用的儲存貯體有已連接的政策,您可以將 Elastic Load Balancing 存取日誌的陳述式加入至政策中。若您這麼做,建議您評估所產生的一組許可,以確保它們適用於需要存取儲存貯體以取得存取日誌的使用者。
可用的儲存貯體政策
您將使用的儲存貯體政策取決於 AWS 區域 和區域類型。以下每個可擴展區段都包含基本儲存貯體政策和政策描述。若要增強安全性,請參閱可摺疊區段下方的建議。
此政策會將許可授予指定的日誌交付服務。在下列區域中,將此政策用於負載平衡器:
亞太區域 (海德拉巴)
亞太地區 (馬來西亞)
亞太區域 (墨爾本)
亞太區域 (台北)
亞太區域 (泰國)
加拿大西部 (卡加利)
歐洲 (西班牙)
歐洲 (蘇黎世)
以色列 (特拉維夫)
中東 (阿拉伯聯合大公國)
墨西哥 (中部)
針對 Resource
,使用範例政策中顯示的格式,輸入存取日誌位置的 ARN。一律在 S3 儲存貯體 ARN 的資源路徑中包含具有負載平衡器的帳戶 ID。這可確保只有來自指定帳戶的負載平衡器才能將存取日誌寫入 S3 儲存貯體。
您指定的 ARN 取決於您是否計劃在步驟 3 中啟用存取日誌時包含字首。
字首為 的範例 S3 儲存貯體 ARN
S3 儲存貯體名稱為 amzn-s3-demo-logging-bucket,字首為 logging-prefix。
arn:aws:s3:::amzn-s3-demo-logging-bucket/logging-prefix/AWSLogs/123456789012/*
沒有字首的範例 S3 儲存貯體 ARN
S3 儲存貯體名稱為 amzn-s3-demo-logging-bucket。S3 儲存貯體 ARN 中沒有字首部分。
arn:aws:s3:::amzn-s3-demo-logging-bucket/AWSLogs/123456789012/*
此政策會將許可授予指定的 Elastic Load Balancing 帳戶 ID。對下列區域中的負載平衡器使用此政策。
對於 Principal
,將 elb-account-id
取代為負載平衡器 區域的 Elastic Load Balancing 帳戶 ID:
-
美國東部 (維吉尼亞北部) – 127311923021
-
美國東部 (俄亥俄) – 033677994240
-
美國西部 (加利佛尼亞北部) – 027434742980
-
美國西部 (奧勒岡) – 797873946194
-
非洲 (開普敦) – 098369216593
-
亞太區域 (香港) – 754344448648
-
亞太區域 (雅加達) – 589379963580
-
亞太區域 (孟買) – 718504428378
-
亞太區域 (大阪) – 383597477331
-
亞太區域 (首爾) – 600734575887
-
亞太區域 (新加坡) – 114774131450
-
亞太區域 (雪梨) – 783225319266
-
亞太區域 (東京) – 582318560864
-
加拿大 (中部) – 985666609251
-
歐洲 (法蘭克福) – 054676820928
-
歐洲 (愛爾蘭) – 156460612806
-
歐洲 (倫敦) – 652711504416
-
歐洲 (米蘭) – 635631232127
-
歐洲 (巴黎) – 009996457667
-
歐洲 (斯德哥爾摩) – 897822967062
-
中東 (巴林) – 076674570225
-
南美洲 (聖保羅) – 507241528517
針對 Resource
,使用範例政策中顯示的格式,輸入存取日誌位置的 ARN。一律在 S3 儲存貯體 ARN 的資源路徑中包含具有負載平衡器的帳戶 ID。這可確保只有來自指定帳戶的負載平衡器才能將存取日誌寫入 S3 儲存貯體。
您指定的 ARN 取決於您是否計劃在步驟 3 中啟用存取日誌時包含字首。
字首為 的範例 S3 儲存貯體 ARN
S3 儲存貯體名稱為 amzn-s3-demo-logging-bucket,字首為 logging-prefix。
arn:aws:s3:::amzn-s3-demo-logging-bucket/logging-prefix/AWSLogs/123456789012/*
沒有字首的範例 S3 儲存貯體 ARN
S3 儲存貯體名稱為 amzn-s3-demo-logging-bucket。S3 儲存貯體 ARN 中沒有字首部分。
arn:aws:s3:::amzn-s3-demo-logging-bucket/AWSLogs/123456789012/*
此政策會將許可授予指定的 Elastic Load Balancing 帳戶 ID。將此政策用於 AWS GovCloud (US) 區域中的負載平衡器。
對於 Principal
,將 elb-account-id
取代為負載平衡器 區域的 Elastic Load Balancing 帳戶 ID:
-
AWS GovCloud (美國西部) – 048591011584
-
AWS GovCloud (美國東部) – 190560391635
針對 Resource
,使用範例政策中顯示的格式,輸入存取日誌位置的 ARN。一律在 S3 儲存貯體 ARN 的資源路徑中包含具有負載平衡器的帳戶 ID。這可確保只有來自指定帳戶的負載平衡器才能將存取日誌寫入 S3 儲存貯體。
您指定的 S3 儲存貯體 ARN 取決於您是否計劃在啟用存取日誌連結步驟 3 時包含字首。
字首為 的範例 S3 儲存貯體 ARN
S3 儲存貯體名稱為 amzn-s3-demo-logging-bucket,字首為 logging-prefix。
arn:aws-us-gov:s3:::amzn-s3-demo-logging-bucket/logging-prefix/AWSLogs/123456789012/*
沒有字首的範例 S3 儲存貯體 ARN
S3 儲存貯體名稱為 amzn-s3-demo-logging-bucket。S3 儲存貯體 ARN 中沒有字首部分。
arn:aws-us-gov:s3:::amzn-s3-demo-logging-bucket/AWSLogs/123456789012/*
以下政策會將許可授予指定的日誌交付服務。將此政策用於 Outpost 區域中的負載平衡器。
{ "Effect": "Allow", "Principal": { "Service": "logdelivery.elb.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/prefix
/AWSLogs/123456789012
/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } }
對於 Resource
,使用範例政策中顯示的格式,輸入存取日誌位置的 ARN。一律在 S3 儲存貯體 ARN 的資源路徑中包含具有負載平衡器之帳戶的帳戶 ID。這可確保只有來自指定帳戶的負載平衡器才能將存取日誌寫入 S3 儲存貯體。
您指定的 S3 儲存貯體 ARN 取決於您是否計劃在步驟 3 中啟用存取日誌時包含字首。
字首為 的範例 S3 儲存貯體 ARN
S3 儲存貯體名稱為 amzn-s3-demo-logging-bucket,字首為 logging-prefix。
arn:aws:s3:::amzn-s3-demo-logging-bucket/logging-prefix/AWSLogs/123456789012/*
沒有字首的範例 S3 儲存貯體 ARN
S3 儲存貯體名稱為 amzn-s3-demo-logging-bucket。S3 儲存貯體 ARN 中沒有字首部分。
arn:aws:s3:::amzn-s3-demo-logging-bucket/AWSLogs/123456789012/*
增強的安全性
使用以下建議來增強 S3 儲存貯體的安全性。
檢閱您的儲存貯體政策
-
使用完整資源路徑,包括 S3 儲存貯體 ARN 的帳戶 ID 部分。請勿在 S3 儲存貯體 ARN 的帳戶 ID 部分中使用萬用字元 (*)。
"Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/prefix
/AWSLogs/123456789012
/*" -
使用 來
aws:SourceArn
確保只有來自指定區域和帳戶的負載平衡器才能使用您的儲存貯體。"Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:elasticloadbalancing:
region
:123456789012
:loadbalancer/*" } } -
使用
aws:SourceOrgId
搭配 ,aws:SourceArn
以確保只有來自指定組織的負載平衡器才能使用您的儲存貯體。"Condition": { "StringEquals": { "aws:SourceOrgId": "
o-1234567890
" }, "ArnLike": { "aws:SourceArn": "arn:aws:elasticloadbalancing:*:*:loadbalancer/*" } } -
如果您有
Deny
陳述式來防止存取服務主體,但明確允許的服務主體除外,請務必將logdelivery.elasticloadbalancing.amazonaws.com
新增至允許的服務主體清單。例如,如果您使用aws:PrincipalServiceNamesList
條件,請新增logdelivery.elasticloadbalancing.amazonaws.com
,如下所示:{ "Effect": "Deny", "Principal": "*", "Condition": { "StringNotEqualsIfExists": { "aws:PrincipalServiceNamesList": [ "logdelivery.elasticloadbalancing.amazonaws.com", "
service
.amazonaws.com" ] } } }如果您使用
NotPrincipal
元素,請新增logdelivery.elasticloadbalancing.amazonaws.com
,如下所示。請注意,我們建議您使用aws:PrincipalServiceName
或aws:PrincipalServiceNamesList
條件金鑰來明確允許服務主體,而不是使用NotPrincipal
元素。如需詳細資訊,請參閱 NotPrincipal。{ "Effect": "Deny", "NotPrincipal": { "Service": [ "logdelivery.elasticloadbalancing.amazonaws.com", "
service
.amazonaws.com" ] } },
使用 Amazon S3 主控台,將存取日誌的儲存貯體政策連接到儲存貯體
開啟位於 https://console.aws.amazon.com/s3/
的 Amazon S3 主控台。 -
選取儲存貯體的名稱,開啟其詳細資訊頁面。
-
選擇 Permissions (許可),然後選擇 Bucket policy (儲存貯體政策)、Edit (編輯)。
-
更新儲存貯體政策,授予所需許可。
-
選擇儲存變更。
步驟 3:設定存取日誌
使用下列程序來設定存取日誌,以擷取請求資訊並將日誌檔案交付至 S3 儲存貯體。
要求
儲存貯體必須符合步驟 1 中所述的要求,且您必須按照步驟 2 所述連接儲存貯體政策。如果您包含字首,則不得包含字串 "AWSLogs"。
使用主控台為您的負載平衡器啟用存取日誌
前往 https://console.aws.amazon.com/ec2/
開啟 Amazon EC2 主控台。 -
在導覽窗格中,選擇 Load Balancers (負載平衡器)。
-
選取您負載平衡器的名稱來開啟其詳細資訊頁面。
-
在屬性索引標籤中,選擇編輯。
-
對於監控,請開啟存取日誌。
-
針對 S3 URI,請輸入日誌檔案的 S3 URI。指定的 URI 取決於您是否使用字首。
-
字首為 s3://
amzn-s3-demo-logging-bucket
/logging-prefix
的 URI -
沒有字首的 URI:s3://
amzn-s3-demo-logging-bucket
-
-
選擇儲存變更。
使用 啟用存取日誌 AWS CLI
使用 modify-load-balancer-attributes 命令。
管理存取日誌的 S3 儲存貯體
在刪除您為存取日誌設定的儲存貯體之前,請務必停用存取日誌。否則,如果新的儲存貯體有相同名稱,且所需的儲存貯體政策是在您未擁有的 AWS 帳戶 中建立,則 Elastic Load Balancing 可能會將負載平衡器的存取日誌寫入這個新的儲存貯體。
步驟 4:確認儲存貯體許可
為負載平衡器啟用存取日誌之後,Load Balancing 會驗證 S3 儲存貯體,並建立測試檔案,以確保儲存貯體政策指定所需的許可。您可以使用 Amazon S3 主控台來確認是否已建立測試檔案。測試檔案不是實際的存取日誌檔案;它不包含範例記錄。
驗證是否已使用 Amazon S3 主控台在您的儲存貯體中建立測試檔案
開啟位於 https://console.aws.amazon.com/s3/
的 Amazon S3 主控台。 -
選取您為存取日誌指定的儲存貯體名稱。
-
導覽到測試檔案,
ELBAccessLogTestFile
。位置取決於您是否使用字首。-
字首為
amzn-s3-demo-logging-bucket
/logging-prefix
/AWSLogs/123456789012
/ELBAccessLogTestFile 的位置 -
沒有字首的位置:
amzn-s3-demo-logging-bucket
/AWSLogs/123456789012
/ELBAccessLogTestFile
-
故障診斷
如果您收到存取遭拒錯誤,則以下是可能的原因:
-
儲存貯體政策不會授權 Elastic Load Balancing 將存取日誌寫入儲存貯體。確認您正在使用適合該區域的正確儲存貯體政策。確認資源 ARN 使用您在啟用存取日誌時指定的相同儲存貯體名稱。如果啟用存取日誌時未指定字首,則請確認資源 ARN 不包含字首。
-
儲存貯體使用不支援的伺服器端加密選項。儲存貯體必須使用 Amazon S3 受管金鑰 (SSE-S3)。