S3ServiceException 错误 - Amazon Redshift

S3ServiceException 错误

最常见的 s3ServiceException 错误由以下原因导致:凭证字符串的格式有误或凭证字符串不正确,将集群和桶放在不同的 AWS 区域中以及 Amazon S3 权限不足。

本节提供了每种类型的错误的排查信息。

凭证字符串无效

如果凭证字符串的格式不正确,您将收到以下错误消息:

ERROR: Invalid credentials. Must be of the format: credentials 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-key> [;token=<temporary-session-token>]'

请验证凭证字符串不包含任何空格或换行符,并且括在单引号中。

访问密钥 ID 无效

如果您的访问密钥 ID 不存在,您将收到以下错误消息:

[Amazon](500310) Invalid operation: S3ServiceException:The AWS Access Key Id you provided does not exist in our records.

这通常是复制和粘贴错误。请验证是否正确输入了访问密钥 ID。此外,如果您使用的是临时会话密钥,请检查是否已设置 token 的值。

秘密访问密钥无效

如果您的秘密访问密钥不正确,您将收到以下错误消息:

[Amazon](500310) Invalid operation: S3ServiceException:The request signature we calculated does not match the signature you provided. Check your key and signing method.,Status 403,Error SignatureDoesNotMatch

这通常是复制和粘贴错误。请验证是否正确输入了秘密访问密钥,并验证它是否为访问密钥 ID 对应的正确密钥。

桶位于不同的区域

COPY 命令中指定的 Amazon S3 桶必须位于集群所在的 AWS 区域。如果 Amazon S3 桶和集群位于不同的区域中,则会收到类似于以下内容的错误:

ERROR: S3ServiceException:The bucket you are attempting to access must be addressed using the specified endpoint.

您可以通过以下方式在特定区域中创建 Amazon S3 桶:在使用 Amazon S3 管理控制台创建桶时选择该区域,或者在使用 Amazon S3 API 或 CLI 创建桶时指定端点。有关更多信息,请参阅 将文件上传到 Amazon S3 以与 COPY 结合使用

有关 Amazon S3 区域的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的访问桶

或者,您也可以在 COPY 命令中使用 REGION 选项以指定区域。

访问被拒绝

如果用户没有足够的权限,您将收到以下错误消息:

ERROR: S3ServiceException:Access Denied,Status 403,Error AccessDenied

一个可能的原因是,凭证标识的用户没有对 Amazon S3 桶的 LIST 和 GET 访问权限。有关其他原因,请参阅《Amazon Simple Storage Service 用户指南》中的排查 Amazon S3 中的拒绝访问(403 禁止)错误

有关管理用户对桶的访问权限的信息,请参阅《Amazon Simple Storage Service 用户指南》中的 Amazon S3 中的身份和访问管理