AWS Transfer Family サーバーで読み取り、書き込み、一覧表示、削除操作を実行すると、Access Denied エラーまたは Permission Denied エラーが発生します。
解決策
Transfer Familyの設定をトラブルシューティングするには、関連するAWSサービスのアクセス許可を変更します。
Amazon S3 のアクセス許可
Transfer Family サーバーの AWS Identity and Access Management (IAM) ロールとポリシーが、AWS リソースへのアクセスを許可していることを確認します。Amazon Simple Storage Service (Amazon S3) バケットへの読み取り/書き込みアクセスを許可するには、次の IAM ポリシーの例を使用します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowListingOfUserFolder",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket"
]
},
{
"Sid": "HomeDirObjectAccess",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject",
"s3:DeleteObjectVersion",
"s3:GetObjectVersion",
"s3:GetObjectACL",
"s3:PutObjectACL"
],
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
}
]
}
ロールの信頼ポリシーが transfer.amazonaws.com へのアクセスを許可しており、次のようになっていることを確認します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "transfer.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
詳細については、「読み取り/書き込みアクセスポリシーの例」を参照してください。
AWS KMS 暗号化のアクセス許可
Transfer Family で暗号化を許可するには、ユーザーにアタッチされた IAM ロールポリシーにより、必要な AWS Key Management Service (AWS KMS) アクセス許可を付与する必要があります。
AWS KMS 暗号化が有効な Amazon S3 バケットで Transfer Family を使用するアクセス許可を付与するには、次の例を使用します。
{
"Sid": "Stmt1544140969635",
"Action": [
"kms:Decrypt",
"kms:Encrypt",
"kms:GenerateDataKey",
"kms:GetPublicKey",
"kms:ListKeyPolicies"
],
"Effect": "Allow",
"Resource": "arn:aws:kms:region:account-id:key/kms-key-id"
}
詳細については、「データ保護と暗号化」を参照してください。
Amazon EFS のアクセス許可
Amazon Elastic File System (Amazon EFS) で Transfer Family を使用するには、IAM ロールのポリシーにより、ファイルシステムへのアクセスを許可する必要があります。
IAM ロール EFS-role-for-transfer に ClientMount 読み取りアクションおよび ClientWrite 書き込みアクションのアクセス許可を付与するには、次の IAM ポリシー例を使用します。
{
"Version": "2012-10-17",
"Id": "efs-policy-wizard-8698b356-4212-4d30-901e-ad2030b57762",
"Statement": [
{
"Sid": "Grant-transfer-role-access",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:role/EFS-role-for-transfer"
},
"Action": [
"elasticfilesystem:ClientWrite",
"elasticfilesystem:ClientMount"
]
}
]
}
詳細については、「AWS Transfer Family を使用してデータを転送する」を参照してください。
クロスアカウントアクセス許可
Transfer Family を使用して、別の AWS アカウントでファイルシステムにアクセスするには、そのアカウントにファイルシステムへのアクセス許可を付与する必要があります。
詳細については、「他の AWS アカウント内の Amazon S3 バケットを使用するために AWS Transfer Family を設定する方法を教えてください」を参照してください。