提供的令牌格式错误或无效

WO *_*ers 4 php amazon-s3 amazon-web-services amazon-iam aws-sdk

显示了 latestAll S3 存储桶文件,但是当我上传文件时会生成错误。

我有 ARN 和实例配置文件。

use Aws\Credentials\CredentialProvider;
use Aws\Credentials\InstanceProfileProvider;
use Aws\Credentials\AssumeRoleCredentialProvider;
use Aws\S3\S3Client;
use Aws\Sts\StsClient;

$profile = new InstanceProfileProvider();
$ARN = ""; // MY ARN
$sessionName = "s3-access-example";

$assumeRoleCredentials = new AssumeRoleCredentialProvider([
    'client' => new StsClient([
        'region' => "ap-east-1",
        'version' => "latest",
        'credentials' => $profile
    ]),
    'assume_role_params' => [
        'RoleArn' => $ARN,
        'RoleSessionName' => $sessionName,
    ],
]);

$provider = CredentialProvider::memoize($assumeRoleCredentials);

$this->s3hd = S3Client::factory([
    'credentials' => $provider,
    'version' => "latest",
    'region' => "ap-east-1"
]);

public function upload($name, $file, $type, $Bucket = false)
{
    if (! $Bucket) {
        $Bucket = $this->bucket;
    }
    $result = $this->s3hd->putObject([
        'Bucket' => $Bucket,
        'Key' => $name,
        'SourceFile' => $file,
        'ContentType' => $type,
        'ACL' => 'public-read'
    ]);
    $this->s3hd->waitUntil('ObjectExists', [
        'Bucket' => $Bucket,
        'Key' => $name
    ]);
    return $result;
}
Run Code Online (Sandbox Code Playgroud)

消息:在 上执行“PutObject”时出错error file url here;AWS HTTP 错误:客户端错误:PUTerror file url here导致 400 错误请求响应:InvalidTokenThe 提供的令牌格式错误或其他(截断...) InvalidToken(客户端):提供的令牌格式错误或无效。- InvalidToken 提供的令牌格式错误或无效。

San*_*mar 10

就我而言。我正在尝试通过 CLI。

  1. 我通过运行配置了 AWS cli
aws configure
Run Code Online (Sandbox Code Playgroud)
  1. 在里面~/.aws/credentials,寻找session_token。如果你有session_token. 然后更新它。否则删除session_token并重试。

瞧,它奏效了!


bil*_*man 0

您收到此错误是因为默认情况下未启用香港 (ap-east-1)。如果您拥有正确的权限,则需要在 AWS 控制台中启用它,然后重试。

请参阅AWS 文档以获取有关如何执行此操作的说明。