ファイルゲートウェイの CloudWatch ヘルスログから S3AccessDenied エラーをトラブルシューティングする方法を教えてください。
AWS Storage Gateway 上のネットワークファイルシステム (NFS) またはサーバーメッセージブロック (SMB) ファイル共有にアクセスしたいと考えています。しかし、Amazon CloudWatch からのファイルゲートウェイのヘルスログに S3AccessDenied エラーが表示されています。
解決策
S3AccessDenied エラーを解決するには、ファイル共有に関連付けられているアクセス許可ポリシーを確認する必要があります。次に、不足している必要なアクセス許可を追加する必要があります。Access Denied エラーが表示されたときをもとに、確認する必要のあるアクセス許可を特定します。
- ファイル共有の作成時、ファイル共有の作成が作成中または使用不能状態のままになる
- ファイル共有へのファイルの書き込み
- ファイル共有からのファイルの読み取り
ファイル共有の作成時、ファイル共有の作成が作成中または使用不能状態のままになる
ファイル共有の作成時、アクセス拒否エラーが表示され、作成中または使用不能状態のままになることがあります。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 Identity and Access Management (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 バケットおよびオブジェクトにアクセスすることを許可されていることを確認します。
ファイル共有へのファイルの書き込み
ファイル共有にファイルを書き込むときに Access Denied エラーが発生した場合、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 (AWS KMS) で暗号化されている場合は、暗号化キーのポリシーを確認します。キーポリシーは、ファイル共有に関連付けられている IAM ロールに次のアクセス許可を付与する必要があります。
- kms:Decrypt
- kms:Encrypt
- kms:ReEncryptFrom
- kms:ReEncryptTo
- kms:GenerateDataKey
- kms:DescribeKey
ファイル共有の IAM ロールと AWS KMS キーを確認します。これらが別の AWS アカウントに属している場合、これらのアクセス権限はキーポリシーと IAM ロールのポリシーの両方で設定する必要があります。
ファイル共有からのファイルの読み取り
ファイル共有からファイルを読み取るときに Access Denied エラーが表示される場合、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:ReEncryptFrom
- kms:ReEncryptTo
- 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" }] }
関連情報
関連するコンテンツ
- 質問済み 7年前lg...
- 質問済み 1年前lg...
- 質問済み 1年前lg...
- AWS公式更新しました 4ヶ月前
- AWS公式更新しました 3ヶ月前