如何對檔案閘道的 CloudWatch 健康日誌中的 S3AccessDenied 錯誤進行疑難排解?
我嘗試在 AWS Storage Gateway 上存取網路檔案系統 (NFS) 或伺服器訊息區塊 (SMB) 檔案共用。但是,來自 Amazon CloudWatch 的檔案閘道健康日誌顯示 S3AccessDenied 錯誤。如何對此問題進行疑難排解?
解決方法
若要解決 S3AccessDenied 錯誤,您必須檢閱與檔案共用相關聯的權限原則。然後,您必須新增任何遺失的必要權限。根據收到「拒絕存取」錯誤的時間識別您必須檢閱的權限:
- 建立檔案共用會停留在建立或無法使用狀態
- 將檔案寫入檔案共用
- 從檔案共用讀取檔案
建立檔案共用會停留在建立或無法使用狀態
如果您在建立檔案共用時收到「拒絕存取」錯誤,且檔案共用停留在建立或無法使用狀態,則 CloudWatch 日誌類似下列內容:
{ "severity": "ERROR", "bucket": "AWSDOC-EXAMPLE-BUCKET", "prefix": "", "roleArn": "arn:aws:iam::123456789:role/service-role/StorageGatewayBucketAccessRolec6914add-b232-40dc-abef-4a9eeaaed8", "source": "share-ABCD1234", "type": "S3AccessDenied", "operation": "s3:ListObjects", "gateway": "sgw-ABCD1234", "timestamp": "1597486809991" }
檢閱下列權限設定:
1. 檢查與檔案共用相關聯的 AWS 身分和存取管理 (IAM) 角色,以確認其具有關聯的 Amazon Simple Storage Service (Amazon S3) 儲存貯體的下列權限:
- s3:GetBucketLocation
- s3:ListBucket
2. 檢閱關聯的儲存貯體的儲存貯體政策,以確認沒有明確的拒絕語句 ("Effect": "Deny") 阻止以下權限所需的存取:
- s3:GetBucketLocation
- s3:ListBucket
3. 如果檔案閘道所在的 Amazon Virtual Private Cloud (Amazon VPC) 使用適用於 Amazon S3 的 VPC 端點,則檢閱 VPC 端點政策。確認政策允許您的檔案閘道存取 S3 儲存貯體和物件。
將檔案寫入檔案共用
如果將檔案寫入檔案共用時收到「拒絕存取」錯誤,CloudWatch 日誌類似下列內容:
{ "severity": "ERROR", "bucket": "AWSDOC-EXAMPLE-BUCKET", "prefix": "/test1", "roleArn": "arn:aws:iam::123456789:role/service-role/StorageGatewayBucketAccessRole0617b6ee-4809-48bc-b646-8dda9e9c32", "source": "share-ABCD1234", "type": "S3AccessDenied", "operation": "S3Upload", "gateway": "sgw-ABCD1234", "timestamp": "1597493322178" }
檢閱下列權限設定:
1. 檢查與檔案共用關聯的 IAM 角色,以確認其具有關聯的 Amazon S3 儲存貯體的下列權限:
- s3:PutObject
- s3:PutObjectAcl
2. 檢閱關聯的儲存貯體的儲存貯體政策,以確認沒有明確的拒絕語句 ("Effect": "Deny") 阻止您需要獲得以下權限的存取:
- s3:PutObject
- s3:PutObjectAcl
3. 如果檔案閘道所在的 Amazon VPC 使用適用於 Amazon S3 的 VPC 端點,則檢閱 VPC 端點政策。確認政策允許您的檔案閘道存取 S3 儲存貯體和物件。
4. 如果關聯的 S3 儲存貯體已使用 AWS Key Management Service (KMS) 加密,則檢閱加密金鑰的政策。金鑰政策必須將下列權限授予與檔案共用關聯的 IAM 角色:
- kms:Decrypt
- kms:Encrypt
- kms:ReEncrypt
- kms:GenerateDataKey
- kms:DescribeKey
如果檔案共用的 IAM 角色和 AWS KMS 金鑰屬於不同的 AWS 帳戶,則必須在金鑰政策和 IAM 角色的政策中同時設定這些權限。
從檔案共用讀取檔案
如果從檔案共用讀取檔案時收到「拒絕存取」錯誤,CloudWatch 日誌類似下列內容:
{ "severity": "ERROR", "bucket": "AWSDOC-EXAMPLE-BUCKET", "prefix": "/test1", "roleArn": "arn:aws:iam::123456789:role/service-role/StorageGatewayBucketAccessRole0617b6ee-4809-48bc-b646-8dda9e9c32", "source": "share-ABCD1234", "type": "S3AccessDenied", "operation": "s3:HeadObject", "gateway": "sgw-ABCD12347", "timestamp": "1597488260202" }
檢閱下列權限設定:
1. 檢查與檔案共用關聯的 IAM 角色,以確認其具有關聯的 Amazon S3 儲存貯體的下列權限:
- s3:GetObject
- s3:GetObjectAcl
2. 檢閱關聯的儲存貯體的儲存貯體政策,以確認沒有明確的拒絕語句 ("Effect": "Deny") 阻止您需要獲得以下權限的存取:
- s3:GetObject
- s3:GetObjectAcl
3. 如果檔案閘道所在的 Amazon VPC 使用適用於 Amazon S3 的 VPC 端點,則檢閱 VPC 端點政策。確認政策允許您的檔案閘道存取 S3 儲存貯體和物件。
4. 如果關聯的 S3 儲存貯體已使用 AWS KMS 加密,則檢閱加密金鑰的政策。金鑰政策必須將下列權限授予與檔案共用關聯的 IAM 角色:
- kms:Decrypt
- kms:Encrypt
- kms:ReEncrypt
- kms:GenerateDataKey
- kms:DescribeKey
如果檔案共用的 IAM 角色和 AWS KMS 金鑰屬於不同的 AWS 帳戶,則必須在金鑰政策和 IAM 角色的政策中同時設定這些權限。
**注意:**下列範例 IAM 政策會授予檔案共用列出儲存貯體以及上傳、下載和刪除儲存貯體 (AWSDOC-EXAMPLE-BUCKET) 中的物件所需的權限:
{ "Version": "2012-10-17", "Statement": [{ "Action": [ "s3:GetAccelerateConfiguration", "s3:GetBucketLocation", "s3:GetBucketVersioning", "s3:ListBucket", "s3:ListBucketVersions", "s3:ListBucketMultipartUploads" ], "Resource": "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET", "Effect": "Allow" }, { "Action": [ "s3:AbortMultipartUpload", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectVersion", "s3:ListMultipartUploadParts", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*", "Effect": "Allow" } ] }
相關資訊
相關內容
- 已提問 1 年前lg...
- 已提問 9 個月前lg...
- 已提問 4 個月前lg...
- 已提問 9 個月前lg...
- 已提問 1 年前lg...
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 年前